diff --git a/site/.astro/collections/callouts.schema.json b/site/.astro/collections/callouts.schema.json deleted file mode 100644 index ce6a01c65e..0000000000 --- a/site/.astro/collections/callouts.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$ref": "#/definitions/callouts", - "definitions": { - "callouts": { - "type": "object", - "properties": { - "$schema": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "$schema": "http://json-schema.org/draft-07/schema#" -} \ No newline at end of file diff --git a/site/.astro/collections/docs.schema.json b/site/.astro/collections/docs.schema.json deleted file mode 100644 index 3b34782c07..0000000000 --- a/site/.astro/collections/docs.schema.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "$ref": "#/definitions/docs", - "definitions": { - "docs": { - "type": "object", - "properties": { - "added": { - "type": "object", - "properties": { - "show_badge": { - "type": "boolean" - }, - "version": { - "type": "string" - } - }, - "required": [ - "version" - ], - "additionalProperties": false - }, - "aliases": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "description": { - "type": "string" - }, - "direction": { - "type": "string", - "const": "rtl" - }, - "extra_js": { - "type": "array", - "items": { - "type": "object", - "properties": { - "async": { - "type": "boolean" - }, - "src": { - "type": "string" - } - }, - "required": [ - "src" - ], - "additionalProperties": false - } - }, - "sections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "title": { - "type": "string" - } - }, - "required": [ - "description", - "title" - ], - "additionalProperties": false - } - }, - "thumbnail": { - "type": "string" - }, - "title": { - "type": "string" - }, - "toc": { - "type": "boolean" - }, - "$schema": { - "type": "string" - } - }, - "required": [ - "description", - "title" - ], - "additionalProperties": false - } - }, - "$schema": "http://json-schema.org/draft-07/schema#" -} \ No newline at end of file diff --git a/site/.astro/content-assets.mjs b/site/.astro/content-assets.mjs deleted file mode 100644 index 2b8b8234b9..0000000000 --- a/site/.astro/content-assets.mjs +++ /dev/null @@ -1 +0,0 @@ -export default new Map(); \ No newline at end of file diff --git a/site/.astro/content-modules.mjs b/site/.astro/content-modules.mjs deleted file mode 100644 index 1af504bac1..0000000000 --- a/site/.astro/content-modules.mjs +++ /dev/null @@ -1,111 +0,0 @@ - -export default new Map([ -["src/content/docs/about/brand.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fabout%2Fbrand.mdx&astroContentModuleFlag=true")], -["src/content/docs/about/license.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fabout%2Flicense.mdx&astroContentModuleFlag=true")], -["src/content/docs/docsref.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fdocsref.mdx&astroContentModuleFlag=true")], -["src/content/docs/about/overview.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fabout%2Foverview.mdx&astroContentModuleFlag=true")], -["src/content/docs/about/team.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fabout%2Fteam.mdx&astroContentModuleFlag=true")], -["src/content/docs/migration.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fmigration.mdx&astroContentModuleFlag=true")], -["src/content/docs/about/translations.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fabout%2Ftranslations.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/badge.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fbadge.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/alerts.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Falerts.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/accordion.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Faccordion.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/button-group.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fbutton-group.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/breadcrumb.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fbreadcrumb.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/buttons.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fbuttons.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/collapse.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fcollapse.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/card.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fcard.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/carousel.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fcarousel.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/dropdowns.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fdropdowns.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/close-button.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fclose-button.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/modal.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fmodal.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/list-group.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Flist-group.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/offcanvas.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Foffcanvas.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/navs-tabs.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fnavs-tabs.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/navbar.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fnavbar.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/pagination.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fpagination.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/placeholders.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fplaceholders.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/progress.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fprogress.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/popovers.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fpopovers.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/scrollspy.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fscrollspy.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/spinners.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Fspinners.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/toasts.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Ftoasts.mdx&astroContentModuleFlag=true")], -["src/content/docs/content/figures.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcontent%2Ffigures.mdx&astroContentModuleFlag=true")], -["src/content/docs/components/tooltips.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcomponents%2Ftooltips.mdx&astroContentModuleFlag=true")], -["src/content/docs/content/images.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcontent%2Fimages.mdx&astroContentModuleFlag=true")], -["src/content/docs/content/reboot.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcontent%2Freboot.mdx&astroContentModuleFlag=true")], -["src/content/docs/content/tables.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcontent%2Ftables.mdx&astroContentModuleFlag=true")], -["src/content/docs/customize/color-modes.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcustomize%2Fcolor-modes.mdx&astroContentModuleFlag=true")], -["src/content/docs/customize/color.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcustomize%2Fcolor.mdx&astroContentModuleFlag=true")], -["src/content/docs/content/typography.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcontent%2Ftypography.mdx&astroContentModuleFlag=true")], -["src/content/docs/extend/approach.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fextend%2Fapproach.mdx&astroContentModuleFlag=true")], -["src/content/docs/customize/components.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcustomize%2Fcomponents.mdx&astroContentModuleFlag=true")], -["src/content/docs/extend/icons.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fextend%2Ficons.mdx&astroContentModuleFlag=true")], -["src/content/docs/customize/css-variables.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcustomize%2Fcss-variables.mdx&astroContentModuleFlag=true")], -["src/content/docs/customize/optimize.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcustomize%2Foptimize.mdx&astroContentModuleFlag=true")], -["src/content/docs/customize/options.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcustomize%2Foptions.mdx&astroContentModuleFlag=true")], -["src/content/docs/customize/overview.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcustomize%2Foverview.mdx&astroContentModuleFlag=true")], -["src/content/docs/customize/sass.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fcustomize%2Fsass.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/checks-radios.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Fchecks-radios.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/floating-labels.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Ffloating-labels.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/form-control.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Fform-control.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/input-group.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Finput-group.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/layout.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Flayout.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/overview.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Foverview.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/range.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Frange.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/select.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Fselect.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/best-practices.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fbest-practices.mdx&astroContentModuleFlag=true")], -["src/content/docs/forms/validation.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fforms%2Fvalidation.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/accessibility.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Faccessibility.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/browsers-devices.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fbrowsers-devices.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/contents.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fcontents.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/contribute.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fcontribute.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/download.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fdownload.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/introduction.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fintroduction.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/javascript.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fjavascript.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/rfs.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Frfs.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/parcel.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fparcel.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/webpack.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fwebpack.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/vite.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Fvite.mdx&astroContentModuleFlag=true")], -["src/content/docs/getting-started/rtl.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fgetting-started%2Frtl.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/clearfix.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fclearfix.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/color-background.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fcolor-background.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/colored-links.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fcolored-links.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/focus-ring.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Ffocus-ring.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/icon-link.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Ficon-link.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/stacks.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fstacks.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/position.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fposition.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/ratio.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fratio.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/text-truncation.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Ftext-truncation.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/stretched-link.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fstretched-link.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/vertical-rule.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fvertical-rule.mdx&astroContentModuleFlag=true")], -["src/content/docs/helpers/visually-hidden.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Fhelpers%2Fvisually-hidden.mdx&astroContentModuleFlag=true")], -["src/content/docs/layout/breakpoints.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flayout%2Fbreakpoints.mdx&astroContentModuleFlag=true")], -["src/content/docs/layout/columns.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flayout%2Fcolumns.mdx&astroContentModuleFlag=true")], -["src/content/docs/layout/containers.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flayout%2Fcontainers.mdx&astroContentModuleFlag=true")], -["src/content/docs/layout/gutters.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flayout%2Fgutters.mdx&astroContentModuleFlag=true")], -["src/content/docs/layout/utilities.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flayout%2Futilities.mdx&astroContentModuleFlag=true")], -["src/content/docs/layout/z-index.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flayout%2Fz-index.mdx&astroContentModuleFlag=true")], -["src/content/docs/layout/grid.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flayout%2Fgrid.mdx&astroContentModuleFlag=true")], -["src/content/docs/layout/css-grid.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Flayout%2Fcss-grid.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/background.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fbackground.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/borders.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fborders.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/api.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fapi.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/colors.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fcolors.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/display.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fdisplay.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/flex.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fflex.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/float.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Ffloat.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/interactions.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Finteractions.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/link.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Flink.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/object-fit.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fobject-fit.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/opacity.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fopacity.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/overflow.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Foverflow.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/position.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fposition.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/sizing.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fsizing.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/shadows.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fshadows.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/spacing.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fspacing.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/visibility.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fvisibility.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/vertical-align.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fvertical-align.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/z-index.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Fz-index.mdx&astroContentModuleFlag=true")], -["src/content/docs/utilities/text.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Fdocs%2Futilities%2Ftext.mdx&astroContentModuleFlag=true")]]); - \ No newline at end of file diff --git a/site/.astro/content.d.ts b/site/.astro/content.d.ts deleted file mode 100644 index d71578a02b..0000000000 --- a/site/.astro/content.d.ts +++ /dev/null @@ -1,187 +0,0 @@ -declare module 'astro:content' { - interface Render { - '.mdx': Promise<{ - Content: import('astro').MarkdownInstance<{}>['Content']; - headings: import('astro').MarkdownHeading[]; - remarkPluginFrontmatter: Record; - components: import('astro').MDXInstance<{}>['components']; - }>; - } -} - -declare module 'astro:content' { - export interface RenderResult { - Content: import('astro/runtime/server/index.js').AstroComponentFactory; - headings: import('astro').MarkdownHeading[]; - remarkPluginFrontmatter: Record; - } - interface Render { - '.md': Promise; - } - - export interface RenderedContent { - html: string; - metadata?: { - imagePaths: Array; - [key: string]: unknown; - }; - } -} - -declare module 'astro:content' { - type Flatten = T extends { [K: string]: infer U } ? U : never; - - export type CollectionKey = keyof AnyEntryMap; - export type CollectionEntry = Flatten; - - export type ContentCollectionKey = keyof ContentEntryMap; - export type DataCollectionKey = keyof DataEntryMap; - - type AllValuesOf = T extends any ? T[keyof T] : never; - type ValidContentEntrySlug = AllValuesOf< - ContentEntryMap[C] - >['slug']; - - export type ReferenceDataEntry< - C extends CollectionKey, - E extends keyof DataEntryMap[C] = string, - > = { - collection: C; - id: E; - }; - export type ReferenceContentEntry< - C extends keyof ContentEntryMap, - E extends ValidContentEntrySlug | (string & {}) = string, - > = { - collection: C; - slug: E; - }; - - /** @deprecated Use `getEntry` instead. */ - export function getEntryBySlug< - C extends keyof ContentEntryMap, - E extends ValidContentEntrySlug | (string & {}), - >( - collection: C, - // Note that this has to accept a regular string too, for SSR - entrySlug: E, - ): E extends ValidContentEntrySlug - ? Promise> - : Promise | undefined>; - - /** @deprecated Use `getEntry` instead. */ - export function getDataEntryById( - collection: C, - entryId: E, - ): Promise>; - - export function getCollection>( - collection: C, - filter?: (entry: CollectionEntry) => entry is E, - ): Promise; - export function getCollection( - collection: C, - filter?: (entry: CollectionEntry) => unknown, - ): Promise[]>; - - export function getEntry< - C extends keyof ContentEntryMap, - E extends ValidContentEntrySlug | (string & {}), - >( - entry: ReferenceContentEntry, - ): E extends ValidContentEntrySlug - ? Promise> - : Promise | undefined>; - export function getEntry< - C extends keyof DataEntryMap, - E extends keyof DataEntryMap[C] | (string & {}), - >( - entry: ReferenceDataEntry, - ): E extends keyof DataEntryMap[C] - ? Promise - : Promise | undefined>; - export function getEntry< - C extends keyof ContentEntryMap, - E extends ValidContentEntrySlug | (string & {}), - >( - collection: C, - slug: E, - ): E extends ValidContentEntrySlug - ? Promise> - : Promise | undefined>; - export function getEntry< - C extends keyof DataEntryMap, - E extends keyof DataEntryMap[C] | (string & {}), - >( - collection: C, - id: E, - ): E extends keyof DataEntryMap[C] - ? string extends keyof DataEntryMap[C] - ? Promise | undefined - : Promise - : Promise | undefined>; - - /** Resolve an array of entry references from the same collection */ - export function getEntries( - entries: ReferenceContentEntry>[], - ): Promise[]>; - export function getEntries( - entries: ReferenceDataEntry[], - ): Promise[]>; - - export function render( - entry: AnyEntryMap[C][string], - ): Promise; - - export function reference( - collection: C, - ): import('astro/zod').ZodEffects< - import('astro/zod').ZodString, - C extends keyof ContentEntryMap - ? ReferenceContentEntry> - : ReferenceDataEntry - >; - // Allow generic `string` to avoid excessive type errors in the config - // if `dev` is not running to update as you edit. - // Invalid collection names will be caught at build time. - export function reference( - collection: C, - ): import('astro/zod').ZodEffects; - - type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; - type InferEntrySchema = import('astro/zod').infer< - ReturnTypeOrOriginal['schema']> - >; - - type ContentEntryMap = { - - }; - - type DataEntryMap = { - "callouts": Record; - rendered?: RenderedContent; - filePath?: string; -}>; -"docs": Record; - rendered?: RenderedContent; - filePath?: string; -}>; - - }; - - type AnyEntryMap = ContentEntryMap & DataEntryMap; - - export type ContentConfig = typeof import("../src/content/config.js"); -} diff --git a/site/.astro/data-store.json b/site/.astro/data-store.json deleted file mode 100644 index 8ec19764bd..0000000000 --- a/site/.astro/data-store.json +++ /dev/null @@ -1 +0,0 @@ -[["Map",1,2,9,10,131,132],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.4.2","content-config-digest","55f4119cedb28735","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"site\":\"http://localhost:4321\",\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[]},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":\"prism\",\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[null,null,null],\"rehypePlugins\":[null,[null,{\"behavior\":\"append\",\"content\":[{\"type\":\"text\",\"value\":\" \"}],\"properties\":{\"class\":\"anchor-link\"}}],null],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":false},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false,\"serializeConfig\":false},\"legacy\":{\"collections\":false}}","callouts",["Map",11,12,26,27,41,42,56,57,71,72,86,87,101,102,116,117],"danger-async-methods",{"id":11,"data":13,"body":14,"filePath":15,"digest":16,"rendered":17,"legacyId":25},{},"**All API methods are asynchronous and start a transition.** They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. [Learn more in our JavaScript docs.](/docs/[[config:docs_version]]/getting-started/javascript/#asynchronous-functions-and-transitions)","src/content/callouts/danger-async-methods.md","9c0d127fac13cbab",{"html":18,"metadata":19},"\u003Cp>\u003Cstrong>All API methods are asynchronous and start a transition.\u003C/strong> They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. \u003Ca href=\"/docs/5.3/getting-started/javascript/#asynchronous-functions-and-transitions\">Learn more in our JavaScript docs.\u003C/a>\u003C/p>",{"headings":20,"localImagePaths":21,"remoteImagePaths":22,"frontmatter":23,"imagePaths":24},[],[],[],{},[],"danger-async-methods.md","info-mediaqueries-breakpoints",{"id":26,"data":28,"body":29,"filePath":30,"digest":31,"rendered":32,"legacyId":40},{},"**Why subtract .02px?** Browsers don't currently support [range context queries](https://www.w3.org/TR/mediaqueries-4/#range-context), so we work around the limitations of [`min-` and `max-` prefixes](https://www.w3.org/TR/mediaqueries-4/#mq-min-max) and viewports with fractional widths (which can occur under certain conditions on high-dpi devices, for instance) by using values with higher precision.","src/content/callouts/info-mediaqueries-breakpoints.md","cf3c1ee7bdc70ef6",{"html":33,"metadata":34},"\u003Cp>\u003Cstrong>Why subtract .02px?\u003C/strong> Browsers don't currently support \u003Ca href=\"https://www.w3.org/TR/mediaqueries-4/#range-context\">range context queries\u003C/a>, so we work around the limitations of \u003Ca href=\"https://www.w3.org/TR/mediaqueries-4/#mq-min-max\">\u003Ccode>min-\u003C/code> and \u003Ccode>max-\u003C/code> prefixes\u003C/a> and viewports with fractional widths (which can occur under certain conditions on high-dpi devices, for instance) by using values with higher precision.\u003C/p>",{"headings":35,"localImagePaths":36,"remoteImagePaths":37,"frontmatter":38,"imagePaths":39},[],[],[],{},[],"info-mediaqueries-breakpoints.md","info-npm-starter",{"id":41,"data":43,"body":44,"filePath":45,"digest":46,"rendered":47,"legacyId":55},{},"**Get started with Bootstrap via npm with our starter project!** Head to the [Sass & JS example](https://github.com/twbs/examples/tree/main/sass-js) template repository to see how to build and customize Bootstrap in your own npm project. Includes Sass compiler, Autoprefixer, Stylelint, PurgeCSS, and Bootstrap Icons.","src/content/callouts/info-npm-starter.md","2f6e891b396b9472",{"html":48,"metadata":49},"\u003Cp>\u003Cstrong>Get started with Bootstrap via npm with our starter project!\u003C/strong> Head to the \u003Ca href=\"https://github.com/twbs/examples/tree/main/sass-js\">Sass & JS example\u003C/a> template repository to see how to build and customize Bootstrap in your own npm project. Includes Sass compiler, Autoprefixer, Stylelint, PurgeCSS, and Bootstrap Icons.\u003C/p>",{"headings":50,"localImagePaths":51,"remoteImagePaths":52,"frontmatter":53,"imagePaths":54},[],[],[],{},[],"info-npm-starter.md","info-sanitizer",{"id":56,"data":58,"body":59,"filePath":60,"digest":61,"rendered":62,"legacyId":70},{},"By default, this component uses the built-in content sanitizer, which strips out any HTML elements that are not explicitly allowed. See the [sanitizer section in our JavaScript documentation](/docs/[[config:docs_version]]/getting-started/javascript/#sanitizer) for more details.","src/content/callouts/info-sanitizer.md","223886390d6d5205",{"html":63,"metadata":64},"\u003Cp>By default, this component uses the built-in content sanitizer, which strips out any HTML elements that are not explicitly allowed. See the \u003Ca href=\"/docs/5.3/getting-started/javascript/#sanitizer\">sanitizer section in our JavaScript documentation\u003C/a> for more details.\u003C/p>",{"headings":65,"localImagePaths":66,"remoteImagePaths":67,"frontmatter":68,"imagePaths":69},[],[],[],{},[],"info-sanitizer.md","info-prefersreducedmotion",{"id":71,"data":73,"body":74,"filePath":75,"digest":76,"rendered":77,"legacyId":85},{},"The animation effect of this component is dependent on the `prefers-reduced-motion` media query. See the [reduced motion section of our accessibility documentation](/docs/[[config:docs_version]]/getting-started/accessibility/#reduced-motion).","src/content/callouts/info-prefersreducedmotion.md","5d3fba76d4903cd2",{"html":78,"metadata":79},"\u003Cp>The animation effect of this component is dependent on the \u003Ccode>prefers-reduced-motion\u003C/code> media query. See the \u003Ca href=\"/docs/5.3/getting-started/accessibility/#reduced-motion\">reduced motion section of our accessibility documentation\u003C/a>.\u003C/p>",{"headings":80,"localImagePaths":81,"remoteImagePaths":82,"frontmatter":83,"imagePaths":84},[],[],[],{},[],"info-prefersreducedmotion.md","warning-data-bs-title-vs-title",{"id":86,"data":88,"body":89,"filePath":90,"digest":91,"rendered":92,"legacyId":100},{},"Feel free to use either `title` or `data-bs-title` in your HTML. When `title` is used, Popper will replace it automatically with `data-bs-title` when the element is rendered.","src/content/callouts/warning-data-bs-title-vs-title.md","4166d28547478b6d",{"html":93,"metadata":94},"\u003Cp>Feel free to use either \u003Ccode>title\u003C/code> or \u003Ccode>data-bs-title\u003C/code> in your HTML. When \u003Ccode>title\u003C/code> is used, Popper will replace it automatically with \u003Ccode>data-bs-title\u003C/code> when the element is rendered.\u003C/p>",{"headings":95,"localImagePaths":96,"remoteImagePaths":97,"frontmatter":98,"imagePaths":99},[],[],[],{},[],"warning-data-bs-title-vs-title.md","warning-color-assistive-technologies",{"id":101,"data":103,"body":104,"filePath":105,"digest":106,"rendered":107,"legacyId":115},{},"**Accessibility tip:** Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a [_sufficient_ color contrast](/docs/[[config:docs_version]]/getting-started/accessibility/#color-contrast)) or is included through alternative means, such as additional text hidden with the `.visually-hidden` class.","src/content/callouts/warning-color-assistive-technologies.md","8b6512e777588344",{"html":108,"metadata":109},"\u003Cp>\u003Cstrong>Accessibility tip:\u003C/strong> Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a \u003Ca href=\"/docs/5.3/getting-started/accessibility/#color-contrast\">\u003Cem>sufficient\u003C/em> color contrast\u003C/a>) or is included through alternative means, such as additional text hidden with the \u003Ccode>.visually-hidden\u003C/code> class.\u003C/p>",{"headings":110,"localImagePaths":111,"remoteImagePaths":112,"frontmatter":113,"imagePaths":114},[],[],[],{},[],"warning-color-assistive-technologies.md","warning-input-support",{"id":116,"data":118,"body":119,"filePath":120,"digest":121,"rendered":122,"legacyId":130},{},"Some date inputs types are [not fully supported](https://caniuse.com/input-datetime) by the latest versions of Safari and Firefox.","src/content/callouts/warning-input-support.md","2eff92fcab0109d0",{"html":123,"metadata":124},"\u003Cp>Some date inputs types are \u003Ca href=\"https://caniuse.com/input-datetime\">not fully supported\u003C/a> by the latest versions of Safari and Firefox.\u003C/p>",{"headings":125,"localImagePaths":126,"remoteImagePaths":127,"frontmatter":128,"imagePaths":129},[],[],[],{},[],"warning-input-support.md","docs",["Map",133,134,144,145,154,155,163,164,172,173,184,185,193,194,202,203,213,214,222,223,231,232,240,241,250,251,259,260,268,269,279,280,288,289,297,298,306,307,315,316,324,325,350,351,358,359,370,371,379,380,388,389,397,398,406,407,415,416,424,425,433,434,442,443,451,452,460,461,469,470,478,479,487,488,497,498,506,507,515,516,526,527,535,536,544,545,553,554,562,563,571,572,580,581,590,591,599,600,608,609,617,618,626,627,657,658,665,666,673,674,684,685,693,694,702,703,711,712,720,721,731,732,740,741,753,754,762,763,772,773,781,782,790,791,802,803,812,813,822,823,832,833,841,842,851,852,861,862,870,871,879,880,889,890,898,899,907,908,917,918,927,928,937,938,946,947,955,956,965,966,974,975,983,984,992,993,1001,1002,1011,1012,1020,1021,1029,1030,1038,1039,1047,1048,1056,1057,1065,1066,1074,1075,1084,1085,1094,1095,1104,1105,1113,1114,1121,1122,1130,1131,1139,1140,1148,1149,1157,1158,1166,1167,1175,1176],"docsref",{"id":133,"data":135,"body":140,"filePath":141,"digest":142,"legacyId":143,"deferredRender":139},{"aliases":136,"description":137,"title":138,"toc":139},"/docsref/","Examples of Bootstrap's documentation-specific components and styles.","Docs reference",true,"## Buttons\n\n\u003Cbutton class=\"btn btn-bd-primary\">Primary button\u003C/button>\n\u003Cbutton class=\"btn btn-bd-accent\">Accent button\u003C/button>\n\u003Cbutton class=\"btn btn-bd-light\">Light button\u003C/button>\n\n## Callouts\n\n\u003CCallout>\n Default callout\n\u003C/Callout>\n\n\u003CCallout type=\"warning\">\n Warning callout\n\u003C/Callout>\n\n\u003CCallout type=\"danger\">\n Danger callout\n\u003C/Callout>\n\n## Code example\n\n```scss\n.test {\n --color: blue;\n}\n```\n\n\u003Cdiv class=\"bd-example\">\n The \u003Cabbr title=\"HyperText Markup Language\">HTML\u003C/abbr> abbreviation element.\n\u003C/div>\n\n\u003CExample code={`\u003Cdiv class=\"test\">This is a test.\u003C/div>`} />\n\n\u003CScssDocs name=\"variable-gradient\" file=\"scss/_variables.scss\" />\n\n\u003CJsDocs name=\"live-toast\" file=\"site/src/assets/partials/snippets.js\" />","src/content/docs/docsref.mdx","d91e6f101bfa6222","docsref.mdx","migration",{"id":144,"data":146,"body":150,"filePath":151,"digest":152,"legacyId":153,"deferredRender":139},{"aliases":147,"description":148,"title":149,"toc":139},"/migration/","Track and review changes to the Bootstrap source files, documentation, and components to help you migrate from v4 to v5.","Migrating to v5","## v5.3.4\n\n### Dependencies\n\n- Migrated from Hugo to Astro for building our documentation\n\n## v5.3.0\n\nIf you're migrating from our previous alpha releases of v5.3.0, please review their changes in addition to this section.\n\n### Helpers\n\n- [Colored links]([[docsref:/helpers/colored-links]]) once again have `!important` so they work better with our newly added link utilities.\n\n### Utilities\n\n- Added new `.d-inline-grid` [display utility]([[docsref:/utilities/display]]).\n\n## v5.3.0-alpha2\n\nIf you're migrating from our previous alpha release of v5.3.0, please review the changes listed below.\n\n### CSS variables\n\n- Removed several duplicate and unused root CSS variables.\n\n### Color modes\n\n- Dark mode colors are now derived from our theme colors (e.g., `$primary`) in Sass, rather than color specific tints or shades (e.g., `$blue-300`). This allows for a more automated dark mode when customizing the default theme colors.\n\n- Added Sass maps for generating theme colors for dark mode text, subtle background, and subtle border.\n\n- [Snippet examples]([[docsref:/examples/#snippets]]) are now ready for dark mode with updated markup and reduced custom styles.\n\n- Added `color-scheme: dark` to dark mode CSS to change OS level controls like scrollbars\n\n- Form validation `border-color` and text `color` states now respond to dark mode, thanks to new Sass and CSS variables.\n\n- Dropped recently added form control background CSS variables and reassigned the Sass variables to use CSS variables instead. This simplifies the styling across color modes and avoids an issue where form controls in dark mode wouldn't update properly.\n\n- Our `box-shadow`s will once again always stay dark instead of inverting to white when in dark mode.\n\n- Improved HTML and JavaScript for our color mode toggle script. The selector for changing the active SVG has been improved, and the markup made more accessible with ARIA attributes.\n\n- Improved docs code syntax colors and more across light and dark modes.\n\n### Typography\n\n- We no longer set a color for `$headings-color-dark` or `--bs-heading-color` for dark mode. To avoid several problems of headings within components appearing the wrong color, we've set the Sass variable to `null` and added a `null` check like we use on the default light mode.\n\n### Components\n\n- Cards now have a `color` set on them to improve rendering across color modes.\n\n- Added new `.nav-underline` variant for our navigation with a simpler bottom border under the active nav link. [See the docs for an example.]([[docsref:/components/navs-tabs#underline]])\n\n- Navs now have new `:focus-visible` styles that better match our custom button focus styles.\n\n### Helpers\n\n- Added new `.icon-link` helper to quickly place and align Bootstrap Icons alongside a textual link. Icon links support our new link utilities, too.\n\n- Added new focus ring helper for removing the default `outline` and setting a custom `box-shadow` focus ring.\n\n### Utilities\n\n- Renamed Sass and CSS variables `${color}-text` to `${color}-text-emphasis` to match their associated utilities.\n\n- Added new `.link-body-emphasis` helper alongside our [colored links]([[docsref:/helpers/colored-links]]). This creates a colored link using our color mode responsive emphasis color.\n\n- Added new link utilities for link color opacity, underline offset, underline color, and underline opacity. [Explore the new links utilities.]([[docsref:/utilities/link]])\n\n- CSS variable based `border-width` utilities have been reverted to set their property directly (as was done prior to v5.2.0). This avoids inheritance issues across nested elements, including tables.\n\n- Added new `.border-black` utility to match our `.text-black` and `.bg-black` utilities.\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> Deprecated the `.text-muted` utility and `$text-muted` Sass variable. It's been replaced by `.text-body-secondary` and `$body-secondary-color`.\n\n### Docs\n\n- Examples are now displayed with the appropriate light or dark color mode as dictated by the setting in our docs. Each example has an individual color mode picker.\n\n- Improved included JavaScript for live Toast demo.\n\n- Added `twbs/examples` repo contents to the top of the Examples page.\n\n### Tooling\n\n- Added SCSS testing via True to help test our utilities API and other customizations.\n\n- Replaced instances of our bootstrap-npm-starter project with the newer and more complete [twbs/examples repo](https://github.com/twbs/examples).\n\n\u003Chr class=\"mb-4\"/>\n\nFor a complete list of changes, [see the v5.3.0-alpha2 project on GitHub](https://github.com/orgs/twbs/projects/13).\n\n## v5.3.0-alpha1\n\n\u003Chr class=\"mb-4\"/>\n\n### Color modes!\n\nLearn more by reading the new [color modes documentation]([[docsref:/customize/color-modes]]).\n\n- **Global support for light (default) and dark color modes.** Set color mode globally on the `:root` element, on groups of elements and components with a wrapper class, or directly on components, with `data-bs-theme=\"light|dark\"`. Also included is a new `color-mode()` mixin that can output a ruleset with the `data-bs-theme` selector or a media query, depending on your preference.\n\n \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> Color modes replace dark variants for components, so `.btn-close-white`, `.carousel-dark`, `.dropdown-menu-dark`, and `.navbar-dark` are deprecated.\n\n- **New extended color system.** We've added new theme colors (but not in `$theme-colors`) for a more nuanced, system-wide color palette with new secondary, tertiary, and emphasis colors for `color` and `background-color`. These new colors are available as Sass variables, CSS variables, and utilities.\n\n- We've also expanded our theme color Sass variables, CSS variables, and utilities to include text emphasis, subtle background colors, and subtle border colors. These are available as Sass variables, CSS variables, and utilities.\n\n- Adds new `_variables-dark.scss` stylesheet to house dark-mode specific overrides. This stylesheet should be imported immediately after the existing `_variables.scss` file in your import stack.\n\n ```diff\n diff --git a/scss/bootstrap.scss b/scss/bootstrap.scss\n index 8f8296def..449d70487 100644\n --- a/scss/bootstrap.scss\n +++ b/scss/bootstrap.scss\n @@ -6,6 +6,7 @@\n // Configuration\n @import \"functions\";\n @import \"variables\";\n +@import \"variables-dark\";\n @import \"maps\";\n @import \"mixins\";\n @import \"utilities\";\n ```\n\n### CSS variables\n\n- Restores CSS variables for breakpoints, though we don't use them in our media queries as they're not supported. However, these can be useful in JS-specific contexts.\n\n- Per the color modes update, we've added new utilities for new Sass CSS variables `secondary` and `tertiary` text and background colors, plus `{color}-bg-subtle`, `{color}-border-subtle`, and `{color}-text-emphasis` for our theme colors. These new colors are available through Sass and CSS variables (but not our color maps) with the express goal of making it easier to customize across multiple colors modes like light and dark.\n\n- Adds additional variables for alerts, `.btn-close`, and `.offcanvas`.\n\n- The `--bs-heading-color` variable is back with an update and dark mode support. First, we now check for a `null` value on the associated Sass variable, `$headings-color`, before trying to output the CSS variable, so by default it's not present in our compiled CSS. Second, we use the CSS variable with a fallback value, `inherit`, allowing the original behavior to persist, but also allowing for overrides.\n\n- Converts links to use CSS variables for styling `color`, but not `text-decoration`. Colors are now set with `--bs-link-color-rgb` and `--bs-link-opacity` as `rgba()` color, allowing you to customize the translucency with ease. The `a:hover` pseudo-class now overrides `--bs-link-color-rgb` instead of explicitly setting the `color` property.\n\n- `--bs-border-width` is now being used in more components for greater control over default global styling.\n\n- Adds new root CSS variables for our `box-shadow`s, including `--bs-box-shadow`, `--bs-box-shadow-sm`, `--bs-box-shadow-lg`, and `--bs-box-shadow-inset`.\n\n### Components\n\n#### Alert\n\n- Alert variants are now styled via CSS variables.\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `alert-variant()` mixin is now deprecated. We now [use a Sass loop]([[docsref:/components/alerts#sass-loops]]) directly to modify the component's default CSS variables for each variant.\n\n#### List group\n\n- List group item variants are now styled via CSS variables.\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `list-group-item-variant()` mixin is now deprecated. We now [use a Sass loop]([[docsref:/components/list-group#sass-loops]]) directly to modify the component's default CSS variables for each variant.\n\n#### Dropdowns\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `.dropdown-menu-dark` class has been deprecated and replaced with `data-bs-theme=\"dark\"` on the dropdown or any parent element. [See the docs for an example.]([[docsref:/components/dropdowns#dark-dropdowns]])\n\n#### Close button\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `.btn-close-white` class has been deprecated and replaced with `data-bs-theme=\"dark\"` on the close button or any parent element. [See the docs for an example.]([[docsref:/components/close-button#dark-variant]])\n\n#### Navbar\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `.navbar-dark` class has been deprecated and replaced with `data-bs-theme=\"dark\"` on the navbar or any parent element. [See the docs for updated examples.]([[docsref:/components/navbar#color-schemes]])\n\n### Progress bars\n\nThe markup for [progress bars]([[docsref:/components/progress]]) has been updated in v5.3.0. Due to the placement of `role` and various `aria-` attributes on the inner `.progress-bar` element, **some screen readers were not announcing zero value progress bars**. Now, `role=\"progressbar\"` and the relevant `aria-*` attributes are on the outer `.progress` element, leaving the `.progress-bar` purely for the visual presentation of the bar and optional label.\n\nWhile we recommend adopting the new markup for improved compatibility with all screen readers, note that the legacy progress bar structure will continue to work as before.\n\n```html\n\u003C!-- Previous markup -->\n\u003Cdiv class=\"progress\">\n \u003Cdiv class=\"progress-bar\" role=\"progressbar\" aria-label=\"Basic example\" style=\"width: 25%\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\u003C/div>\n\u003C/div>\n\n\u003C!-- New markup -->\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n```\n\nWe've also introduced a new `.progress-stacked` class to more logically wrap [multiple progress bars]([[docsref:/components/progress#multiple-bars]]) into a single stacked progress bar.\n\n```html\n\u003C!-- Previous markup -->\n\u003Cdiv class=\"progress\">\n \u003Cdiv class=\"progress-bar\" role=\"progressbar\" aria-label=\"Segment one\" style=\"width: 15%\" aria-valuenow=\"15\" aria-valuemin=\"0\" aria-valuemax=\"100\">\u003C/div>\n \u003Cdiv class=\"progress-bar bg-success\" role=\"progressbar\" aria-label=\"Segment two\" style=\"width: 30%\" aria-valuenow=\"30\" aria-valuemin=\"0\" aria-valuemax=\"100\">\u003C/div>\n \u003Cdiv class=\"progress-bar bg-info\" role=\"progressbar\" aria-label=\"Segment three\" style=\"width: 20%\" aria-valuenow=\"20\" aria-valuemin=\"0\" aria-valuemax=\"100\">\u003C/div>\n\u003C/div>\n\n\u003C!-- New markup -->\n\u003Cdiv class=\"progress-stacked\">\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment one\" aria-valuenow=\"15\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 15%\">\n \u003Cdiv class=\"progress-bar\">\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment two\" aria-valuenow=\"30\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 30%\">\n \u003Cdiv class=\"progress-bar bg-success\">\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment three\" aria-valuenow=\"20\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 20%\">\n \u003Cdiv class=\"progress-bar bg-info\">\u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Forms\n\n- `.form-control` is now styled with CSS variables to support color modes. This includes the addition of two new root CSS variables for the default and disabled form control backgrounds.\n\n- `.form-check` and `.form-switch` components are now built with CSS variables for setting the `background-image`. The usage here differs from other components in that the various focus, active, etc states for each component aren't set on the base class. Instead, the states override one variable (e.g., `--bs-form-switch-bg`).\n\n- Floating form labels now have a `background-color` to fix support for `\u003Ctextarea>` elements. Additional changes have been made to also support disabled states and more.\n\n- Fixed display of date and time inputs in WebKit based browsers.\n\n### Utilities\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> `.text-muted` will be replaced by `.text-body-secondary` in v6.\n\n With the addition of the expanded theme colors and variables, the `.text-muted` variables and utility have been deprecated with v5.3.0. Its default value has also been reassigned to the new `--bs-secondary-color` CSS variable to better support color modes. It will be removed in v6.0.0.\n\n- Adds new `.overflow-x`, `.overflow-y`, and several `.object-fit-*` utilities. _The object-fit property is used to specify how an `\u003Cimg>` or `\u003Cvideo>` should be resized to fit its container, giving us a responsive alternative to using `background-image` for a resizable fill/fit image._\n\n- Adds new `.fw-medium` utility.\n\n- Added new [`.z-*` utilities]([[docsref:/utilities/z-index]]) for `z-index`.\n\n- [Box shadow utilities]([[docsref:/utilities/shadows]]) (and Sass variables) have been updated for dark mode. They now use `--bs-body-color-rgb` to generate the `rgba()` color values, allowing them to easily adapt to color modes based on the specified foreground color.\n\nFor a complete list of changes, [see the v5.3.0 project on GitHub](https://github.com/twbs/bootstrap/projects/).\n\n## v5.2.0\n\n\u003Chr class=\"mb-4\"/>\n\n### Refreshed design\n\nBootstrap v5.2.0 features a subtle design update for a handful of components and properties across the project, **most notably through refined `border-radius` values on buttons and form controls**. Our documentation also has been updated with a new homepage, simpler docs layout that no longer collapses sections of the sidebar, and more prominent examples of [Bootstrap Icons](https://icons.getbootstrap.com).\n\n### More CSS variables\n\n**We've updated all our components to use CSS variables.** While Sass still underpins everything, each component has been updated to include CSS variables on the component base classes (e.g., `.btn`), allowing for more real-time customization of Bootstrap. In subsequent releases, we'll continue to expand our use of CSS variables into our layout, forms, helpers, and utilities. Read more about CSS variables in each component on their respective documentation pages.\n\nOur CSS variable usage will be somewhat incomplete until Bootstrap 6. While we'd love to fully implement these across the board, they do run the risk of causing breaking changes. For example, setting `$alert-border-width: var(--bs-border-width)` in our source code breaks potential Sass in your own code if you were doing `$alert-border-width * 2` for some reason.\n\nAs such, wherever possible, we will continue to push towards more CSS variables, but please recognize our implementation may be slightly limited in v5.\n\n### New `_maps.scss`\n\n**Bootstrap v5.2.0 introduced a new Sass file with `_maps.scss`.** It pulls out several Sass maps from `_variables.scss` to fix an issue where updates to an original map were not applied to secondary maps that extend them. For example, updates to `$theme-colors` were not being applied to other theme maps that relied on `$theme-colors`, breaking key customization workflows. In short, Sass has a limitation where once a default variable or map has been _used_, it cannot be updated. _There's a similar shortcoming with CSS variables when they're used to compose other CSS variables._\n\nThis is why variable customizations in Bootstrap have to come after `@import \"functions\"`, but before `@import \"variables\"` and the rest of our import stack. The same applies to Sass maps—you must override the defaults before they get used. The following maps have been moved to the new `_maps.scss`:\n\n- `$theme-colors-rgb`\n- `$utilities-colors`\n- `$utilities-text`\n- `$utilities-text-colors`\n- `$utilities-bg`\n- `$utilities-bg-colors`\n- `$negative-spacers`\n- `$gutters`\n\nYour custom Bootstrap CSS builds should now look something like this with a separate maps import.\n\n```diff\n // Functions come first\n @import \"functions\";\n\n // Optional variable overrides here\n+ $custom-color: #df711b;\n+ $custom-theme-colors: (\n+ \"custom\": $custom-color\n+ );\n\n // Variables come next\n @import \"variables\";\n\n+ // Optional Sass map overrides here\n+ $theme-colors: map-merge($theme-colors, $custom-theme-colors);\n+\n+ // Followed by our default maps\n+ @import \"maps\";\n+\n // Rest of our imports\n @import \"mixins\";\n @import \"utilities\";\n @import \"root\";\n @import \"reboot\";\n // etc\n```\n\n### New utilities\n\n- Expanded [`font-weight` utilities]([[docsref:/utilities/text#font-weight-and-italics]]) to include `.fw-semibold` for semibold fonts.\n- Expanded [`border-radius` utilities]([[docsref:/utilities/borders#sizes]]) to include two new sizes, `.rounded-4` and `.rounded-5`, for more options.\n\n### Additional changes\n\n- **Introduced new `$enable-container-classes` option. —** Now when opting into the experimental CSS Grid layout, `.container-*` classes will still be compiled, unless this option is set to `false`. Containers also now keep their gutter values.\n\n- **Offcanvas component now has [responsive variations]([[docsref:/components/offcanvas#responsive]]).** The original `.offcanvas` class remains unchanged—it hides content across all viewports. To make it responsive, change that `.offcanvas` class to any `.offcanvas-{sm|md|lg|xl|xxl}` class.\n\n- **Thicker table dividers are now opt-in. —** We've removed the thicker and more difficult to override border between table groups and moved it to an optional class you can apply, `.table-group-divider`. [See the table docs for an example.]([[docsref:/content/tables#table-group-dividers]])\n\n- **[Scrollspy has been rewritten](https://github.com/twbs/bootstrap/pull/33421) to use the Intersection Observer API**, which means you no longer need relative parent wrappers, deprecates `offset` config, and more. Look for your Scrollspy implementations to be more accurate and consistent in their nav highlighting.\n\n- **Popovers and tooltips now use CSS variables.** Some CSS variables have been updated from their Sass counterparts to reduce the number of variables. As a result, three variables have been deprecated in this release: `$popover-arrow-color`, `$popover-arrow-outer-color`, and `$tooltip-arrow-color`.\n\n- **Added new `.text-bg-{color}` helpers.** Instead of setting individual `.text-*` and `.bg-*` utilities, you can now use [the `.text-bg-*` helpers]([[docsref:helpers/color-background]]) to set a `background-color` with contrasting foreground `color`.\n\n- Added `.form-check-reverse` modifier to flip the order of labels and associated checkboxes/radios.\n\n- Added [striped columns]([[docsref:/content/tables#striped-columns]]) support to tables via the new `.table-striped-columns` class.\n\nFor a complete list of changes, [see the v5.2.0 project on GitHub](https://github.com/twbs/bootstrap/projects/32).\n\n## v5.1.0\n\n\u003Chr class=\"mb-4\"/>\n\n- **Added experimental support for [CSS Grid layout]([[docsref:/layout/css-grid]]). —** This is a work in progress, and is not yet ready for production use, but you can opt into the new feature via Sass. To enable it, disable the default grid, by setting `$enable-grid-classes: false` and enable the CSS Grid by setting `$enable-cssgrid: true`.\n\n- **Updated navbars to support offcanvas. —** Add [offcanvas drawers in any navbar]([[docsref:/components/navbar#offcanvas]]) with the responsive `.navbar-expand-*` classes and some offcanvas markup.\n\n- **Added new [placeholder component]([[docsref:/components/placeholders/]]). —** Our newest component, a way to provide temporary blocks in lieu of real content to help indicate that something is still loading in your site or app.\n\n- **Collapse plugin now supports [horizontal collapsing]([[docsref:/components/collapse#horizontal]]). —** Add `.collapse-horizontal` to your `.collapse` to collapse the `width` instead of the `height`. Avoid browser repainting by setting a `min-height` or `height`.\n\n- **Added new stack and vertical rule helpers. —** Quickly apply multiple flexbox properties to quickly create custom layouts with [stacks]([[docsref:/helpers/stacks/]]). Choose from horizontal (`.hstack`) and vertical (`.vstack`) stacks. Add vertical dividers similar to `\u003Chr>` elements with the [new `.vr` helpers]([[docsref:/helpers/vertical-rule/]]).\n\n- **Added new global `:root` CSS variables. —** Added several new CSS variables to the `:root` level for controlling `\u003Cbody>` styles. More are in the works, including across our utilities and components, but for now read up [CSS variables in the Customize section]([[docsref:/customize/css-variables/]]).\n\n- **Overhauled color and background utilities to use CSS variables, and added new [text opacity]([[docsref:/utilities/text#opacity]]) and [background opacity]([[docsref:/utilities/background#opacity]]) utilities. —** `.text-*` and `.bg-*` utilities are now built with CSS variables and `rgba()` color values, allowing you to easily customize any utility with new opacity utilities.\n\n- **Added new snippet examples based to show how to customize our components. —** Pull ready to use customized components and other common design patterns with our new [Snippets examples]([[docsref:/examples/#snippets]]). Includes [footers]([[docsref:/examples/footers/]]), [dropdowns]([[docsref:/examples/dropdowns/]]), [list groups]([[docsref:/examples/list-groups/]]), and [modals]([[docsref:/examples/modals/]]).\n\n- **Removed unused positioning styles from popovers and tooltips** as these are handled solely by Popper. `$tooltip-margin` has been deprecated and set to `null` in the process.\n\nWant more information? [Read the v5.1.0 blog post.](https://blog.getbootstrap.com/2021/08/04/bootstrap-5-1-0/)\n\n## v5.0.0\n\n\u003Chr class=\"mb-4\"/>\n\n\u003CCallout>\n**Hey there!** Changes to our first major release of Bootstrap 5, v5.0.0, are documented below. They don't reflect the additional changes shown above.\n\u003C/Callout>\n\n### Dependencies\n\n- Dropped jQuery.\n- Upgraded from Popper v1.x to Popper v2.x.\n- Replaced Libsass with Dart Sass as our Sass compiler given Libsass was deprecated.\n- Migrated from Jekyll to Hugo for building our documentation\n\n### Browser support\n\n- Dropped Internet Explorer 10 and 11\n- Dropped Microsoft Edge \u003C 16 (Legacy Edge)\n- Dropped Firefox \u003C 60\n- Dropped Safari \u003C 12\n- Dropped iOS Safari \u003C 12\n- Dropped Chrome \u003C 60\n\n\u003Chr class=\"my-5\"/>\n\n### Documentation changes\n\n- Redesigned homepage, docs layout, and footer.\n- Added [new Parcel guide]([[docsref:/getting-started/parcel]]).\n- Added [new Customize section]([[docsref:/customize/overview]]), replacing [v4's Theming page](https://getbootstrap.com/docs/4.6/getting-started/theming/), with new details on Sass, global configuration options, color schemes, CSS variables, and more.\n- Reorganized all form documentation into [new Forms section]([[docsref:/forms/overview]]), breaking apart the content into more focused pages.\n- Similarly, updated [the Layout section]([[docsref:/layout/breakpoints]]), to flesh out grid content more clearly.\n- Renamed \"Navs\" component page to \"Navs & Tabs\".\n- Renamed \"Checks\" page to \"Checks & radios\".\n- Redesigned the navbar and added a new subnav to make it easier to get around our sites and docs versions.\n- Added new keyboard shortcut for the search field: \u003Ckbd>\u003Ckbd>Ctrl\u003C/kbd> + \u003Ckbd>/\u003C/kbd>\u003C/kbd>.\n\n### Sass\n\n- We've ditched the default Sass map merges to make it easier to remove redundant values. Keep in mind you now have to define all values in the Sass maps like `$theme-colors`. Check out how to deal with [Sass maps]([[docsref:/customize/sass#maps-and-loops]]).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `color-yiq()` function and related variables to `color-contrast()` as it's no longer related to YIQ color space. [See #30168.](https://github.com/twbs/bootstrap/pull/30168/)\n - `$yiq-contrasted-threshold` is renamed to `$min-contrast-ratio`.\n - `$yiq-text-dark` and `$yiq-text-light` are respectively renamed to `$color-contrast-dark` and `$color-contrast-light`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Media query mixins parameters have changed for a more logical approach.\n - `media-breakpoint-down()` uses the breakpoint itself instead of the next breakpoint (e.g., `media-breakpoint-down(lg)` instead of `media-breakpoint-down(md)` targets viewports smaller than `lg`).\n - Similarly, the second parameter in `media-breakpoint-between()` also uses the breakpoint itself instead of the next breakpoint (e.g., `media-breakpoint-between(sm, lg)` instead of `media-breakpoint-between(sm, md)` targets viewports between `sm` and `lg`).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed print styles and `$enable-print-styles` variable. Print display classes are still around. [See #28339](https://github.com/twbs/bootstrap/pull/28339).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `color()`, `theme-color()`, and `gray()` functions in favor of variables. [See #29083](https://github.com/twbs/bootstrap/pull/29083).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `theme-color-level()` function to `color-level()` and now accepts any color you want instead of only `$theme-color` colors. [See #29083](https://github.com/twbs/bootstrap/pull/29083) **Watch out:** `color-level()` was later on dropped in `v5.0.0-alpha3`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `$enable-prefers-reduced-motion-media-query` and `$enable-pointer-cursor-for-buttons` to `$enable-reduced-motion` and `$enable-button-pointers` for brevity.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed the `bg-gradient-variant()` mixin. Use the `.bg-gradient` class to add gradients to elements instead of the generated `.bg-gradient-*` classes.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Removed previously deprecated mixins:**\n - `hover`, `hover-focus`, `plain-hover-focus`, and `hover-focus-active`\n - `float()`\n - `form-control-mixin()`\n - `nav-divider()`\n - `retina-img()`\n - `text-hide()` (also dropped the associated utility class, `.text-hide`)\n - `visibility()`\n - `form-control-focus()`\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `scale-color()` function to `shift-color()` to avoid collision with Sass's own color scaling function.\n\n- `box-shadow` mixins now allow `null` values and drop `none` from multiple arguments. [See #30394](https://github.com/twbs/bootstrap/pull/30394).\n\n- The `border-radius()` mixin now has a default value.\n\n### Color system\n\n- The color system which worked with `color-level()` and `$theme-color-interval` was removed in favor of a new color system. All `lighten()` and `darken()` functions in our codebase are replaced by `tint-color()` and `shade-color()`. These functions will mix the color with either white or black instead of changing its lightness by a fixed amount. The `shift-color()` will either tint or shade a color depending on whether its weight parameter is positive or negative. [See #30622](https://github.com/twbs/bootstrap/pull/30622) for more details.\n\n- Added new tints and shades for every color, providing nine separate colors for each base color, as new Sass variables.\n\n- Improved color contrast. Bumped color contrast ratio from 3:1 to 4.5:1 and updated blue, green, cyan, and pink colors to ensure WCAG 2.2 AA contrast. Also changed our color contrast color from `$gray-900` to `$black`.\n\n- To support our color system, we've added new custom `tint-color()` and `shade-color()` functions to mix our colors appropriately.\n\n### Grid updates\n\n- **New breakpoint!** Added new `xxl` breakpoint for `1400px` and up. No changes to all other breakpoints.\n\n- **Improved gutters.** Gutters are now set in rems, and are narrower than v4 (`1.5rem`, or about `24px`, down from `30px`). This aligns our grid system's gutters with our spacing utilities.\n - Added new [gutter class]([[docsref:/layout/gutters]]) (`.g-*`, `.gx-*`, and `.gy-*`) to control horizontal/vertical gutters, horizontal gutters, and vertical gutters.\n - \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.no-gutters` to `.g-0` to match new gutter utilities.\n\n- Columns no longer have `position: relative` applied, so you may have to add `.position-relative` to some elements to restore that behavior.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped several `.order-*` classes that often went unused. We now only provide `.order-0` to `.order-5` out of the box.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped the `.media` component as it can be easily replicated with utilities. [See #28265](https://github.com/twbs/bootstrap/pull/28265) and the [flex utilities page for an example]([[docsref:/utilities/flex#media-object]]).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> `bootstrap-grid.css` now only applies `box-sizing: border-box` to the column instead of resetting the global box-sizing. This way, our grid styles can be used in more places without interference.\n\n- `$enable-grid-classes` no longer disables the generation of container classes anymore. [See #29146.](https://github.com/twbs/bootstrap/pull/29146)\n\n- Updated the `make-col` mixin to default to equal columns without a specified size.\n\n### Content, Reboot, etc\n\n- **[RFS]([[docsref:/getting-started/rfs]]) is now enabled by default.** Headings using the `font-size()` mixin will automatically adjust their `font-size` to scale with the viewport. _This feature was previously opt-in with v4._\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Overhauled our display typography to replace our `$display-*` variables and with a `$display-font-sizes` Sass map. Also removed the individual `$display-*-weight` variables for a single `$display-font-weight` and adjusted `font-size`s.\n\n- Added two new `.display-*` heading sizes, `.display-5` and `.display-6`.\n\n- **Links are underlined by default** (not just on hover), unless they're part of specific components.\n\n- **Redesigned tables** to refresh their styles and rebuild them with CSS variables for more control over styling.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Nested tables do not inherit styles anymore.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> `.thead-light` and `.thead-dark` are dropped in favor of the `.table-*` variant classes which can be used for all table elements (`thead`, `tbody`, `tfoot`, `tr`, `th` and `td`).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> The `table-row-variant()` mixin is renamed to `table-variant()` and accepts only 2 parameters: `$color` (color name) and `$value` (color code). The border color and accent colors are automatically calculated based on the table factor variables.\n\n- Split table cell padding variables into `-y` and `-x`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.pre-scrollable` class. [See #29135](https://github.com/twbs/bootstrap/pull/29135)\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> `.text-*` utilities do not add hover and focus states to links anymore. `.link-*` helper classes can be used instead. [See #29267](https://github.com/twbs/bootstrap/pull/29267)\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.text-justify` class. [See #29793](https://github.com/twbs/bootstrap/pull/29793)\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> ~~`\u003Chr>` elements now use `height` instead of `border` to better support the `size` attribute. This also enables use of padding utilities to create thicker dividers (e.g., `\u003Chr class=\"py-1\">`).~~\n\n- Reset default horizontal `padding-left` on `\u003Cul>` and `\u003Col>` elements from browser default `40px` to `2rem`.\n\n- Added `$enable-smooth-scroll`, which applies `scroll-behavior: smooth` globally—except for users asking for reduced motion through `prefers-reduced-motion` media query. [See #31877](https://github.com/twbs/bootstrap/pull/31877)\n\n### RTL\n\n- Horizontal direction specific variables, utilities, and mixins have all been renamed to use logical properties like those found in flexbox layouts—e.g., `start` and `end` in lieu of `left` and `right`.\n\n### Forms\n\n- **Added new floating forms!** We've promoted the Floating labels example to fully supported form components. [See the new Floating labels page.]([[docsref:/forms/floating-labels]])\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Consolidated native and custom form elements.** Checkboxes, radios, selects, and other inputs that had native and custom classes in v4 have been consolidated. Now nearly all our form elements are entirely custom, most without the need for custom HTML.\n - `.custom-control.custom-checkbox` is now `.form-check`.\n - `.custom-control.custom-radio` is now `.form-check`.\n - `.custom-control.custom-switch` is now `.form-check.form-switch`.\n - `.custom-select` is now `.form-select`.\n - `.custom-file` and `.form-control-file` have been replaced by custom styles on top of `.form-control`.\n - `.custom-range` is now `.form-range`.\n - Dropped native `.form-control-file` and `.form-control-range`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.input-group-append` and `.input-group-prepend`. You can now just add buttons and `.input-group-text` as direct children of the input groups.\n\n- The longstanding [Missing border radius on input group with validation feedback bug](https://github.com/twbs/bootstrap/issues/25110) is finally fixed by adding an additional `.has-validation` class to input groups with validation.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Dropped form-specific layout classes for our grid system.** Use our grid and utilities instead of `.form-group`, `.form-row`, or `.form-inline`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Form labels now require `.form-label`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> `.form-text` no longer sets `display`, allowing you to create inline or block help text as you wish just by changing the HTML element.\n\n- Form controls no longer used fixed `height` when possible, instead deferring to `min-height` to improve customization and compatibility with other components.\n\n- Validation icons are no longer applied to `\u003Cselect>`s with `multiple`.\n\n- Rearranged source Sass files under `scss/forms/`, including input group styles.\n\n\u003Chr class=\"my-5\"/>\n\n### Components\n\n- Unified `padding` values for alerts, breadcrumbs, cards, dropdowns, list groups, modals, popovers, and tooltips to be based on our `$spacer` variable. [See #30564](https://github.com/twbs/bootstrap/pull/30564).\n\n#### Accordion\n\n- Added [new accordion component]([[docsref:/components/accordion]]).\n\n#### Alerts\n\n- Alerts now have [examples with icons]([[docsref:/components/alerts#icons]]).\n\n- Removed custom styles for `\u003Chr>`s in each alert since they already use `currentColor`.\n\n#### Badges\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped all `.badge-*` color classes for background utilities (e.g., use `.bg-primary` instead of `.badge-primary`).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.badge-pill`—use the `.rounded-pill` utility instead.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed hover and focus styles for `\u003Ca>` and `\u003Cbutton>` elements.\n\n- Increased default padding for badges from `.25em`/`.5em` to `.35em`/`.65em`.\n\n#### Breadcrumbs\n\n- Simplified the default appearance of breadcrumbs by removing `padding`, `background-color`, and `border-radius`.\n\n- Added new CSS custom property `--bs-breadcrumb-divider` for easy customization without needing to recompile CSS.\n\n#### Buttons\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **[Toggle buttons]([[docsref:/forms/checks-radios#toggle-buttons]]), with checkboxes or radios, no longer require JavaScript and have new markup.** We no longer require a wrapping element, add `.btn-check` to the `\u003Cinput>`, and pair it with any `.btn` classes on the `\u003Clabel>`. [See #30650](https://github.com/twbs/bootstrap/pull/30650). _The docs for this has moved from our Buttons page to the new Forms section._\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Dropped `.btn-block` for utilities.** Instead of using `.btn-block` on the `.btn`, wrap your buttons with `.d-grid` and a `.gap-*` utility to space them as needed. Switch to responsive classes for even more control over them. [Read the docs for some examples.]([[docsref:/components/buttons#block-buttons]])\n\n- Updated our `button-variant()` and `button-outline-variant()` mixins to support additional parameters.\n\n- Updated buttons to ensure increased contrast on hover and active states.\n\n- Disabled buttons now have `pointer-events: none;`.\n\n#### Card\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.card-deck` in favor of our grid. Wrap your cards in column classes and add a parent `.row-cols-*` container to recreate card decks (but with more control over responsive alignment).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.card-columns` in favor of Masonry. [See #28922](https://github.com/twbs/bootstrap/pull/28922).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Replaced the `.card` based accordion with a [new Accordion component]([[docsref:/components/accordion]]).\n\n#### Carousel\n\n- Added new [`.carousel-dark` variant]([[docsref:/components/carousel#dark-variant]]) for dark text, controls, and indicators (great for lighter backgrounds).\n\n- Replaced chevron icons for carousel controls with new SVGs from [Bootstrap Icons]([[config:icons]]).\n\n#### Close button\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.close` to `.btn-close` for a less generic name.\n\n- Close buttons now use a `background-image` (embedded SVG) instead of a `×` in the HTML, allowing for easier customization without the need to touch your markup.\n\n- Added new `.btn-close-white` variant that uses `filter: invert(1)` to enable higher contrast dismiss icons against darker backgrounds.\n\n#### Collapse\n\n- Removed scroll anchoring for accordions.\n\n#### Dropdowns\n\n- Added new `.dropdown-menu-dark` variant and associated variables for on-demand dark dropdowns.\n\n- Added new variable for `$dropdown-padding-x`.\n\n- Darkened the dropdown divider for improved contrast.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> All the events for the dropdown are now triggered on the dropdown toggle button and then bubbled up to the parent element.\n\n- Dropdown menus now have a `data-bs-popper=\"static\"` attribute set when the positioning of the dropdown is static, or dropdown is in the navbar. This is added by our JavaScript and helps us use custom position styles without interfering with Popper's positioning.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `flip` option for dropdown plugin in favor of native Popper configuration. You can now disable the flipping behavior by passing an empty array for [`fallbackPlacements`](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) option in [flip](https://popper.js.org/docs/v2/modifiers/flip/) modifier.\n\n- Dropdown menus can now be clickable with a new `autoClose` option to handle the [auto close behavior]([[docsref:/components/dropdowns#auto-close-behavior]]). You can use this option to accept the click inside or outside the dropdown menu to make it interactive.\n\n- Dropdowns now support `.dropdown-item`s wrapped in `\u003Cli>`s.\n\n#### Jumbotron\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped the jumbotron component as it can be replicated with utilities. [See our new Jumbotron example for a demo.]([[docsref:/examples/jumbotron]])\n\n#### List group\n\n- Added new [`.list-group-numbered` modifier]([[docsref:/components/list-group#numbered]]) to list groups.\n\n#### Navs and tabs\n\n- Added new `null` variables for `font-size`, `font-weight`, `color`, and `:hover` `color` to the `.nav-link` class.\n\n#### Navbars\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Navbars now require a container within (to drastically simplify spacing requirements and CSS required).\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> The `.active` class can no longer be applied to `.nav-item`s, it must be applied directly on `.nav-link`s.\n\n#### Offcanvas\n\n- Added the new [offcanvas component]([[docsref:/components/offcanvas]]).\n\n#### Pagination\n\n- Pagination links now have customizable `margin-left` that are dynamically rounded on all corners when separated from one another.\n\n- Added `transition`s to pagination links.\n\n#### Popovers\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.arrow` to `.popover-arrow` in our default popover template.\n\n- Renamed `whiteList` option to `allowList`.\n\n#### Spinners\n\n- Spinners now honor `prefers-reduced-motion: reduce` by slowing down animations. [See #31882](https://github.com/twbs/bootstrap/pull/31882).\n\n- Improved spinner vertical alignment.\n\n#### Toasts\n\n- Toasts can now be [positioned]([[docsref:/components/toasts#placement]]) in a `.toast-container` with the help of [positioning utilities]([[docsref:/utilities/position]]).\n\n- Changed default toast duration to 5 seconds.\n\n- Removed `overflow: hidden` from toasts and replaced with proper `border-radius`s with `calc()` functions.\n\n#### Tooltips\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.arrow` to `.tooltip-arrow` in our default tooltip template.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> The default value for the `fallbackPlacements` is changed to `['top', 'right', 'bottom', 'left']` for better placement of popper elements.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `whiteList` option to `allowList`.\n\n### Utilities\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed several utilities to use logical property names instead of directional names with the addition of RTL support:\n - Renamed `.float-left` and `.float-right` to `.float-start` and `.float-end`.\n - Renamed `.border-left` and `.border-right` to `.border-start` and `.border-end`.\n - Renamed `.rounded-left` and `.rounded-right` to `.rounded-start` and `.rounded-end`.\n - Renamed `.ml-*` and `.mr-*` to `.ms-*` and `.me-*`.\n - Renamed `.pl-*` and `.pr-*` to `.ps-*` and `.pe-*`.\n - Renamed `.text-*-left` and `.text-*-right` to `.text-*-start` and `.text-*-end`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Disabled negative margins by default.\n\n- Added new `.bg-body` class for quickly setting the `\u003Cbody>`'s background to additional elements.\n\n- Added new [position utilities]([[docsref:/utilities/position#arrange-elements]]) for `top`, `right`, `bottom`, and `left`. Values include `0`, `50%`, and `100%` for each property.\n\n- Added new `.translate-middle-x` & `.translate-middle-y` utilities to horizontally or vertically center absolute/fixed positioned elements.\n\n- Added new [`border-width` utilities]([[docsref:/utilities/borders#border-width]]).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.text-monospace` to `.font-monospace`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed `.text-hide` as it's an antiquated method for hiding text that shouldn't be used anymore.\n\n- Added `.fs-*` utilities for `font-size` utilities (with RFS enabled). These use the same scale as HTML's default headings (1-6, large to small), and can be modified via Sass map.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.font-weight-*` utilities as `.fw-*` for brevity and consistency.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.font-italic` utility to `.fst-italic` for brevity and consistency with new `.fst-normal` utility.\n\n- Added `.d-grid` to display utilities and new `gap` utilities (`.gap`) for CSS Grid and flexbox layouts.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed `.rounded-sm` and `rounded-lg`, and introduced a new scale of classes, `.rounded-0` to `.rounded-3`. [See #31687](https://github.com/twbs/bootstrap/pull/31687).\n\n- Added new `line-height` utilities: `.lh-1`, `.lh-sm`, `.lh-base` and `.lh-lg`. See [here]([[docsref:/utilities/text#line-height]]).\n\n- Moved the `.d-none` utility in our CSS to give it more weight over other display utilities.\n\n- Extended the `.visually-hidden-focusable` helper to also work on containers, using `:focus-within`.\n\n### Helpers\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Responsive embed helpers have been renamed to [ratio helpers]([[docsref:/helpers/ratio]])** with new class names and improved behaviors, as well as a helpful CSS variable.\n - Classes have been renamed to change `by` to `x` in the aspect ratio. For example, `.ratio-16by9` is now `.ratio-16x9`.\n - We've dropped the `.embed-responsive-item` and element group selector in favor of a simpler `.ratio > *` selector. No more class is needed, and the ratio helper now works with any HTML element.\n - The `$embed-responsive-aspect-ratios` Sass map has been renamed to `$aspect-ratios` and its values have been simplified to include the class name and the percentage as the `key: value` pair.\n - CSS variables are now generated and included for each value in the Sass map. Modify the `--bs-aspect-ratio` variable on the `.ratio` to create any [custom aspect ratio]([[docsref:/helpers/ratio#custom-ratios]]).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **\"Screen reader\" classes are now [\"visually hidden\" classes]([[docsref:/helpers/visually-hidden]]).**\n - Changed the Sass file from `scss/helpers/_screenreaders.scss` to `scss/helpers/_visually-hidden.scss`\n - Renamed `.sr-only` and `.sr-only-focusable` to `.visually-hidden` and `.visually-hidden-focusable`\n - Renamed `sr-only()` and `sr-only-focusable()` mixins to `visually-hidden()` and `visually-hidden-focusable()`.\n\n- `bootstrap-utilities.css` now also includes our helpers. Helpers don't need to be imported in custom builds anymore.\n\n### JavaScript\n\n- **Dropped jQuery dependency** and rewrote plugins to be in regular JavaScript.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Data attributes for all JavaScript plugins are now namespaced to help distinguish Bootstrap functionality from third parties and your own code. For example, we use `data-bs-toggle` instead of `data-toggle`.\n\n- **All plugins can now accept a CSS selector as the first argument.** You can either pass a DOM element or any valid CSS selector to create a new instance of the plugin:\n\n ```js\n const modal = new bootstrap.Modal('#myModal')\n const dropdown = new bootstrap.Dropdown('[data-bs-toggle=\"dropdown\"]')\n ```\n\n- `popperConfig` can be passed as a function that accepts the Bootstrap's default Popper config as an argument, so that you can merge this default configuration in your way. **Applies to dropdowns, popovers, and tooltips.**\n\n- The default value for the `fallbackPlacements` is changed to `['top', 'right', 'bottom', 'left']` for better placement of Popper elements. **Applies to dropdowns, popovers, and tooltips.**\n\n- Removed underscore from public static methods like `_getInstance()` → `getInstance()`.\n\n- Removed `util.js`, with its functionality now integrated into individual plugins. If you previously included `util.js` manually, you can safely remove it, as it is no longer needed. Each plugin now contains only the utilities it requires, enhancing modularity and reducing dependencies.","src/content/docs/migration.mdx","589eb82f3b85ceaf","migration.mdx","about/brand",{"id":154,"data":156,"body":159,"filePath":160,"digest":161,"legacyId":162,"deferredRender":139},{"description":157,"title":158,"toc":139},"Documentation and examples for Bootstrap's logo and brand usage guidelines.","Brand guidelines","Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well.\n\n## Logo\n\nWhen referencing Bootstrap, use our logo mark. Do not modify our logos in any way. Do not use Bootstrap's branding for your own open or closed source projects.\n\n\u003Cdiv class=\"bd-brand-item px-2 py-5 mb-3 border rounded-3\">\n \u003Cimg class=\"d-block img-fluid mx-auto\" src=\"/docs/[[config:docs_version]]/assets/brand/bootstrap-logo.svg\" alt=\"Bootstrap\" width=\"256\" height=\"204\" />\n\u003C/div>\n\nOur logo mark is also available in black and white. All rules for our primary logo apply to these as well.\n\n\u003Cdiv class=\"bd-brand-logos d-sm-flex text-center bg-light rounded-3 overflow-hidden w-100 mb-3\">\n \u003Cdiv class=\"bd-brand-item w-100 px-2 py-5\">\n \u003Cimg src=\"/docs/[[config:docs_version]]/assets/brand/bootstrap-logo-black.svg\" alt=\"Bootstrap\" width=\"128\" height=\"102\" loading=\"lazy\" />\n \u003C/div>\n \u003Cdiv class=\"bd-brand-item w-100 px-2 py-5 inverse\">\n \u003Cimg src=\"/docs/[[config:docs_version]]/assets/brand/bootstrap-logo-white.svg\" alt=\"Bootstrap\" width=\"128\" height=\"102\" loading=\"lazy\" />\n \u003C/div>\n\u003C/div>\n\n## Name\n\nBootstrap should always be referred to as just **Bootstrap**. No capital _s_.\n\n\u003Cdiv class=\"bd-brand-logos d-sm-flex text-center border rounded-3 overflow-hidden w-100 mb-3\">\n \u003Cdiv class=\"bd-brand-item w-100 px-2 py-5\">\n \u003Cdiv class=\"h3\">Bootstrap\u003C/div>\n \u003Cstrong class=\"text-success\">Correct\u003C/strong>\n \u003C/div>\n \u003Cdiv class=\"bd-brand-item w-100 px-2 py-5\">\n \u003Cdiv class=\"h3 text-body-secondary\">BootStrap\u003C/div>\n \u003Cstrong class=\"text-danger\">Incorrect\u003C/strong>\n \u003C/div>\n\u003C/div>","src/content/docs/about/brand.mdx","96bb8191532b6d99","about/brand.mdx","about/license",{"id":163,"data":165,"body":168,"filePath":169,"digest":170,"legacyId":171,"deferredRender":139},{"description":166,"title":167},"Commonly asked questions about Bootstrap's open source license.","License FAQs","Bootstrap is released under the MIT license and is copyright {new Date().getFullYear()}. Boiled down to smaller chunks, it can be described with the following conditions.\n\n## It requires you to:\n\n- Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works\n\n## It permits you to:\n\n- Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes\n- Use Bootstrap in packages or distributions that you create\n- Modify the source code\n- Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license\n\n## It forbids you to:\n\n- Hold the authors and license owners liable for damages as Bootstrap is provided without warranty\n- Hold the creators or copyright holders of Bootstrap liable\n- Redistribute any piece of Bootstrap without proper attribution\n- Use any marks owned by Bootstrap in any way that might state or imply that Bootstrap endorses your distribution\n- Use any marks owned by Bootstrap in any way that might state or imply that you created the Bootstrap software in question\n\n## It does not require you to:\n\n- Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it\n- Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)\n\nThe full Bootstrap license is located [in the project repository]([[config:repo]]/blob/v[[config:current_version]]/LICENSE) for more information.","src/content/docs/about/license.mdx","4a117d7276c78a51","about/license.mdx","about/overview",{"id":172,"data":174,"body":180,"filePath":181,"digest":182,"legacyId":183,"deferredRender":139},{"aliases":175,"description":178,"title":179},[176,177],"/about/","/docs/[[config:docs_version]]/about/","Learn more about the team maintaining Bootstrap, how and why the project started, and how to get involved.","About Bootstrap","## Team\n\nBootstrap is maintained by a [small team of developers](https://github.com/orgs/twbs/people) on GitHub. We're actively looking to grow this team and would love to hear from you if you're excited about CSS at scale, writing and maintaining vanilla JavaScript plugins, and improving build tooling processes for frontend code.\n\n## History\n\nOriginally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world.\n\nBootstrap was created at Twitter in mid-2010 by [@mdo](https://twitter.com/mdo) and [@fat](https://twitter.com/fat). Prior to being an open-sourced framework, Bootstrap was known as _Twitter Blueprint_. A few months into development, Twitter held its [first Hack Week](https://blog.twitter.com/engineering/en_us/a/2010/hack-week) and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today.\n\nOriginally [released](https://blog.twitter.com/developer/en_us/a/2011/bootstrap-twitter) on \u003Ctime datetime=\"2011-08-19 11:25\">Friday, August 19, 2011\u003C/time>, we've since had over [twenty releases]([[config:repo]]/releases), including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach.\n\nWith Bootstrap 4, we once again rewrote the project to account for two key architectural changes: a migration to Sass and the move to CSS's flexbox. Our intention is to help in a small way to move the web development community forward by pushing for newer CSS properties, fewer dependencies, and new technologies across more modern browsers.\n\nOur latest release, Bootstrap 5, focuses on improving v4's codebase with as few major breaking changes as possible. We improved existing features and components, removed support for older browsers, dropped jQuery for regular JavaScript, and embraced more future-friendly technologies like CSS custom properties as part of our tooling.\n\n## Get involved\n\nGet involved with Bootstrap development by [opening an issue]([[config:repo]]/issues/new/choose) or submitting a pull request. Read our [contributing guidelines]([[config:repo]]/blob/v[[config:current_version]]/.github/CONTRIBUTING.md) for information on how we develop.","src/content/docs/about/overview.mdx","4b954ae8fb0dbc70","about/overview.mdx","about/translations",{"id":184,"data":186,"body":189,"filePath":190,"digest":191,"legacyId":192,"deferredRender":139},{"description":187,"title":188},"Links to community-translated Bootstrap documentation sites.","Translations","import { getData } from '@libs/data'\n\nCommunity members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up-to-date.\n\n\u003Cul>\n {getData('translations').map((translation) => {\n return (\n \u003Cli>\u003Ca href={translation.url} hreflang={translation.code} lang={translation.code} >{translation.description} ({translation.name})\u003C/a>\u003C/li>\n )\n })}\n\u003C/ul>\n\n**We don't help organize or host translations, we just link to them.**\n\nFinished a new or better translation? Open a pull request to add it to our list.","src/content/docs/about/translations.mdx","d263fcb790208710","about/translations.mdx","about/team",{"id":193,"data":195,"body":198,"filePath":199,"digest":200,"legacyId":201,"deferredRender":139},{"description":196,"title":197},"An overview of the founding team and core contributors to Bootstrap.","Team","import { getData } from '@libs/data'\n\nBootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community.\n\n\u003Cdiv class=\"list-group mb-3\">\n {getData('core-team').map((member) => {\n return (\n \u003Ca class=\"list-group-item list-group-item-action d-flex align-items-center\" href={`https://github.com/${member.user}`}>\n \u003Cimg src={`https://github.com/${member.user}.png`} alt={`@${member.user}`} width=\"32\" height=\"32\" class=\"rounded me-2\" loading=\"lazy\"/>\n \u003Cspan>\n \u003Cstrong>{member.name}\u003C/strong> @{member.user}\n \u003C/span>\n \u003C/a>\n )\n })}\n\u003C/div>\n\nGet involved with Bootstrap development by [opening an issue]([[config:repo]]/issues/new/choose) or submitting a pull request. Read our [contributing guidelines]([[config:repo]]/blob/v[[config:current_version]]/.github/CONTRIBUTING.md) for information on how we develop.","src/content/docs/about/team.mdx","83c42af188b202dd","about/team.mdx","extend/approach",{"id":202,"data":204,"body":209,"filePath":210,"digest":211,"legacyId":212,"deferredRender":139},{"aliases":205,"description":207,"title":208},[206],"/docs/[[config:docs_version]]/extend/","Learn about the guiding principles, strategies, and techniques used to build and maintain Bootstrap so you can more easily customize and extend it yourself.","Approach","While the getting started pages provide an introductory tour of the project and what it offers, this document focuses on _why_ we do the things we do in Bootstrap. It explains our philosophy to building on the web so that others can learn from us, contribute with us, and help us improve.\n\nSee something that doesn't sound right, or perhaps could be done better? [Open an issue]([[config:repo]]/issues/new/choose)—we'd love to discuss it with you.\n\n## Summary\n\nWe'll dive into each of these more throughout, but at a high level, here's what guides our approach.\n\n- Components should be responsive and mobile-first\n- Components should be built with a base class and extended via modifier classes\n- Component states should obey a common z-index scale\n- Whenever possible, prefer an HTML and CSS implementation over JavaScript\n- Whenever possible, use utilities over custom styles\n- Whenever possible, avoid enforcing strict HTML requirements (children selectors)\n\n## Responsive\n\nBootstrap's responsive styles are built to be responsive, an approach that's often referred to as _mobile-first_. We use this term in our docs and largely agree with it, but at times it can be too broad. While not every component _must_ be entirely responsive in Bootstrap, this responsive approach is about reducing CSS overrides by pushing you to add styles as the viewport becomes larger.\n\nAcross Bootstrap, you'll see this most clearly in our media queries. In most cases, we use `min-width` queries that begin to apply at a specific breakpoint and carry up through the higher breakpoints. For example, a `.d-none` applies from `min-width: 0` to infinity. On the other hand, a `.d-md-none` applies from the medium breakpoint and up.\n\nAt times we'll use `max-width` when a component's inherent complexity requires it. At times, these overrides are functionally and mentally clearer to implement and support than rewriting core functionality from our components. We strive to limit this approach, but will use it from time to time.\n\n## Classes\n\nAside from our Reboot, a cross-browser normalization stylesheet, all our styles aim to use classes as selectors. This means steering clear of type selectors (e.g., `input[type=\"text\"]`) and extraneous parent classes (e.g., `.parent .child`) that make styles too specific to easily override.\n\nAs such, components should be built with a base class that houses common, not-to-be overridden property-value pairs. For example, `.btn` and `.btn-primary`. We use `.btn` for all the common styles like `display`, `padding`, and `border-width`. We then use modifiers like `.btn-primary` to add the color, background-color, border-color, etc.\n\nModifier classes should only be used when there are multiple properties or values to be changed across multiple variants. Modifiers are not always necessary, so be sure you're actually saving lines of code and preventing unnecessary overrides when creating them. Good examples of modifiers are our theme color classes and size variants.\n\n## z-index scales\n\nThere are two `z-index` scales in Bootstrap—elements within a component and overlay components.\n\n### Component elements\n\n- Some components in Bootstrap are built with overlapping elements to prevent double borders without modifying the `border` property. For example, button groups, input groups, and pagination.\n- These components share a standard `z-index` scale of `0` through `3`.\n- `0` is default (initial), `1` is `:hover`, `2` is `:active`/`.active`, and `3` is `:focus`.\n- This approach matches our expectations of highest user priority. If an element is focused, it's in view and at the user's attention. Active elements are second highest because they indicate state. Hover is third highest because it indicates user intent, but nearly _anything_ can be hovered.\n\n### Overlay components\n\nBootstrap includes several components that function as an overlay of some kind. This includes, in order of highest `z-index`, dropdowns, fixed and sticky navbars, modals, tooltips, and popovers. These components have their own `z-index` scale that begins at `1000`. This starting number was chosen arbitrarily and serves as a small buffer between our styles and your project's custom styles.\n\nEach overlay component increases its `z-index` value slightly in such a way that common UI principles allow user focused or hovered elements to remain in view at all times. For example, a modal is document blocking (e.g., you cannot take any other action save for the modal's action), so we put that above our navbars.\n\nLearn more about this in our [`z-index` layout page]([[docsref:/layout/z-index]]).\n\n## HTML and CSS over JS\n\nWhenever possible, we prefer to write HTML and CSS over JavaScript. In general, HTML and CSS are more prolific and accessible to more people of all different experience levels. HTML and CSS are also faster in your browser than JavaScript, and your browser generally provides a great deal of functionality for you.\n\nThis principle is our first-class JavaScript API using `data` attributes. You don't need to write nearly any JavaScript to use our JavaScript plugins; instead, write HTML. Read more about this in [our JavaScript overview page]([[docsref:/getting-started/javascript#data-attributes]]).\n\nLastly, our styles build on the fundamental behaviors of common web elements. Whenever possible, we prefer to use what the browser provides. For example, you can put a `.btn` class on nearly any element, but most elements don't provide any semantic value or browser functionality. So instead, we use `\u003Cbutton>`s and `\u003Ca>`s.\n\nThe same goes for more complex components. While we _could_ write our own form validation plugin to add classes to a parent element based on an input's state, thereby allowing us to style the text say red, we prefer using the `:valid`/`:invalid` pseudo-elements every browser provides us.\n\n## Utilities\n\nUtility classes—formerly helpers in Bootstrap 3—are a powerful ally in combating CSS bloat and poor page performance. A utility class is typically a single, immutable property-value pairing expressed as a class (e.g., `.d-block` represents `display: block;`). Their primary appeal is speed of use while writing HTML and limiting the amount of custom CSS you have to write.\n\nSpecifically regarding custom CSS, utilities can help combat increasing file size by reducing your most commonly repeated property-value pairs into single classes. This can have a dramatic effect at scale in your projects.\n\n## Flexible HTML\n\nWhile not always possible, we strive to avoid being overly dogmatic in our HTML requirements for components. Thus, we focus on single classes in our CSS selectors and try to avoid immediate children selectors (`>`). This gives you more flexibility in your implementation and helps keep our CSS simpler and less specific.\n\n## Code conventions\n\n[Code Guide](https://codeguide.co/) (from Bootstrap co-creator, @mdo) documents how we write our HTML and CSS across Bootstrap. It specifies guidelines for general formatting, common sense defaults, property and attribute orders, and more.\n\nWe use [Stylelint](https://stylelint.io/) to enforce these standards and more in our Sass/CSS. [Our custom Stylelint config](https://github.com/twbs/stylelint-config-twbs-bootstrap) is open source and available for others to use and extend.\n\nWe use [vnu-jar](https://www.npmjs.com/package/vnu-jar) to enforce standard and semantic HTML, as well as detecting common errors.","src/content/docs/extend/approach.mdx","773137829c6d8017","extend/approach.mdx","extend/icons",{"id":213,"data":215,"body":218,"filePath":219,"digest":220,"legacyId":221,"deferredRender":139},{"description":216,"title":217},"Guidance and suggestions for using external icon libraries with Bootstrap.","Icons","import { getData } from '@libs/data'\n\nWhile Bootstrap doesn't include an icon set by default, we do have our own comprehensive icon library called Bootstrap Icons. Feel free to use them or any other icon set in your project. We've included details for Bootstrap Icons and other preferred icon sets below.\n\nWhile most icon sets include multiple file formats, we prefer SVG implementations for their improved accessibility and vector support.\n\n## Bootstrap Icons\n\nBootstrap Icons is a growing library of SVG icons that are designed by [@mdo](https://github.com/mdo) and maintained by [the Bootstrap Team](https://github.com/orgs/twbs/people). The beginnings of this icon set come from Bootstrap's very own components—our forms, carousels, and more. Bootstrap has very few icon needs out of the box, so we didn't need much. However, once we got going, we couldn't stop making more.\n\nOh, and did we mention they're completely open source? Licensed under MIT, just like Bootstrap, our icon set is available to everyone.\n\n[Learn more about Bootstrap Icons]([[config:icons]]), including how to install them and recommended usage.\n\n## Alternatives\n\nWe've tested and used these icon sets ourselves as preferred alternatives to Bootstrap Icons.\n\n\u003Cul>\n{getData('icons').preferred.map((icon) => {\n return (\n \u003Cli>\u003Ca href={icon.website}>{icon.name}\u003C/a>\u003C/li>\n )\n})}\n\u003C/ul>\n\n## More options\n\nWhile we haven't tried these out ourselves, they do look promising and provide multiple formats, including SVG.\n\n\u003Cul>\n{getData('icons').more.map((icon) => {\n return (\n \u003Cli>\u003Ca href={icon.website}>{icon.name}\u003C/a>\u003C/li>\n )\n})}\n\u003C/ul>","src/content/docs/extend/icons.mdx","767ee09ffbfbad65","extend/icons.mdx","content/figures",{"id":222,"data":224,"body":227,"filePath":228,"digest":229,"legacyId":230,"deferredRender":139},{"description":225,"title":226,"toc":139},"Documentation and examples for displaying related images and text with the figure component in Bootstrap.","Figures","Anytime you need to display a piece of content—like an image with an optional caption, consider using a `\u003Cfigure>`.\n\nUse the included `.figure`, `.figure-img` and `.figure-caption` classes to provide some baseline styles for the HTML5 `\u003Cfigure>` and `\u003Cfigcaption>` elements. Images in figures have no explicit size, so be sure to add the `.img-fluid` class to your `\u003Cimg>` to make it responsive.\n\n\u003CExample code={`\u003Cfigure class=\"figure\">\n \u003CPlaceholder width=\"400\" height=\"300\" class=\"figure-img img-fluid rounded\" />\n \u003Cfigcaption class=\"figure-caption\">A caption for the above image.\u003C/figcaption>\n\u003C/figure>`} />\n\nAligning the figure's caption is easy with our [text utilities]([[docsref:/utilities/text#text-alignment]]).\n\n\u003CExample code={`\u003Cfigure class=\"figure\">\n \u003CPlaceholder width=\"400\" height=\"300\" class=\"figure-img img-fluid rounded\" />\n \u003Cfigcaption class=\"figure-caption text-end\">A caption for the above image.\u003C/figcaption>\n\u003C/figure>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"figure-variables\" file=\"scss/_variables.scss\" />","src/content/docs/content/figures.mdx","8e9e02b0609a0ea1","content/figures.mdx","content/images",{"id":231,"data":233,"body":236,"filePath":237,"digest":238,"legacyId":239,"deferredRender":139},{"description":234,"title":235,"toc":139},"Documentation and examples for opting images into responsive behavior (so they never become wider than their parent) and add lightweight styles to them—all via classes.","Images","## Responsive images\n\nImages in Bootstrap are made responsive with `.img-fluid`. This applies `max-width: 100%;` and `height: auto;` to the image so that it scales with the parent width.\n\n\u003CExample code={`\u003CPlaceholder width=\"100%\" height=\"250\" class=\"bd-placeholder-img-lg img-fluid\" text=\"Responsive image\" />`} />\n\n## Image thumbnails\n\nIn addition to our [border-radius utilities]([[docsref:/utilities/borders]]), you can use `.img-thumbnail` to give an image a rounded 1px border appearance.\n\n\u003CExample code={`\u003CPlaceholder width=\"200\" height=\"200\" class=\"img-thumbnail\" title=\"A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera\" />`} />\n\n## Aligning images\n\nAlign images with the [helper float classes]([[docsref:/utilities/float]]) or [text alignment classes]([[docsref:/utilities/text#text-alignment]]). `block`-level images can be centered using [the `.mx-auto` margin utility class]([[docsref:/utilities/spacing#horizontal-centering]]).\n\n\u003CExample code={`\u003CPlaceholder width=\"200\" height=\"200\" class=\"rounded float-start\" />\n\u003CPlaceholder width=\"200\" height=\"200\" class=\"rounded float-end\" />`} />\n\n\n\u003CExample code={`\u003CPlaceholder width=\"200\" height=\"200\" class=\"rounded mx-auto d-block\" />`} />\n\n\u003CExample code={`\u003Cdiv class=\"text-center\">\n \u003CPlaceholder width=\"200\" height=\"200\" class=\"rounded\" />\n\u003C/div>`} />\n\n\n## Picture\n\nIf you are using the `\u003Cpicture>` element to specify multiple `\u003Csource>` elements for a specific `\u003Cimg>`, make sure to add the `.img-*` classes to the `\u003Cimg>` and not to the `\u003Cpicture>` tag.\n\n```html\n\u003Cpicture>\n \u003Csource srcset=\"...\" type=\"image/svg+xml\">\n \u003Cimg src=\"...\" class=\"img-fluid img-thumbnail\" alt=\"...\">\n\u003C/picture>\n```\n\n## CSS\n\n### Sass variables\n\nVariables are available for image thumbnails.\n\n\u003CScssDocs name=\"thumbnail-variables\" file=\"scss/_variables.scss\" />","src/content/docs/content/images.mdx","fc8e095236d90181","content/images.mdx","content/reboot",{"id":240,"data":242,"body":246,"filePath":247,"digest":248,"legacyId":249,"deferredRender":139},{"aliases":243,"description":244,"title":245,"toc":139},"/docs/[[config:docs_version]]/content/","Reboot, a collection of element-specific CSS changes in a single file, kickstart Bootstrap to provide an elegant, consistent, and simple baseline to build upon.","Reboot","## Approach\n\nReboot builds upon Normalize, providing many HTML elements with somewhat opinionated styles using only element selectors. Additional styling is done only with classes. For example, we reboot some `\u003Ctable>` styles for a simpler baseline and later provide `.table`, `.table-bordered`, and more.\n\nHere are our guidelines and reasons for choosing what to override in Reboot:\n\n- Update some browser default values to use `rem`s instead of `em`s for scalable component spacing.\n- Avoid `margin-top`. Vertical margins can collapse, yielding unexpected results. More importantly though, a single direction of `margin` is a simpler mental model.\n- For easier scaling across device sizes, block elements should use `rem`s for `margin`s.\n- Keep declarations of `font`-related properties to a minimum, using `inherit` whenever possible.\n\n## CSS variables\n\n\u003CAddedIn version=\"5.2.0\"/>\n\nWith v5.1.1, we standardized our required `@import`s across all our CSS bundles (including `bootstrap.css`, `bootstrap-reboot.css`, and `bootstrap-grid.css`) to include `_root.scss`. This adds `:root` level CSS variables to all bundles, regardless of how many of them are used in that bundle. Ultimately Bootstrap 5 will continue to see more [CSS variables]([[docsref:/customize/css-variables]]) added over time, in order to provide more real-time customization without the need to always recompile Sass. Our approach is to take our source Sass variables and transform them into CSS variables. That way, even if you don't use CSS variables, you still have all the power of Sass. **This is still in-progress and will take time to fully implement.**\n\nFor example, consider these `:root` CSS variables for common `\u003Cbody>` styles:\n\n\u003CScssDocs name=\"root-body-variables\" file=\"scss/_root.scss\" />\n\nIn practice, those variables are then applied in Reboot like so:\n\n\u003CScssDocs name=\"reboot-body-rules\" file=\"scss/_reboot.scss\" />\n\nWhich allows you to make real-time customizations however you like:\n\n```html\n\u003Cbody style=\"--bs-body-color: #333;\">\n \u003C!-- ... -->\n\u003C/body>\n```\n\n## Page defaults\n\nThe `\u003Chtml>` and `\u003Cbody>` elements are updated to provide better page-wide defaults. More specifically:\n\n- The `box-sizing` is globally set on every element—including `*::before` and `*::after`, to `border-box`. This ensures that the declared width of element is never exceeded due to padding or border.\n - No base `font-size` is declared on the `\u003Chtml>`, but `16px` is assumed (the browser default). `font-size: 1rem` is applied on the `\u003Cbody>` for easy responsive type-scaling via media queries while respecting user preferences and ensuring a more accessible approach. This browser default can be overridden by modifying the `$font-size-root` variable.\n- The `\u003Cbody>` also sets a global `font-family`, `font-weight`, `line-height`, and `color`. This is inherited later by some form elements to prevent font inconsistencies.\n- For safety, the `\u003Cbody>` has a declared `background-color`, defaulting to `#fff`.\n\n## Native font stack\n\nBootstrap utilizes a \"native font stack\" or \"system font stack\" for optimum text rendering on every device and OS. These system fonts have been designed specifically with today's devices in mind, with improved rendering on screens, variable font support, and more. Read more about [native font stacks in this *Smashing Magazine* article](https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/).\n\n```scss\n$font-family-sans-serif:\n // Cross-platform generic font family (default user interface font)\n system-ui,\n // Safari for macOS and iOS (San Francisco)\n -apple-system,\n // Windows\n \"Segoe UI\",\n // Android\n Roboto,\n // older macOS and iOS\n \"Helvetica Neue\",\n // Linux\n \"Noto Sans\",\n \"Liberation Sans\",\n // Basic web fallback\n Arial,\n // Sans serif fallback\n sans-serif,\n // Emoji fonts\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n```\n\nNote that because the font stack includes emoji fonts, many common symbol/dingbat Unicode characters will be rendered as multicolored pictographs. Their appearance will vary, depending on the style used in the browser/platform's native emoji font, and they won't be affected by any CSS `color` styles.\n\nThis `font-family` is applied to the `\u003Cbody>` and automatically inherited globally throughout Bootstrap. To switch the global `font-family`, update `$font-family-base` and recompile Bootstrap.\n\n## Headings\n\nAll heading elements—`\u003Ch1>`—`\u003Ch6>` have their `margin-top` removed, `margin-bottom: .5rem` set, and `line-height` tightened. While headings inherit their `color` by default, you can also override it via optional CSS variable, `--bs-heading-color`.\n\n\u003CBsTable>\n| Heading | Example |\n| --- | --- |\n| `\u003Ch1>\u003C/h1>` | \u003Cspan class=\"h1\">h1. Bootstrap heading\u003C/span> |\n| `\u003Ch2>\u003C/h2>` | \u003Cspan class=\"h2\">h2. Bootstrap heading\u003C/span> |\n| `\u003Ch3>\u003C/h3>` | \u003Cspan class=\"h3\">h3. Bootstrap heading\u003C/span> |\n| `\u003Ch4>\u003C/h4>` | \u003Cspan class=\"h4\">h4. Bootstrap heading\u003C/span> |\n| `\u003Ch5>\u003C/h5>` | \u003Cspan class=\"h5\">h5. Bootstrap heading\u003C/span> |\n| `\u003Ch6>\u003C/h6>` | \u003Cspan class=\"h6\">h6. Bootstrap heading\u003C/span> |\n\u003C/BsTable>\n\n## Paragraphs\n\nAll `\u003Cp>` elements have their `margin-top` removed and `margin-bottom: 1rem` set for easy spacing.\n\n\u003CExample code={`\u003Cp>This is an example paragraph.\u003C/p>`} />\n\n## Links\n\nLinks have a default `color` and underline applied. While links change on `:hover`, they don't change based on whether someone `:visited` the link. They also receive no special `:focus` styles.\n\n\u003CExample code={`\u003Ca href=\"#\">This is an example link\u003C/a>`} />\n\nAs of v5.3.x, link `color` is set using `rgba()` and new `-rgb` CSS variables, allowing for easy customization of link color opacity. Change the link color opacity with the `--bs-link-opacity` CSS variable:\n\n\u003CExample code={`\u003Ca href=\"#\" style=\"--bs-link-opacity: .5\">This is an example link\u003C/a>`} />\n\n\nPlaceholder links—those without an `href`—are targeted with a more specific selector and have their `color` and `text-decoration` reset to their default values.\n\n\u003CExample code={`\u003Ca>This is a placeholder link\u003C/a>`} />\n\n## Horizontal rules\n\nThe `\u003Chr>` element has been simplified. Similar to browser defaults, `\u003Chr>`s are styled via `border-top`, have a default `opacity: .25`, and automatically inherit their `border-color` via `color`, including when `color` is set via the parent. They can be modified with text, border, and opacity utilities.\n\n\u003CExample code={`\u003Chr>\n\n\u003Cdiv class=\"text-success\">\n \u003Chr>\n\u003C/div>\n\n\u003Chr class=\"border border-danger border-2 opacity-50\">\n\u003Chr class=\"border border-primary border-3 opacity-75\">`} />\n\n## Lists\n\nAll lists—`\u003Cul>`, `\u003Col>`, and `\u003Cdl>`—have their `margin-top` removed and a `margin-bottom: 1rem`. Nested lists have no `margin-bottom`. We've also reset the `padding-left` on `\u003Cul>` and `\u003Col>` elements.\n\n\u003Cdiv class=\"bd-example\">\n* All lists have their top margin removed\n* And their bottom margin normalized\n* Nested lists have no bottom margin\n * This way they have a more even appearance\n * Particularly when followed by more list items\n* The left padding has also been reset\n\n1. Here's an ordered list\n2. With a few list items\n3. It has the same overall look\n4. As the previous unordered list\n\u003C/div>\n\nFor simpler styling, clear hierarchy, and better spacing, description lists have updated `margin`s. `\u003Cdd>`s reset `margin-left` to `0` and add `margin-bottom: .5rem`. `\u003Cdt>`s are **bolded**.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdl>\n \u003Cdt>Description lists\u003C/dt>\n \u003Cdd>A description list is perfect for defining terms.\u003C/dd>\n \u003Cdt>Term\u003C/dt>\n \u003Cdd>Definition for the term.\u003C/dd>\n \u003Cdd>A second definition for the same term.\u003C/dd>\n \u003Cdt>Another term\u003C/dt>\n \u003Cdd>Definition for this other term.\u003C/dd>\n \u003C/dl>\n\u003C/div>\n\n## Inline code\n\nWrap inline snippets of code with `\u003Ccode>`. Be sure to escape HTML angle brackets.\n\n\u003CExample code={`For example, \u003Ccode><section>\u003C/code> should be wrapped as inline.`} />\n\n## Code blocks\n\nUse `\u003Cpre>`s for multiple lines of code. Once again, be sure to escape any angle brackets in the code for proper rendering. The `\u003Cpre>` element is reset to remove its `margin-top` and use `rem` units for its `margin-bottom`.\n\n\u003CExample code={`\u003Cpre>\u003Ccode><p>Sample text here...</p>\n<p>And another line of sample text here...</p>\n\u003C/code>\u003C/pre>`} />\n\n## Variables\n\nFor indicating variables use the `\u003Cvar>` tag.\n\n\u003CExample code={`\u003Cvar>y\u003C/var> = \u003Cvar>m\u003C/var>\u003Cvar>x\u003C/var> + \u003Cvar>b\u003C/var>`} />\n\n## User input\n\nUse the `\u003Ckbd>` to indicate input that is typically entered via keyboard.\n\n\u003CExample code={`To switch directories, type \u003Ckbd>cd\u003C/kbd> followed by the name of the directory.\u003Cbr/>\nTo edit settings, press \u003Ckbd>\u003Ckbd>Ctrl\u003C/kbd> + \u003Ckbd>,\u003C/kbd>\u003C/kbd>`} />\n\n## Sample output\n\nFor indicating sample output from a program use the `\u003Csamp>` tag.\n\n\u003CExample code={`\u003Csamp>This text is meant to be treated as sample output from a computer program.\u003C/samp>`} />\n\n## Tables\n\nTables are slightly adjusted to style `\u003Ccaption>`s, collapse borders, and ensure consistent `text-align` throughout. Additional changes for borders, padding, and more come with [the `.table` class]([[docsref:/content/tables]]).\n\n\u003CExample code={`\u003Ctable>\n \u003Ccaption>\n This is an example table, and this is its caption to describe the contents.\n \u003C/caption>\n \u003Cthead>\n \u003Ctr>\n \u003Cth>Table heading\u003C/th>\n \u003Cth>Table heading\u003C/th>\n \u003Cth>Table heading\u003C/th>\n \u003Cth>Table heading\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>`} />\n\n## Forms\n\nVarious form elements have been rebooted for simpler base styles. Here are some of the most notable changes:\n\n- `\u003Cfieldset>`s have no borders, padding, or margin so they can be easily used as wrappers for individual inputs or groups of inputs.\n- `\u003Clegend>`s, like fieldsets, have also been restyled to be displayed as a heading of sorts.\n- `\u003Clabel>`s are set to `display: inline-block` to allow `margin` to be applied.\n- `\u003Cinput>`s, `\u003Cselect>`s, `\u003Ctextarea>`s, and `\u003Cbutton>`s are mostly addressed by Normalize, but Reboot removes their `margin` and sets `line-height: inherit`, too.\n- `\u003Ctextarea>`s are modified to only be resizable vertically as horizontal resizing often \"breaks\" page layout.\n- `\u003Cbutton>`s and `\u003Cinput>` button elements have `cursor: pointer` when `:not(:disabled)`.\n\nThese changes, and more, are demonstrated below.\n\n\u003CCallout name=\"warning-input-support\" type=\"warning\" />\n\n\u003Cform class=\"bd-example\">\n \u003Cfieldset>\n \u003Clegend>Example legend\u003C/legend>\n \u003Cp>\n \u003Clabel for=\"input\">Example input\u003C/label>\n \u003Cinput type=\"text\" id=\"input\" placeholder=\"Example input\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"email\">Example email\u003C/label>\n \u003Cinput type=\"email\" id=\"email\" placeholder=\"test@example.com\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"tel\">Example telephone\u003C/label>\n \u003Cinput type=\"tel\" id=\"tel\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"url\">Example url\u003C/label>\n \u003Cinput type=\"url\" id=\"url\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"number\">Example number\u003C/label>\n \u003Cinput type=\"number\" id=\"number\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"search\">Example search\u003C/label>\n \u003Cinput type=\"search\" id=\"search\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"range\">Example range\u003C/label>\n \u003Cinput type=\"range\" id=\"range\" min=\"0\" max=\"10\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"file\">Example file input\u003C/label>\n \u003Cinput type=\"file\" id=\"file\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"select\">Example select\u003C/label>\n \u003Cselect id=\"select\">\n \u003Coption value=\"\">Choose...\u003C/option>\n \u003Coptgroup label=\"Option group 1\">\n \u003Coption value=\"\">Option 1\u003C/option>\n \u003Coption value=\"\">Option 2\u003C/option>\n \u003Coption value=\"\">Option 3\u003C/option>\n \u003C/optgroup>\n \u003Coptgroup label=\"Option group 2\">\n \u003Coption value=\"\">Option 4\u003C/option>\n \u003Coption value=\"\">Option 5\u003C/option>\n \u003Coption value=\"\">Option 6\u003C/option>\n \u003C/optgroup>\n \u003C/select>\n \u003C/p>\n \u003Cp>\n \u003Clabel>\n \u003Cinput type=\"checkbox\" value=\"\"/>\n Check this checkbox\n \u003C/label>\n \u003C/p>\n \u003Cp>\n \u003Clabel>\n \u003Cinput type=\"radio\" name=\"optionsRadios\" id=\"optionsRadios1\" value=\"option1\" checked/>\n Option one is this and that\n \u003C/label>\n \u003Clabel>\n \u003Cinput type=\"radio\" name=\"optionsRadios\" id=\"optionsRadios2\" value=\"option2\"/>\n Option two is something else that's also super long to demonstrate the wrapping of these fancy form controls.\n \u003C/label>\n \u003Clabel>\n \u003Cinput type=\"radio\" name=\"optionsRadios\" id=\"optionsRadios3\" value=\"option3\" disabled/>\n Option three is disabled\n \u003C/label>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"textarea\">Example textarea\u003C/label>\n \u003Ctextarea id=\"textarea\" rows=\"3\">\u003C/textarea>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"date\">Example date\u003C/label>\n \u003Cinput type=\"date\" id=\"date\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"time\">Example time\u003C/label>\n \u003Cinput type=\"time\" id=\"time\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"password\">Example password\u003C/label>\n \u003Cinput type=\"password\" id=\"password\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"datetime-local\">Example datetime-local\u003C/label>\n \u003Cinput type=\"datetime-local\" id=\"datetime-local\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"week\">Example week\u003C/label>\n \u003Cinput type=\"week\" id=\"week\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"month\">Example month\u003C/label>\n \u003Cinput type=\"month\" id=\"month\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"color\">Example color\u003C/label>\n \u003Cinput type=\"color\" id=\"color\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"output\">Example output\u003C/label>\n \u003Coutput name=\"result\" id=\"output\">100\u003C/output>\n \u003C/p>\n \u003Cp>\n \u003Cbutton type=\"submit\">Button submit\u003C/button>\n \u003Cinput type=\"submit\" value=\"Input submit button\"/>\n \u003Cinput type=\"reset\" value=\"Input reset button\"/>\n \u003Cinput type=\"button\" value=\"Input button\"/>\n \u003C/p>\n \u003Cp>\n \u003Cbutton type=\"submit\" disabled>Button submit\u003C/button>\n \u003Cinput type=\"submit\" value=\"Input submit button\" disabled/>\n \u003Cinput type=\"reset\" value=\"Input reset button\" disabled/>\n \u003Cinput type=\"button\" value=\"Input button\" disabled/>\n \u003C/p>\n \u003C/fieldset>\n\u003C/form>\n\n### Pointers on buttons\n\nReboot includes an enhancement for `role=\"button\"` to change the default cursor to `pointer`. Add this attribute to elements to help indicate elements are interactive. This role isn't necessary for `\u003Cbutton>` elements, which get their own `cursor` change.\n\n\u003CExample code={`\u003Cspan role=\"button\" tabindex=\"0\">Non-button element button\u003C/span>`} />\n\n## Misc elements\n\n### Address\n\nThe `\u003Caddress>` element is updated to reset the browser default `font-style` from `italic` to `normal`. `line-height` is also now inherited, and `margin-bottom: 1rem` has been added. `\u003Caddress>`s are for presenting contact information for the nearest ancestor (or an entire body of work). Preserve formatting by ending lines with `\u003Cbr/>`.\n\n\u003Cdiv class=\"bd-example\">\n \u003Caddress>\n \u003Cstrong>ACME Corporation\u003C/strong>\u003Cbr/>\n 1123 Fictional St,\u003Cbr/>\n San Francisco, CA 94103\u003Cbr/>\n \u003Cabbr title=\"Phone\">P:\u003C/abbr> (123) 456-7890\n \u003C/address>\n\n \u003Caddress>\n \u003Cstrong>Full Name\u003C/strong>\u003Cbr/>\n \u003Ca href=\"mailto:first.last@example.com\">first.last@example.com\u003C/a>\n \u003C/address>\n\u003C/div>\n\n### Blockquote\n\nThe default `margin` on blockquotes is `1em 40px`, so we reset that to `0 0 1rem` for something more consistent with other elements.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003C/blockquote>\n \u003Cp>Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\u003C/p>\n\u003C/div>\n\n### Inline elements\n\nThe `\u003Cabbr>` element receives basic styling to make it stand out amongst paragraph text.\n\n\u003Cdiv class=\"bd-example\">\n The \u003Cabbr title=\"HyperText Markup Language\">HTML\u003C/abbr> abbreviation element.\n\u003C/div>\n\n### Summary\n\nThe default `cursor` on summary is `text`, so we reset that to `pointer` to convey that the element can be interacted with by clicking on it.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdetails>\n \u003Csummary>Some details\u003C/summary>\n \u003Cp>More info about the details.\u003C/p>\n \u003C/details>\n\n \u003Cdetails open>\n \u003Csummary>Even more details\u003C/summary>\n \u003Cp>Here are even more details about the details.\u003C/p>\n \u003C/details>\n\u003C/div>\n\n## HTML5 `[hidden]` attribute\n\nHTML5 adds [a new global attribute named `[hidden]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden), which is styled as `display: none` by default. Borrowing an idea from [PureCSS](https://purecss.io/), we improve upon this default by making `[hidden] { display: none !important; }` to help prevent its `display` from getting accidentally overridden.\n\n```html\n\u003Cinput type=\"text\" hidden/>\n```\n\n\u003CCallout>\nSince `[hidden]` is not compatible with jQuery's `$(...).hide()` and `$(...).show()` methods, we don't specifically endorse `[hidden]` over other techniques for managing the `display` of elements.\n\u003C/Callout>\n\nTo merely toggle the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document, use [the `.invisible` class]([[docsref:/utilities/visibility]]) instead.","src/content/docs/content/reboot.mdx","93ee6fd27784eb6f","content/reboot.mdx","content/tables",{"id":250,"data":252,"body":255,"filePath":256,"digest":257,"legacyId":258,"deferredRender":139},{"description":253,"title":254,"toc":139},"Documentation and examples for opt-in styling of tables (given their prevalent use in JavaScript plugins) with Bootstrap.","Tables","import { getData } from '@libs/data'\n\n## Overview\n\nDue to the widespread use of `\u003Ctable>` elements across third-party widgets like calendars and date pickers, Bootstrap's tables are **opt-in**. Add the base class `.table` to any `\u003Ctable>`, then extend with our optional modifier classes or custom styles. All table styles are not inherited in Bootstrap, meaning any nested tables can be styled independent from the parent.\n\nUsing the most basic table markup, here's how `.table`-based tables look in Bootstrap.\n\n\u003CTable class=\"table\" simplified={false} />\n\n## Variants\n\nUse contextual classes to color tables, table rows or individual cells.\n\n\u003CCallout>\n**Heads up!** Because of the more complicated CSS used to generate our table variants, they most likely won't see color mode adaptive styling until v6.\n\u003C/Callout>\n\n\u003Cdiv class=\"bd-example\">\n \u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">Class\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">Default\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n {getData('theme-colors').map((themeColor) => {\n return (\n \u003Ctr class={`table-${themeColor.name}`}>\n \u003Cth scope=\"row\">{themeColor.title}\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n )\n })}\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n\u003CCode code={[\n `\u003C!-- On tables -->`,\n ...getData('theme-colors').map((themeColor) => `\u003Ctable class=\"table-${themeColor.name}\">...\u003C/table>`),\n `\n\u003C!-- On rows -->`,\n ...getData('theme-colors').map((themeColor) => `\u003Ctr class=\"table-${themeColor.name}\">...\u003C/tr>`),\n `\n\u003C!-- On cells (\\`td\\` or \\`th\\`) -->\n\u003Ctr>`,\n ...getData('theme-colors').map((themeColor) => ` \u003Ctd class=\"table-${themeColor.name}\">...\u003C/td>`),\n `\u003C/tr>`\n]} lang=\"html\" />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Accented tables\n\n### Striped rows\n\nUse `.table-striped` to add zebra-striping to any table row within the `\u003Ctbody>`.\n\n\u003CTable class=\"table table-striped\" />\n\n### Striped columns\n\nUse `.table-striped-columns` to add zebra-striping to any table column.\n\n\u003CTable class=\"table table-striped-columns\" />\n\nThese classes can also be added to table variants:\n\n\u003CTable class=\"table table-dark table-striped\" />\n\n\u003CTable class=\"table table-dark table-striped-columns\" />\n\n\u003CTable class=\"table table-success table-striped\" />\n\n\u003CTable class=\"table table-success table-striped-columns\" />\n\n### Hoverable rows\n\nAdd `.table-hover` to enable a hover state on table rows within a `\u003Ctbody>`.\n\n\u003CTable class=\"table table-hover\" />\n\n\u003CTable class=\"table table-dark table-hover\" />\n\nThese hoverable rows can also be combined with the striped rows variant:\n\n\u003CTable class=\"table table-striped table-hover\" />\n\n### Active tables\n\nHighlight a table row or cell by adding a `.table-active` class.\n\n\u003Cdiv class=\"bd-example\">\n \u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr class=\"table-active\">\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\" class=\"table-active\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table\">\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr class=\"table-active\">\n ...\n \u003C/tr>\n \u003Ctr>\n ...\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\" class=\"table-active\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n```\n\n\u003Cdiv class=\"bd-example\">\n \u003Ctable class=\"table table-dark\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr class=\"table-active\">\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\" class=\"table-active\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table table-dark\">\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr class=\"table-active\">\n ...\n \u003C/tr>\n \u003Ctr>\n ...\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\" class=\"table-active\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n```\n\n## How do the variants and accented tables work?\n\nFor the accented tables ([striped rows](#striped-rows), [striped columns](#striped-columns), [hoverable rows](#hoverable-rows), and [active tables](#active-tables)), we used some techniques to make these effects work for all our [table variants](#variants):\n\n- We start by setting the background of a table cell with the `--bs-table-bg` custom property. All table variants then set that custom property to colorize the table cells. This way, we don't get into trouble if semi-transparent colors are used as table backgrounds.\n- Then we add an inset box shadow on the table cells with `box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));` to layer on top of any specified `background-color`. It uses custom cascade to override the `box-shadow`, regardless the CSS specificity. Because we use a huge spread and no blur, the color will be monotone. Since `--bs-table-accent-bg` is set to `transparent` by default, we don't have a default box shadow.\n- When either `.table-striped`, `.table-striped-columns`, `.table-hover` or `.table-active` classes are added, either `--bs-table-bg-type` or `--bs-table-bg-state` (by default set to `initial`) are set to a semitransparent color (`--bs-table-striped-bg`, `--bs-table-active-bg` or `--bs-table-hover-bg`) to colorize the background and override default `--bs-table-accent-bg`.\n- For each table variant, we generate a `--bs-table-accent-bg` color with the highest contrast depending on that color. For example, the accent color for `.table-primary` is darker while `.table-dark` has a lighter accent color.\n- Text and border colors are generated the same way, and their colors are inherited by default.\n\nBehind the scenes it looks like this:\n\n\u003CScssDocs name=\"table-variant\" file=\"scss/mixins/_table-variants.scss\" />\n\n## Table borders\n\n### Bordered tables\n\nAdd `.table-bordered` for borders on all sides of the table and cells.\n\n\u003CTable class=\"table table-bordered\" />\n\n[Border color utilities]([[docsref:/utilities/borders#border-color]]) can be added to change colors:\n\n\u003CTable class=\"table table-bordered border-primary\" />\n\n### Tables without borders\n\nAdd `.table-borderless` for a table without borders.\n\n\u003CTable class=\"table table-borderless\" />\n\n\u003CTable class=\"table table-dark table-borderless\" />\n\n## Small tables\n\nAdd `.table-sm` to make any `.table` more compact by cutting all cell `padding` in half.\n\n\u003CTable class=\"table table-sm\" />\n\n\u003CTable class=\"table table-dark table-sm\" />\n\n## Table group dividers\n\nAdd a thicker border, darker between table groups—`\u003Cthead>`, `\u003Ctbody>`, and `\u003Ctfoot>`—with `.table-group-divider`. Customize the color by changing the `border-top-color` (which we don't currently provide a utility class for at this time).\n\n\u003CExample code={`\u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody class=\"table-group-divider\">\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>`} />\n\n## Vertical alignment\n\nTable cells of `\u003Cthead>` are always vertical aligned to the bottom. Table cells in `\u003Ctbody>` inherit their alignment from `\u003Ctable>` and are aligned to the top by default. Use the [vertical align]([[docsref:/utilities/vertical-align]]) classes to re-align where needed.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table align-middle\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\" class=\"w-25\">Heading 1\u003C/th>\n \u003Cth scope=\"col\" class=\"w-25\">Heading 2\u003C/th>\n \u003Cth scope=\"col\" class=\"w-25\">Heading 3\u003C/th>\n \u003Cth scope=\"col\" class=\"w-25\">Heading 4\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd>This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.\u003C/td>\n \u003C/tr>\n \u003Ctr class=\"align-bottom\">\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: bottom;\u003C/code> from the table row\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: bottom;\u003C/code> from the table row\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: bottom;\u003C/code> from the table row\u003C/td>\n \u003Ctd>This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd class=\"align-top\">This cell is aligned to the top.\u003C/td>\n \u003Ctd>This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table align-middle\">\n \u003Cthead>\n \u003Ctr>\n ...\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n ...\n \u003C/tr>\n \u003Ctr class=\"align-bottom\">\n ...\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>...\u003C/td>\n \u003Ctd>...\u003C/td>\n \u003Ctd class=\"align-top\">This cell is aligned to the top.\u003C/td>\n \u003Ctd>...\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n```\n\n## Nesting\n\nBorder styles, active styles, and table variants are not inherited by nested tables.\n\n\u003Cdiv class=\"bd-example\">\n\u003Ctable class=\"table table-striped table-bordered\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd colspan=\"4\">\n \u003Ctable class=\"table mb-0\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">Header\u003C/th>\n \u003Cth scope=\"col\">Header\u003C/th>\n \u003Cth scope=\"col\">Header\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">A\u003C/th>\n \u003Ctd>First\u003C/td>\n \u003Ctd>Last\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">B\u003C/th>\n \u003Ctd>First\u003C/td>\n \u003Ctd>Last\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">C\u003C/th>\n \u003Ctd>First\u003C/td>\n \u003Ctd>Last\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table table-striped table-bordered\">\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003Ctr>\n \u003Ctd colspan=\"4\">\n \u003Ctable class=\"table mb-0\">\n ...\n \u003C/table>\n \u003C/td>\n \u003C/tr>\n ...\n \u003C/tbody>\n\u003C/table>\n```\n\n## How nesting works\n\nTo prevent _any_ styles from leaking to nested tables, we use the child combinator (`>`) selector in our CSS. Since we need to target all the `td`s and `th`s in the `thead`, `tbody`, and `tfoot`, our selector would look pretty long without it. As such, we use the rather odd looking `.table > :not(caption) > * > *` selector to target all `td`s and `th`s of the `.table`, but none of any potential nested tables.\n\nNote that if you add `\u003Ctr>`s as direct children of a table, those `\u003Ctr>` will be wrapped in a `\u003Ctbody>` by default, thus making our selectors work as intended.\n\n## Anatomy\n\n### Table head\n\nSimilar to tables and dark tables, use the modifier classes `.table-light` or `.table-dark` to make `\u003Cthead>`s appear light or dark gray.\n\n\u003Cdiv class=\"bd-example\">\n\u003Ctable class=\"table\">\n \u003Cthead class=\"table-light\">\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table\">\n \u003Cthead class=\"table-light\">\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003C/tbody>\n\u003C/table>\n```\n\n\u003Cdiv class=\"bd-example\">\n\u003Ctable class=\"table\">\n \u003Cthead class=\"table-dark\">\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table\">\n \u003Cthead class=\"table-dark\">\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003C/tbody>\n\u003C/table>\n```\n\n### Table foot\n\n\u003Cdiv class=\"bd-example\">\n\u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003Ctfoot>\n \u003Ctr>\n \u003Ctd>Footer\u003C/td>\n \u003Ctd>Footer\u003C/td>\n \u003Ctd>Footer\u003C/td>\n \u003Ctd>Footer\u003C/td>\n \u003C/tr>\n \u003C/tfoot>\n\u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table\">\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003C/tbody>\n \u003Ctfoot>\n ...\n \u003C/tfoot>\n\u003C/table>\n```\n\n### Captions\n\nA `\u003Ccaption>` functions like a heading for a table. It helps users with screen readers to find a table and understand what it's about and decide if they want to read it.\n\n\u003Cdiv class=\"bd-example\">\n \u003Ctable class=\"table\">\n \u003Ccaption>List of users\u003C/caption>\n \u003CTableContent />\n \u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table table-sm\">\n \u003Ccaption>List of users\u003C/caption>\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003C/tbody>\n\u003C/table>\n```\n\nYou can also put the `\u003Ccaption>` on the top of the table with `.caption-top`.\n\n\u003CExample code={`\u003Ctable class=\"table caption-top\">\n \u003Ccaption>List of users\u003C/caption>\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>`} />\n\n## Responsive tables\n\nResponsive tables allow tables to be scrolled horizontally with ease. Make any table responsive across all viewports by wrapping a `.table` with `.table-responsive`. Or, pick a maximum breakpoint with which to have a responsive table up to by using `.table-responsive{-sm|-md|-lg|-xl|-xxl}`.\n\n\u003CCallout type=\"warning\">\n##### Vertical clipping/truncation\n\nResponsive tables make use of `overflow-y: hidden`, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.\n\u003C/Callout>\n\n### Always responsive\n\nAcross every breakpoint, use `.table-responsive` for horizontally scrolling tables.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table\">\n ...\n \u003C/table>\n\u003C/div>\n```\n\n### Breakpoint specific\n\nUse `.table-responsive{-sm|-md|-lg|-xl|-xxl}` as needed to create responsive tables up to a particular breakpoint. From that breakpoint and up, the table will behave normally and not scroll horizontally.\n\n**These tables may appear broken until their responsive styles apply at specific viewport widths.**\n\n{getData('breakpoints').map((breakpoint) => {\n if (breakpoint.breakpoint === 'xs') {\n return \u003CFragment />\n }\n\n return (\n \u003Cdiv class=\"bd-example\">\n \u003Cdiv class={`table-responsive${breakpoint.abbr}`}>\n \u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n \u003C/div>\n \u003C/div>\n )\n})}\n\n\u003CCode code={getData('breakpoints').map((breakpoint) => `\u003Cdiv class=\"table-responsive${breakpoint.abbr}\">\n \u003Ctable class=\"table\">\n ...\n \u003C/table>\n\u003C/div>\n`)} lang=\"html\" />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"table-variables\" file=\"scss/_variables.scss\" />\n\n### Sass loops\n\n\u003CScssDocs name=\"table-loop\" file=\"scss/_variables.scss\" />\n\n### Customizing\n\n- The factor variables (`$table-striped-bg-factor`, `$table-active-bg-factor` & `$table-hover-bg-factor`) are used to determine the contrast in table variants.\n- Apart from the light & dark table variants, theme colors are lightened by the `$table-bg-scale` variable.","src/content/docs/content/tables.mdx","8e3511c00f6f34f8","content/tables.mdx","content/typography",{"id":259,"data":261,"body":264,"filePath":265,"digest":266,"legacyId":267,"deferredRender":139},{"description":262,"title":263,"toc":139},"Documentation and examples for Bootstrap typography, including global settings, headings, body text, lists, and more.","Typography","## Global settings\n\nBootstrap sets basic global display, typography, and link styles. When more control is needed, check out the [textual utility classes]([[docsref:/utilities/text]]).\n\n- Use a [native font stack]([[docsref:/content/reboot#native-font-stack]]) that selects the best `font-family` for each OS and device.\n- For a more inclusive and accessible type scale, we use the browser's default root `font-size` (typically 16px) so visitors can customize their browser defaults as needed.\n- Use the `$font-family-base`, `$font-size-base`, and `$line-height-base` attributes as our typographic base applied to the `\u003Cbody>`.\n- Set the global link color via `$link-color`.\n- Use `$body-bg` to set a `background-color` on the `\u003Cbody>` (`#fff` by default).\n\nThese styles can be found within `_reboot.scss`, and the global variables are defined in `_variables.scss`. Make sure to set `$font-size-base` in `rem`.\n\n## Headings\n\nAll HTML headings, `\u003Ch1>` through `\u003Ch6>`, are available.\n\n\u003CBsTable>\n| Heading | Example |\n| --- | --- |\n| `\u003Ch1>\u003C/h1>` | \u003Cspan class=\"h1\">h1. Bootstrap heading\u003C/span> |\n| `\u003Ch2>\u003C/h2>` | \u003Cspan class=\"h2\">h2. Bootstrap heading\u003C/span> |\n| `\u003Ch3>\u003C/h3>` | \u003Cspan class=\"h3\">h3. Bootstrap heading\u003C/span> |\n| `\u003Ch4>\u003C/h4>` | \u003Cspan class=\"h4\">h4. Bootstrap heading\u003C/span> |\n| `\u003Ch5>\u003C/h5>` | \u003Cspan class=\"h5\">h5. Bootstrap heading\u003C/span> |\n| `\u003Ch6>\u003C/h6>` | \u003Cspan class=\"h6\">h6. Bootstrap heading\u003C/span> |\n\u003C/BsTable>\n\n```html\n\u003Ch1>h1. Bootstrap heading\u003C/h1>\n\u003Ch2>h2. Bootstrap heading\u003C/h2>\n\u003Ch3>h3. Bootstrap heading\u003C/h3>\n\u003Ch4>h4. Bootstrap heading\u003C/h4>\n\u003Ch5>h5. Bootstrap heading\u003C/h5>\n\u003Ch6>h6. Bootstrap heading\u003C/h6>\n```\n\n`.h1` through `.h6` classes are also available, for when you want to match the font styling of a heading but cannot use the associated HTML element.\n\n\u003CExample code={`\u003Cp class=\"h1\">h1. Bootstrap heading\u003C/p>\n\u003Cp class=\"h2\">h2. Bootstrap heading\u003C/p>\n\u003Cp class=\"h3\">h3. Bootstrap heading\u003C/p>\n\u003Cp class=\"h4\">h4. Bootstrap heading\u003C/p>\n\u003Cp class=\"h5\">h5. Bootstrap heading\u003C/p>\n\u003Cp class=\"h6\">h6. Bootstrap heading\u003C/p>`} />\n\n### Customizing headings\n\nUse the included utility classes to recreate the small secondary heading text from Bootstrap 3.\n\n\u003CExample code={`\u003Ch3>\n Fancy display heading\n \u003Csmall class=\"text-body-secondary\">With faded secondary text\u003C/small>\n\u003C/h3>`} />\n\n## Display headings\n\nTraditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading**—a larger, slightly more opinionated heading style.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"display-1 pb-3 mb-3 border-bottom\">Display 1\u003C/div>\n \u003Cdiv class=\"display-2 pb-3 mb-3 border-bottom\">Display 2\u003C/div>\n \u003Cdiv class=\"display-3 pb-3 mb-3 border-bottom\">Display 3\u003C/div>\n \u003Cdiv class=\"display-4 pb-3 mb-3 border-bottom\">Display 4\u003C/div>\n \u003Cdiv class=\"display-5 pb-3 mb-3 border-bottom\">Display 5\u003C/div>\n \u003Cdiv class=\"display-6\">Display 6\u003C/div>\n\u003C/div>\n\n```html\n\u003Ch1 class=\"display-1\">Display 1\u003C/h1>\n\u003Ch1 class=\"display-2\">Display 2\u003C/h1>\n\u003Ch1 class=\"display-3\">Display 3\u003C/h1>\n\u003Ch1 class=\"display-4\">Display 4\u003C/h1>\n\u003Ch1 class=\"display-5\">Display 5\u003C/h1>\n\u003Ch1 class=\"display-6\">Display 6\u003C/h1>\n```\n\nDisplay headings are configured via the `$display-font-sizes` Sass map and two variables, `$display-font-weight` and `$display-line-height`.\n\nDisplay headings are customizable via two variables, `$display-font-family` and `$display-font-style`.\n\n\u003CScssDocs name=\"display-headings\" file=\"scss/_variables.scss\" />\n\n## Lead\n\nMake a paragraph stand out by adding `.lead`.\n\n\u003CExample code={`\u003Cp class=\"lead\">\n This is a lead paragraph. It stands out from regular paragraphs.\n\u003C/p>`} />\n\n## Inline text elements\n\nStyling for common inline HTML5 elements.\n\n\u003CExample code={`\u003Cp>You can use the mark tag to \u003Cmark>highlight\u003C/mark> text.\u003C/p>\n\u003Cp>\u003Cdel>This line of text is meant to be treated as deleted text.\u003C/del>\u003C/p>\n\u003Cp>\u003Cs>This line of text is meant to be treated as no longer accurate.\u003C/s>\u003C/p>\n\u003Cp>\u003Cins>This line of text is meant to be treated as an addition to the document.\u003C/ins>\u003C/p>\n\u003Cp>\u003Cu>This line of text will render as underlined.\u003C/u>\u003C/p>\n\u003Cp>\u003Csmall>This line of text is meant to be treated as fine print.\u003C/small>\u003C/p>\n\u003Cp>\u003Cstrong>This line rendered as bold text.\u003C/strong>\u003C/p>\n\u003Cp>\u003Cem>This line rendered as italicized text.\u003C/em>\u003C/p>`} />\n\nBeware that those tags should be used for semantic purpose:\n\n- `\u003Cmark>` represents text which is marked or highlighted for reference or notation purposes.\n- `\u003Csmall>` represents side-comments and small print, like copyright and legal text.\n- `\u003Cs>` represents element that are no longer relevant or no longer accurate.\n- `\u003Cu>` represents a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation.\n\nIf you want to style your text, you should use the following classes instead:\n\n- `.mark` will apply the same styles as `\u003Cmark>`.\n- `.small` will apply the same styles as `\u003Csmall>`.\n- `.text-decoration-underline` will apply the same styles as `\u003Cu>`.\n- `.text-decoration-line-through` will apply the same styles as `\u003Cs>`.\n\nWhile not shown above, feel free to use `\u003Cb>` and `\u003Ci>` in HTML5. `\u003Cb>` is meant to highlight words or phrases without conveying additional importance, while `\u003Ci>` is mostly for voice, technical terms, etc.\n\n## Text utilities\n\nChange text alignment, transform, style, weight, line-height, decoration and color with our [text utilities]([[docsref:/utilities/text]]) and [color utilities]([[docsref:/utilities/colors]]).\n\n## Abbreviations\n\nStylized implementation of HTML's `\u003Cabbr>` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations have a default underline and gain a help cursor to provide additional context on hover and to users of assistive technologies.\n\nAdd `.initialism` to an abbreviation for a slightly smaller font-size.\n\n\u003CExample code={`\u003Cp>\u003Cabbr title=\"attribute\">attr\u003C/abbr>\u003C/p>\n\u003Cp>\u003Cabbr title=\"HyperText Markup Language\" class=\"initialism\">HTML\u003C/abbr>\u003C/p>`} />\n\n## Blockquotes\n\nFor quoting blocks of content from another source within your document. Wrap `\u003Cblockquote class=\"blockquote\">` around any HTML as the quote.\n\n\u003CExample code={`\u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n\u003C/blockquote>`} />\n\n### Naming a source\n\nThe HTML spec requires that blockquote attribution be placed outside the `\u003Cblockquote>`. When providing attribution, wrap your `\u003Cblockquote>` in a `\u003Cfigure>` and use a `\u003Cfigcaption>` or a block level element (e.g., `\u003Cp>`) with the `.blockquote-footer` class. Be sure to wrap the name of the source work in `\u003Ccite>` as well.\n\n\u003CExample code={`\u003Cfigure>\n \u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003C/blockquote>\n \u003Cfigcaption class=\"blockquote-footer\">\n Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\n \u003C/figcaption>\n\u003C/figure>`} />\n\n### Alignment\n\nUse text utilities as needed to change the alignment of your blockquote.\n\n\u003CExample code={`\u003Cfigure class=\"text-center\">\n \u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003C/blockquote>\n \u003Cfigcaption class=\"blockquote-footer\">\n Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\n \u003C/figcaption>\n\u003C/figure>`} />\n\n\u003CExample code={`\u003Cfigure class=\"text-end\">\n \u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003C/blockquote>\n \u003Cfigcaption class=\"blockquote-footer\">\n Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\n \u003C/figcaption>\n\u003C/figure>`} />\n\n## Lists\n\n### Unstyled\n\nRemove the default `list-style` and left margin on list items (immediate children only). **This only applies to immediate children list items**, meaning you will need to add the class for any nested lists as well.\n\n\u003CExample code={`\u003Cul class=\"list-unstyled\">\n \u003Cli>This is a list.\u003C/li>\n \u003Cli>It appears completely unstyled.\u003C/li>\n \u003Cli>Structurally, it's still a list.\u003C/li>\n \u003Cli>However, this style only applies to immediate child elements.\u003C/li>\n \u003Cli>Nested lists:\n \u003Cul>\n \u003Cli>are unaffected by this style\u003C/li>\n \u003Cli>will still show a bullet\u003C/li>\n \u003Cli>and have appropriate left margin\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli>This may still come in handy in some situations.\u003C/li>\n\u003C/ul>`} />\n\n### Inline\n\nRemove a list's bullets and apply some light `margin` with a combination of two classes, `.list-inline` and `.list-inline-item`.\n\n\u003CExample code={`\u003Cul class=\"list-inline\">\n \u003Cli class=\"list-inline-item\">This is a list item.\u003C/li>\n \u003Cli class=\"list-inline-item\">And another one.\u003C/li>\n \u003Cli class=\"list-inline-item\">But they're displayed inline.\u003C/li>\n\u003C/ul>`} />\n\n### Description list alignment\n\nAlign terms and descriptions horizontally by using our grid system's predefined classes (or semantic mixins). For longer terms, you can optionally add a `.text-truncate` class to truncate the text with an ellipsis.\n\n\u003CExample code={`\u003Cdl class=\"row\">\n \u003Cdt class=\"col-sm-3\">Description lists\u003C/dt>\n \u003Cdd class=\"col-sm-9\">A description list is perfect for defining terms.\u003C/dd>\n\n \u003Cdt class=\"col-sm-3\">Term\u003C/dt>\n \u003Cdd class=\"col-sm-9\">\n \u003Cp>Definition for the term.\u003C/p>\n \u003Cp>And some more placeholder definition text.\u003C/p>\n \u003C/dd>\n\n \u003Cdt class=\"col-sm-3\">Another term\u003C/dt>\n \u003Cdd class=\"col-sm-9\">This definition is short, so no extra paragraphs or anything.\u003C/dd>\n\n \u003Cdt class=\"col-sm-3 text-truncate\">Truncated term is truncated\u003C/dt>\n \u003Cdd class=\"col-sm-9\">This can be useful when space is tight. Adds an ellipsis at the end.\u003C/dd>\n\n \u003Cdt class=\"col-sm-3\">Nesting\u003C/dt>\n \u003Cdd class=\"col-sm-9\">\n \u003Cdl class=\"row\">\n \u003Cdt class=\"col-sm-4\">Nested definition list\u003C/dt>\n \u003Cdd class=\"col-sm-8\">I heard you like definition lists. Let me put a definition list inside your definition list.\u003C/dd>\n \u003C/dl>\n \u003C/dd>\n\u003C/dl>`} />\n\n## Responsive font sizes\n\nIn Bootstrap 5, we've enabled responsive font sizes by default, allowing text to scale more naturally across device and viewport sizes. Have a look at the [RFS page]([[docsref:/getting-started/rfs]]) to find out how this works.\n\n## CSS\n\n### Sass variables\n\nHeadings have some dedicated variables for sizing and spacing.\n\n\u003CScssDocs name=\"headings-variables\" file=\"scss/_variables.scss\" />\n\nMiscellaneous typography elements covered here and in [Reboot]([[docsref:/content/reboot]]) also have dedicated variables.\n\n\u003CScssDocs name=\"type-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\nThere are no dedicated mixins for typography, but Bootstrap does use [Responsive Font Sizing (RFS)]([[docsref:/getting-started/rfs]]).","src/content/docs/content/typography.mdx","b2c265f7bf9965fc","content/typography.mdx","customize/color-modes",{"id":268,"data":270,"body":275,"filePath":276,"digest":277,"legacyId":278,"deferredRender":139},{"added":271,"description":273,"title":274,"toc":139},{"version":272},"5.3","Bootstrap now supports color modes, or themes, as of v5.3.0. Explore our default light color mode and the new dark mode, or create your own using our styles as your template.","Color modes","import { getDocsRelativePath } from '@libs/path'\n\n\u003CCallout>\n**Try it yourself!** Download the source code and working demo for using Bootstrap with Stylelint, and the color modes from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/color-modes). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/color-modes?file=index.html).\n\u003C/Callout>\n\n## Dark mode\n\n**Bootstrap now supports color modes, starting with dark mode!** With v5.3.0 you can implement your own color mode toggler (see below for an example from Bootstrap's docs) and apply the different color modes as you see fit. We support a light mode (default) and now dark mode. Color modes can be toggled globally on the `\u003Chtml>` element, or on specific components and elements, thanks to the `data-bs-theme` attribute.\n\nAlternatively, you can also switch to a media query implementation thanks to our color mode mixin—see [the usage section for details](#building-with-sass). Heads up though—this eliminates your ability to change themes on a per-component basis as shown below.\n\n## Example\n\nFor example, to change the color mode of a dropdown menu, add `data-bs-theme=\"light\"` or `data-bs-theme=\"dark\"` to the parent `.dropdown`. Now, no matter the global color mode, these dropdowns will display with the specified theme value.\n\n\u003CExample class=\"d-flex justify-content-between\" code={`\u003Cdiv class=\"dropdown\" data-bs-theme=\"light\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButtonLight\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Default dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButtonLight\">\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"dropdown\" data-bs-theme=\"dark\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButtonDark\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dark dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButtonDark\">\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## How it works\n\n- As shown above, color mode styles are controlled by the `data-bs-theme` attribute. This attribute can be applied to the `\u003Chtml>` element, or to any other element or Bootstrap component. If applied to the `\u003Chtml>` element, it will apply to everything. If applied to a component or element, it will be scoped to that specific component or element.\n\n- For each color mode you wish to support, you'll need to add new overrides for the shared global CSS variables. We do this already in our `_root.scss` stylesheet for dark mode, with light mode being the default values. In writing color mode specific styles, use the mixin:\n\n ```scss\n // Color mode variables in _root.scss\n @include color-mode(dark) {\n // CSS variable overrides here...\n }\n ```\n\n- We use a custom `_variables-dark.scss` to power those shared global CSS variable overrides for dark mode. This file isn't required for your own custom color modes, but it's required for our dark mode for two reasons. First, it's better to have a single place to reset global colors. Second, some Sass variables had to be overridden for background images embedded in our CSS for accordions, form components, and more.\n\n## Usage\n\n### Enable dark mode\n\nEnable the built in dark color mode across your entire project by adding the `data-bs-theme=\"dark\"` attribute to the `\u003Chtml>` element. This will apply the dark color mode to all components and elements, other than those with a specific `data-bs-theme` attribute applied. Building on the [quick start template]([[docsref:/getting-started/introduction#quick-start]]):\n\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"en\" data-bs-theme=\"dark\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap demo\u003C/title>\n \u003Clink href=\"[[config:cdn.css]]\" rel=\"stylesheet\" integrity=\"[[config:cdn.css_hash]]\" crossorigin=\"anonymous\">\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, world!\u003C/h1>\n \u003Cscript src=\"[[config:cdn.js_bundle]]\" integrity=\"[[config:cdn.js_bundle_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n \u003C/body>\n\u003C/html>\n```\n\nBootstrap does not yet ship with a built-in color mode picker, but you can use the one from our own documentation if you like. [Learn more in the JavaScript section.](#javascript)\n\n### Building with Sass\n\nOur new dark mode option is available to use for all users of Bootstrap, but it's controlled via data attributes instead of media queries and does not automatically toggle your project's color mode. You can disable our dark mode entirely via Sass by changing `$enable-dark-mode` to `false`.\n\nWe use a custom Sass mixin, `color-mode()`, to help you control _how_ color modes are applied. By default, we use a `data` attribute approach, allowing you to create more user-friendly experiences where your visitors can choose to have an automatic dark mode or control their preference (like in our own docs here). This is also an easy and scalable way to add different themes and more custom color modes beyond light and dark.\n\nIn case you want to use media queries and only make color modes automatic, you can change the mixin's default type via Sass variable. Consider the following snippet and its compiled CSS output.\n\n```scss\n$color-mode-type: data;\n\n@include color-mode(dark) {\n .element {\n color: var(--bs-primary-text-emphasis);\n background-color: var(--bs-primary-bg-subtle);\n }\n}\n```\n\nOutputs to:\n\n```css\n[data-bs-theme=dark] .element {\n color: var(--bs-primary-text-emphasis);\n background-color: var(--bs-primary-bg-subtle);\n}\n```\n\nAnd when setting to `media-query`:\n\n```scss\n$color-mode-type: media-query;\n\n@include color-mode(dark) {\n .element {\n color: var(--bs-primary-text-emphasis);\n background-color: var(--bs-primary-bg-subtle);\n }\n}\n```\n\nOutputs to:\n\n```css\n@media (prefers-color-scheme: dark) {\n .element {\n color: var(--bs-primary-text-emphasis);\n background-color: var(--bs-primary-bg-subtle);\n }\n}\n```\n\n## Custom color modes\n\nWhile the primary use case for color modes is light and dark mode, custom color modes are also possible. Create your own `data-bs-theme` selector with a custom value as the name of your color mode, then modify our Sass and CSS variables as needed. We opted to create a separate `_variables-dark.scss` stylesheet to house Bootstrap's dark mode specific Sass variables, but that's not required for you.\n\nFor example, you can create a \"blue theme\" with the selector `data-bs-theme=\"blue\"`. In your custom Sass or CSS file, add the new selector and override any global or component CSS variables as needed. If you're using Sass, you can also use Sass's functions within your CSS variable overrides.\n\n\u003CScssDocs name=\"custom-color-mode\" file=\"site/src/scss/_content.scss\" />\n\n\u003Cdiv class=\"bd-example text-body bg-body\" data-bs-theme=\"blue\">\n \u003Cdiv class=\"h4\">Example blue theme\u003C/div>\n \u003Cp>Some paragraph text to show how the blue theme might look with written copy.\u003C/p>\n\n \u003Chr class=\"my-4\"/>\n\n \u003Cdiv class=\"dropdown\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButtonCustom\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButtonCustom\">\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv data-bs-theme=\"blue\">\n ...\n\u003C/div>\n```\n\n## JavaScript\n\nTo allow visitors or users to toggle color modes, you'll need to create a toggle element to control the `data-bs-theme` attribute on the root element, `\u003Chtml>`. We've built a toggler in our documentation that initially defers to a user's current system color mode, but provides an option to override that and pick a specific color mode.\n\nHere's a look at the JavaScript that powers it. Feel free to inspect our own documentation navbar to see how it's implemented using HTML and CSS from our own components. It is suggested to include the JavaScript at the top of your page to reduce potential screen flickering during reloading of your site. Note that if you decide to use media queries for your color modes, your JavaScript may need to be modified or removed if you prefer an implicit control.\n\n\u003CCode containerClass=\"bd-example-snippet\" lang=\"js\" filePath={getDocsRelativePath('/static/docs/[version]/assets/js/color-modes.js')} />\n\n## Adding theme colors\n\nAdding a new color in `$theme-colors` is not enough for some of our components like [alerts]([[docsref:/components/alerts]]) and [list groups]([[docsref:/components/list-group]]). New colors must also be defined in `$theme-colors-text`, `$theme-colors-bg-subtle`, and `$theme-colors-border-subtle` for light theme; but also in `$theme-colors-text-dark`, `$theme-colors-bg-subtle-dark`, and `$theme-colors-border-subtle-dark` for dark theme.\n\nThis is a manual process because Sass cannot generate its own Sass variables from an existing variable or map. In future versions of Bootstrap, we'll revisit this setup to reduce the duplication.\n\n```scss\n// Required\n@import \"functions\";\n@import \"variables\";\n@import \"variables-dark\";\n\n// Add a custom color to $theme-colors\n$custom-colors: (\n \"custom-color\": #712cf9\n);\n$theme-colors: map-merge($theme-colors, $custom-colors);\n\n@import \"maps\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Add a custom color to new theme maps\n\n// Light mode\n$custom-colors-text: (\"custom-color\": #712cf9);\n$custom-colors-bg-subtle: (\"custom-color\": #e1d2fe);\n$custom-colors-border-subtle: (\"custom-color\": #bfa1fc);\n\n$theme-colors-text: map-merge($theme-colors-text, $custom-colors-text);\n$theme-colors-bg-subtle: map-merge($theme-colors-bg-subtle, $custom-colors-bg-subtle);\n$theme-colors-border-subtle: map-merge($theme-colors-border-subtle, $custom-colors-border-subtle);\n\n// Dark mode\n$custom-colors-text-dark: (\"custom-color\": #e1d2f2);\n$custom-colors-bg-subtle-dark: (\"custom-color\": #8951fa);\n$custom-colors-border-subtle-dark: (\"custom-color\": #e1d2f2);\n\n$theme-colors-text-dark: map-merge($theme-colors-text-dark, $custom-colors-text-dark);\n$theme-colors-bg-subtle-dark: map-merge($theme-colors-bg-subtle-dark, $custom-colors-bg-subtle-dark);\n$theme-colors-border-subtle-dark: map-merge($theme-colors-border-subtle-dark, $custom-colors-border-subtle-dark);\n\n// Remainder of Bootstrap imports\n@import \"root\";\n@import \"reboot\";\n// etc\n```\n\n## CSS\n\n### Variables\n\nDozens of root level CSS variables are repeated as overrides for dark mode. These are scoped to the color mode selector, which defaults to `data-bs-theme` but [can be configured](#building-with-sass) to use a `prefers-color-scheme` media query. Use these variables as a guideline for generating your own new color modes.\n\n\u003CScssDocs name=\"root-dark-mode-vars\" file=\"scss/_root.scss\" />\n\n### Sass variables\n\nCSS variables for our dark color mode are partially generated from dark mode specific Sass variables in `_variables-dark.scss`. This also includes some custom overrides for changing the colors of embedded SVGs used throughout our components.\n\n\u003CScssDocs name=\"sass-dark-mode-vars\" file=\"scss/_variables-dark.scss\" />\n\n### Sass mixins\n\nStyles for dark mode, and any custom color modes you create, can be scoped appropriately to the `data-bs-theme` attribute selector or media query with the customizable `color-mode()` mixin. See the [Sass usage section](#building-with-sass) for more details.\n\n\u003CScssDocs name=\"color-mode-mixin\" file=\"scss/mixins/_color-mode.scss\" />","src/content/docs/customize/color-modes.mdx","b17e4c61de6235f1","customize/color-modes.mdx","customize/color",{"id":279,"data":281,"body":284,"filePath":285,"digest":286,"legacyId":287,"deferredRender":139},{"description":282,"title":283,"toc":139},"Bootstrap is supported by an extensive color system that themes our styles and components. This enables more comprehensive customization and extension for any project.","Color","import { getData } from '@libs/data'\nimport { getSequence } from '@libs/utils'\n\n## Colors\n\n\u003CAddedIn version=\"5.3.0\" />\n\nBootstrap's color palette has continued to expand and become more nuanced in v5.3.0. We've added new variables for `secondary` and `tertiary` text and background colors, plus `{color}-bg-subtle`, `{color}-border-subtle`, and `{color}-text-emphasis` for our theme colors. These new colors are available through Sass and CSS variables (but not our color maps or utility classes) with the express goal of making it easier to customize across multiple colors modes like light and dark. These new variables are globally set on `:root` and are adapted for our new dark color mode while our original theme colors remain unchanged.\n\nColors ending in `-rgb` provide the `red, green, blue` values for use in `rgb()` and `rgba()` color modes. For example, `rgba(var(--bs-secondary-bg-rgb), .5)`.\n\n\u003CCallout type=\"warning\">\n**Heads up!** There's some potential confusion with our new secondary and tertiary colors, and our existing secondary theme color, as well as our light and dark theme colors. Expect this to be ironed out in v6.\n\u003C/Callout>\n\n\u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table table-swatches\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth style=\"width: 340px;\">Description\u003C/th>\n \u003Cth style=\"width: 200px;\" class=\"ps-0\">Swatch\u003C/th>\n \u003Cth>Variables\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Ctd rowspan=\"2\">\n **Body —** Default foreground (color) and background, including components.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-body-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-body-color`\u003Cbr/>`--bs-body-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2 border\" style=\"background-color: var(--bs-body-bg);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-body-bg`\u003Cbr/>`--bs-body-bg-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"2\">\n **Secondary —** Use the `color` option for lighter text. Use the `bg` option for dividers and to indicate disabled component states.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-secondary-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-secondary-color`\u003Cbr/>`--bs-secondary-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2 border\" style=\"background-color: var(--bs-secondary-bg);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-secondary-bg`\u003Cbr/>`--bs-secondary-bg-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"2\">\n **Tertiary —** Use the `color` option for even lighter text. Use the `bg` option to style backgrounds for hover states, accents, and wells.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-tertiary-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-tertiary-color`\u003Cbr/>`--bs-tertiary-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2 border\" style=\"background-color: var(--bs-tertiary-bg);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-tertiary-bg`\u003Cbr/>`--bs-tertiary-bg-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n **Emphasis —** For higher contrast text. Not applicable for backgrounds.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-emphasis-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-emphasis-color`\u003Cbr/>`--bs-emphasis-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n **Border —** For component borders, dividers, and rules. Use `--bs-border-color-translucent` to blend with backgrounds with an `rgba()` value.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-border-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-border-color`\u003Cbr/>`--bs-border-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Primary —** Main theme color, used for hyperlinks, focus styles, and component and form active states.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-primary\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-primary`\u003Cbr/>`--bs-primary-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-primary-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-primary-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-primary-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-primary-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-primary-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-primary-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Success —** Theme color used for positive or successful actions and information.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-success\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-success`\u003Cbr/>`--bs-success-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-success-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-success-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-success-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-success-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-success-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-success-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Danger —** Theme color used for errors and dangerous actions.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-danger\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-danger`\u003Cbr/>`--bs-danger-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-danger-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-danger-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-danger-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-danger-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-danger-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-danger-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Warning —** Theme color used for non-destructive warning messages.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-warning\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-warning`\u003Cbr/>`--bs-warning-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-warning-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-warning-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-warning-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-warning-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-warning-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-warning-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Info —** Theme color used for neutral and informative content.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-info\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-info`\u003Cbr/>`--bs-info-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-info-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-info-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-info-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-info-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-info-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-info-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Light —** Additional theme option for less contrasting colors.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-light\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-light`\u003Cbr/>`--bs-light-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-light-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-light-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-light-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-light-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-light-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-light-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Dark —** Additional theme option for higher contrasting colors.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-dark\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-dark`\u003Cbr/>`--bs-dark-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-dark-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-dark-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-dark-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-dark-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-dark-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-dark-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n### Using the new colors\n\nThese new colors are accessible via CSS variables and utility classes—like `--bs-primary-bg-subtle` and `.bg-primary-subtle`—allowing you to compose your own CSS rules with the variables, or to quickly apply styles via classes. The utilities are built with the color's associated CSS variables, and since we customize those CSS variables for dark mode, they are also adaptive to color mode by default.\n\n\u003CExample code={`\u003Cdiv class=\"p-3 text-primary-emphasis bg-primary-subtle border border-primary-subtle rounded-3\">\n Example element with utilities\n\u003C/div>`} />\n\n### Theme colors\n\nWe use a subset of all colors to create a smaller color palette for generating color schemes, also available as Sass variables and a Sass map in Bootstrap's `scss/_variables.scss` file.\n\n\u003Cdiv class=\"row\">\n {getData('theme-colors').map((themeColor) => {\n return (\n \u003Cdiv class=\"col-md-4\">\n \u003Cdiv class={`p-3 mb-3 text-bg-${themeColor.name} rounded-3`}>{themeColor.title}\u003C/div>\n \u003C/div>\n )\n })}\n\u003C/div>\n\nAll these colors are available as a Sass map, `$theme-colors`.\n\n\u003CScssDocs name=\"theme-colors-map\" file=\"scss/_variables.scss\" />\n\nCheck out [our Sass maps and loops docs]([[docsref:/customize/sass#maps-and-loops]]) for how to modify these colors.\n\n### All colors\n\nAll Bootstrap colors are available as Sass variables and a Sass map in `scss/_variables.scss` file. To avoid increased file sizes, we don't create text or background color classes for each of these variables. Instead, we choose a subset of these colors for a [theme palette](#theme-colors).\n\nBe sure to monitor contrast ratios as you customize colors. As shown below, we've added three contrast ratios to each of the main colors—one for the swatch's current colors, one for against white, and one for against black.\n\n\u003Cdiv class=\"row font-monospace\">\n {getData('colors').map((color) => {\n if ((color.name !== \"white\") && (color.name !== \"gray\") && (color.name !== \"gray-dark\")) {\n return (\n \u003Cdiv class=\"col-md-4 mb-3\">\n \u003Cdiv class={`p-3 mb-2 position-relative swatch-${color.name}`}>\n \u003Cstrong class=\"d-block\">${color.name}\u003C/strong>\n {color.hex}\n \u003C/div>\n\n {getSequence(100, 900, 100).map((value) => {\n return (\n \u003Cdiv class={`p-3 bd-${color.name}-${value}`}>${color.name}-{value}\u003C/div>\n )\n })}\n \u003C/div>\n )\n }\n })}\n\n \u003Cdiv class=\"col-md-4 mb-3\">\n \u003Cdiv class=\"p-3 mb-2 position-relative swatch-gray-500\">\u003Cstrong class=\"d-block\">$gray-500\u003C/strong>#adb5bd\u003C/div>\n {getData('grays').map((gray) => {\n return (\n \u003Cdiv class={`p-3 bd-gray-${gray.name}`}>$gray-{gray.name}\u003C/div>\n )\n })}\n \u003C/div>\n\n \u003Cdiv class=\"col-md-4 mb-3\">\n \u003Cdiv class=\"p-3 mb-2 bd-black text-white\">\n \u003Cstrong class=\"d-block\">$black\u003C/strong>\n #000\n \u003C/div>\n \u003Cdiv class=\"p-3 mb-2 bd-white border\">\n \u003Cstrong class=\"d-block\">$white\u003C/strong>\n #fff\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n### Notes on Sass\n\nSass cannot programmatically generate variables, so we manually created variables for every tint and shade ourselves. We specify the midpoint value (e.g., `$blue-500`) and use custom color functions to tint (lighten) or shade (darken) our colors via Sass's `mix()` color function.\n\nUsing `mix()` is not the same as `lighten()` and `darken()`—the former blends the specified color with white or black, while the latter only adjusts the lightness value of each color. The result is a much more complete suite of colors, as [shown in this CodePen demo](https://codepen.io/emdeoh/pen/zYOQOPB).\n\nOur `tint-color()` and `shade-color()` functions use `mix()` alongside our `$theme-color-interval` variable, which specifies a stepped percentage value for each mixed color we produce. See the `scss/_functions.scss` and `scss/_variables.scss` files for the full source code.\n\n## Color Sass maps\n\nBootstrap's source Sass files include three maps to help you quickly and easily loop over a list of colors and their hex values.\n\n- `$colors` lists all our available base (`500`) colors\n- `$theme-colors` lists all semantically named theme colors (shown below)\n- `$grays` lists all tints and shades of gray\n\nWithin `scss/_variables.scss`, you'll find Bootstrap's color variables and Sass map. Here's an example of the `$colors` Sass map:\n\n\u003CScssDocs name=\"colors-map\" file=\"scss/_variables.scss\" />\n\nAdd, remove, or modify values within the map to update how they're used in many other components. Unfortunately at this time, not _every_ component utilizes this Sass map. Future updates will strive to improve upon this. Until then, plan on making use of the `${color}` variables and this Sass map.\n\n### Example\n\nHere's how you can use these in your Sass:\n\n```scss\n.alpha { color: $purple; }\n.beta {\n color: $yellow-300;\n background-color: $indigo-900;\n}\n```\n\n[Color]([[docsref:/utilities/colors]]) and [background]([[docsref:/utilities/background]]) utility classes are also available for setting `color` and `background-color` using the `500` color values.\n\n## Generating utilities\n\n\u003CAddedIn version=\"5.1.0\"/>\n\nBootstrap doesn't include `color` and `background-color` utilities for every color variable, but you can generate these yourself with our [utility API]([[docsref:/utilities/api]]) and our extended Sass maps added in v5.1.0.\n\n1. To start, make sure you've imported our functions, variables, mixins, and utilities.\n2. Use our `map-merge-multiple()` function to quickly merge multiple Sass maps together in a new map.\n3. Merge this new combined map to extend any utility with a `{color}-{level}` class name.\n\nHere's an example that generates text color utilities (e.g., `.text-purple-500`) using the above steps.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$all-colors: map-merge-multiple($blues, $indigos, $purples, $pinks, $reds, $oranges, $yellows, $greens, $teals, $cyans);\n\n$utilities: map-merge(\n $utilities,\n (\n \"color\": map-merge(\n map-get($utilities, \"color\"),\n (\n values: map-merge(\n map-get(map-get($utilities, \"color\"), \"values\"),\n (\n $all-colors\n ),\n ),\n ),\n ),\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\nThis will generate new `.text-{color}-{level}` utilities for every color and level. You can do the same for any other utility and property as well.","src/content/docs/customize/color.mdx","ee7e14b66b69aada","customize/color.mdx","customize/components",{"id":288,"data":290,"body":293,"filePath":294,"digest":295,"legacyId":296,"deferredRender":139},{"description":291,"title":292,"toc":139},"Learn how and why we build nearly all our components responsively and with base and modifier classes.","Components","## Base classes\n\nBootstrap's components are largely built with a base-modifier nomenclature. We group as many shared properties as possible into a base class, like `.btn`, and then group individual styles for each variant into modifier classes, like `.btn-primary` or `.btn-success`.\n\nTo build our modifier classes, we use Sass's `@each` loops to iterate over a Sass map. This is especially helpful for generating variants of a component by our `$theme-colors` and creating responsive variants for each breakpoint. As you customize these Sass maps and recompile, you'll automatically see your changes reflected in these loops.\n\nCheck out [our Sass maps and loops docs]([[docsref:/customize/sass#maps-and-loops]]) for how to customize these loops and extend Bootstrap's base-modifier approach to your own code.\n\n## Modifiers\n\nMany of Bootstrap's components are built with a base-modifier class approach. This means the bulk of the styling is contained to a base class (e.g., `.btn`) while style variations are confined to modifier classes (e.g., `.btn-danger`). These modifier classes are built from the `$theme-colors` map to make customizing the number and name of our modifier classes.\n\nHere are two examples of how we loop over the `$theme-colors` map to generate modifiers to the `.alert` and `.list-group` components.\n\n\u003CScssDocs name=\"alert-modifiers\" file=\"scss/_alert.scss\" />\n\n\u003CScssDocs name=\"list-group-modifiers\" file=\"scss/_list-group.scss\" />\n\n## Responsive\n\nThese Sass loops aren't limited to color maps, either. You can also generate responsive variations of your components. Take for example our responsive alignment of the dropdowns where we mix an `@each` loop for the `$grid-breakpoints` Sass map with a media query include.\n\n\u003CScssDocs name=\"responsive-breakpoints\" file=\"scss/_dropdown.scss\" />\n\nShould you modify your `$grid-breakpoints`, your changes will apply to all the loops iterating over that map.\n\n\u003CScssDocs name=\"grid-breakpoints\" file=\"scss/_variables.scss\" />\n\nFor more information and examples on how to modify our Sass maps and variables, please refer to [the CSS section of the Grid documentation]([[docsref:/layout/grid#css]]).\n\n## Creating your own\n\nWe encourage you to adopt these guidelines when building with Bootstrap to create your own components. We've extended this approach ourselves to the custom components in our documentation and examples. Components like our callouts are built just like our provided components with base and modifier classes.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"bd-callout my-0\">\n \u003Cstrong>This is a callout.\u003C/strong> We built it custom for our docs so our messages to you stand out. It has three variants via modifier classes.\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"callout\">...\u003C/div>\n```\n\nIn your CSS, you'd have something like the following where the bulk of the styling is done via `.callout`. Then, the unique styles between each variant is controlled via modifier class.\n\n```scss\n// Base class\n.callout {}\n\n// Modifier classes\n.callout-info {}\n.callout-warning {}\n.callout-danger {}\n```\n\nFor the callouts, that unique styling is just a `border-left-color`. When you combine that base class with one of those modifier classes, you get your complete component family:\n\n\u003CCallout>\n**This is an info callout.** Example text to show it in action.\n\u003C/Callout>\n\n\u003CCallout type=\"warning\">\n**This is a warning callout.** Example text to show it in action.\n\u003C/Callout>\n\n\u003CCallout type=\"danger\">\n**This is a danger callout.** Example text to show it in action.\n\u003C/Callout>","src/content/docs/customize/components.mdx","657efb0c87e1c280","customize/components.mdx","customize/css-variables",{"id":297,"data":299,"body":302,"filePath":303,"digest":304,"legacyId":305,"deferredRender":139},{"description":300,"title":301,"toc":139},"Use Bootstrap's CSS custom properties for fast and forward-looking design and development.","CSS variables","Bootstrap includes many [CSS custom properties (variables)](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) in its compiled CSS for real-time customization without the need to recompile Sass. These provide easy access to commonly used values like our theme colors, breakpoints, and primary font stacks when working in your browser's inspector, a code sandbox, or general prototyping.\n\n**All our custom properties are prefixed with `bs-`** to avoid conflicts with third party CSS.\n\n## Root variables\n\nHere are the variables we include (note that the `:root` is required) that can be accessed anywhere Bootstrap's CSS is loaded. They're located in our `_root.scss` file and included in our compiled dist files.\n\n### Default\n\nThese CSS variables are available everywhere, regardless of color mode.\n\n\u003CCode lang=\"css\" filePath=\"dist/css/bootstrap.css\" fileMatch=\":(root,\\n\\[data-bs-theme=light\\] {[^}]*})\" />\n\n### Dark mode\n\nThese variables are scoped to our built-in dark mode.\n\n\u003CCode lang=\"css\" filePath=\"dist/css/bootstrap.css\" fileMatch=\"(\\[data-bs-theme=dark\\] {[^}]*})\" />\n\n## Component variables\n\nBootstrap 5 is increasingly making use of custom properties as local variables for various components. This way we reduce our compiled CSS, ensure styles aren't inherited in places like nested tables, and allow some basic restyling and extending of Bootstrap components after Sass compilation.\n\nHave a look at our table documentation for some [insight into how we're using CSS variables]([[docsref:/content/tables#how-do-the-variants-and-accented-tables-work]]). Our [navbars also use CSS variables]([[docsref:/components/navbar#css]]) as of v5.2.0. We're also using CSS variables across our grids—primarily for gutters the [new opt-in CSS grid]([[docsref:/layout/css-grid]])—with more component usage coming in the future.\n\nWhenever possible, we'll assign CSS variables at the base component level (e.g., `.navbar` for navbar and its sub-components). This reduces guessing on where and how to customize, and allows for easy modifications by our team in future updates.\n\n## Prefix\n\nMost CSS variables use a prefix to avoid collisions with your own codebase. This prefix is in addition to the `--` that's required on every CSS variable.\n\nCustomize the prefix via the `$prefix` Sass variable. By default, it's set to `bs-` (note the trailing dash).\n\n## Examples\n\nCSS variables offer similar flexibility to Sass's variables, but without the need for compilation before being served to the browser. For example, here we're resetting our page's font and link styles with CSS variables.\n\n```css\nbody {\n font: 1rem/1.5 var(--bs-font-sans-serif);\n}\na {\n color: var(--bs-blue);\n}\n```\n\n## Focus variables\n\n\u003CAddedIn version=\"5.3.0\"/>\n\nBootstrap provides custom `:focus` styles using a combination of Sass and CSS variables that can be optionally added to specific components and elements. We do not yet globally override all `:focus` styles.\n\nIn our Sass, we set default values that can be customized before compiling.\n\n\u003CScssDocs name=\"focus-ring-variables\" file=\"scss/_variables.scss\" />\n\nThose variables are then reassigned to `:root` level CSS variables that can be customized in real-time, including with options for `x` and `y` offsets (which default to their fallback value of `0`).\n\n\u003CScssDocs name=\"root-focus-variables\" file=\"scss/_root.scss\" />\n\n## Grid breakpoints\n\nWhile we include our grid breakpoints as CSS variables (except for `xs`), be aware that **CSS variables do not work in media queries**. This is by design in the CSS spec for variables, but may change in coming years with support for `env()` variables. Check out [this Stack Overflow answer](https://stackoverflow.com/a/47212942) for some helpful links. In the meantime, you can use these variables in other CSS situations, as well as in your JavaScript.","src/content/docs/customize/css-variables.mdx","6823245e65e2f4cf","customize/css-variables.mdx","customize/optimize",{"id":306,"data":308,"body":311,"filePath":312,"digest":313,"legacyId":314,"deferredRender":139},{"description":309,"title":310,"toc":139},"Keep your projects lean, responsive, and maintainable so you can deliver the best experience and focus on more important jobs.","Optimize","## Lean Sass imports\n\nWhen using Sass in your asset pipeline, make sure you optimize Bootstrap by only `@import`ing the components you need. Your largest optimizations will likely come from the `Layout & Components` section of our `bootstrap.scss`.\n\n\u003CScssDocs name=\"import-stack\" file=\"scss/bootstrap.scss\" />\n\n\nIf you're not using a component, comment it out or delete it entirely. For example, if you're not using the carousel, remove that import to save some file size in your compiled CSS. Keep in mind there are some dependencies across Sass imports that may make it more difficult to omit a file.\n\n## Lean JavaScript\n\nBootstrap's JavaScript includes every component in our primary dist files (`bootstrap.js` and `bootstrap.min.js`), and even our primary dependency (Popper) with our bundle files (`bootstrap.bundle.js` and `bootstrap.bundle.min.js`). While you're customizing via Sass, be sure to remove related JavaScript.\n\nFor instance, assuming you're using your own JavaScript bundler like Webpack, Parcel, or Vite, you'd only import the JavaScript you plan on using. In the example below, we show how to just include our modal JavaScript:\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```js\n// Import just what we need\n\n// import 'bootstrap/js/dist/alert';\n// import 'bootstrap/js/dist/button';\n// import 'bootstrap/js/dist/carousel';\n// import 'bootstrap/js/dist/collapse';\n// import 'bootstrap/js/dist/dropdown';\nimport 'bootstrap/js/dist/modal';\n// import 'bootstrap/js/dist/offcanvas';\n// import 'bootstrap/js/dist/popover';\n// import 'bootstrap/js/dist/scrollspy';\n// import 'bootstrap/js/dist/tab';\n// import 'bootstrap/js/dist/toast';\n// import 'bootstrap/js/dist/tooltip';\n```\n\nThis way, you're not including any JavaScript you don't intend to use for components like buttons, carousels, and tooltips. If you're importing dropdowns, tooltips or popovers, be sure to list the Popper dependency in your `package.json` file.\n\n\u003CCallout>\n**Heads up!** Files in `bootstrap/js/dist` use the **default export**. To use them, do the following:\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```js\nimport Modal from 'bootstrap/js/dist/modal'\nconst modal = new Modal(document.getElementById('myModal'))\n```\n\u003C/Callout>\n\n## Autoprefixer .browserslistrc\n\nBootstrap depends on Autoprefixer to automatically add browser prefixes to certain CSS properties. Prefixes are dictated by our `.browserslistrc` file, found in the root of the Bootstrap repo. Customizing this list of browsers and recompiling the Sass will automatically remove some CSS from your compiled CSS, if there are vendor prefixes unique to that browser or version.\n\n## Unused CSS\n\n_Help wanted with this section, please consider opening a PR. Thanks!_\n\nWhile we don't have a prebuilt example for using [PurgeCSS](https://github.com/FullHuman/purgecss) with Bootstrap, there are some helpful articles and walkthroughs that the community has written. Here are some options:\n\n- https://medium.com/dwarves-foundation/remove-unused-css-styles-from-bootstrap-using-purgecss-88395a2c5772\n- https://lukelowrey.com/automatically-removeunused-css-from-bootstrap-or-other-frameworks\n\nLastly, this [CSS Tricks article on unused CSS](https://css-tricks.com/how-do-you-remove-unused-css-from-a-site/) shows how to use PurgeCSS and other similar tools.\n\n## Minify and gzip\n\nWhenever possible, be sure to compress all the code you serve to your visitors. If you're using Bootstrap dist files, try to stick to the minified versions (indicated by the `.min.css` and `.min.js` extensions). If you're building Bootstrap from the source with your own build system, be sure to implement your own minifiers for HTML, CSS, and JS.\n\n## Non-blocking files\n\nWhile minifying and using compression might seem like enough, making your files non-blocking ones is also a big step in making your site well-optimized and fast enough.\n\nIf you are using a [Lighthouse](https://developer.chrome.com/docs/lighthouse/overview/) plugin in Google Chrome, you may have stumbled over FCP. [The First Contentful Paint](https://web.dev/articles/fcp) metric measures the time from when the page starts loading to when any part of the page's content is rendered on the screen.\n\nYou can improve FCP by deferring non-critical JavaScript or CSS. What does that mean? Simply, JavaScript or stylesheets that don't need to be present on the first paint of your page should be marked with `async` or `defer` attributes.\n\nThis ensures that the less important resources are loaded later and not blocking the first paint. On the other hand, critical resources can be included as inline scripts or styles.\n\nIf you want to learn more about this, there are already a lot of great articles about it:\n\n- https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/\n- https://web.dev/articles/defer-non-critical-css\n\n## Always use HTTPS\n\nYour website should only be available over HTTPS connections in production. HTTPS improves the security, privacy, and availability of all sites, and [there is no such thing as non-sensitive web traffic](https://https.cio.gov/everything/). The steps to configure your website to be served exclusively over HTTPS vary widely depending on your architecture and web hosting provider, and thus are beyond the scope of these docs.\n\nSites served over HTTPS should also access all stylesheets, scripts, and other assets over HTTPS connections. Otherwise, you'll be sending users [mixed active content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content), leading to potential vulnerabilities where a site can be compromised by altering a dependency. This can lead to security issues and in-browser warnings displayed to users. Whether you're getting Bootstrap from a CDN or serving it yourself, ensure that you only access it over HTTPS connections.","src/content/docs/customize/optimize.mdx","254b0925b45ba2b8","customize/optimize.mdx","customize/options",{"id":315,"data":317,"body":320,"filePath":321,"digest":322,"legacyId":323,"deferredRender":139},{"description":318,"title":319},"Quickly customize Bootstrap with built-in variables to easily toggle global CSS preferences for controlling style and behavior.","Options","Customize Bootstrap with our built-in custom variables file and easily toggle global CSS preferences with new `$enable-*` Sass variables. Override a variable's value and recompile with `npm run test` as needed.\n\nYou can find and customize these variables for key global options in Bootstrap's `scss/_variables.scss` file.\n\n\u003CBsTable class=\"table table-options\">\n| Variable | Values | Description |\n| ------------------------------ | ---------------------------------- | -------------------------------------------------------------------------------------- |\n| `$spacer` | `1rem` (default), or any value > 0 | Specifies the default spacer value to programmatically generate our [spacer utilities]([[docsref:/utilities/spacing]]). |\n| `$enable-dark-mode` | `true` (default) or `false` | Enables built-in [dark mode support]([[docsref:/customize/color-modes#dark-mode]]) across the project and its components. |\n| `$enable-rounded` | `true` (default) or `false` | Enables predefined `border-radius` styles on various components. |\n| `$enable-shadows` | `true` or `false` (default) | Enables predefined decorative `box-shadow` styles on various components. Does not affect `box-shadow`s used for focus states. |\n| `$enable-gradients` | `true` or `false` (default) | Enables predefined gradients via `background-image` styles on various components. |\n| `$enable-transitions` | `true` (default) or `false` | Enables predefined `transition`s on various components. |\n| `$enable-reduced-motion` | `true` (default) or `false` | Enables the [`prefers-reduced-motion` media query]([[docsref:/getting-started/accessibility#reduced-motion]]), which suppresses certain animations/transitions based on the users' browser/operating system preferences. |\n| `$enable-grid-classes` | `true` (default) or `false` | Enables the generation of CSS classes for the grid system (e.g. `.row`, `.col-md-1`, etc.). |\n| `$enable-cssgrid` | `true` or `false` (default) | Enables the experimental CSS Grid system (e.g. `.grid`, `.g-col-md-1`, etc.). |\n| `$enable-container-classes` | `true` (default) or `false` | Enables the generation of CSS classes for layout containers. (New in v5.2.0) |\n| `$enable-caret` | `true` (default) or `false` | Enables pseudo element caret on `.dropdown-toggle`. |\n| `$enable-button-pointers` | `true` (default) or `false` | Add \"hand\" cursor to non-disabled button elements. |\n| `$enable-rfs` | `true` (default) or `false` | Globally enables [RFS]([[docsref:/getting-started/rfs]]). |\n| `$enable-validation-icons` | `true` (default) or `false` | Enables `background-image` icons within textual inputs and some custom forms for validation states. |\n| `$enable-negative-margins` | `true` or `false` (default) | Enables the generation of [negative margin utilities]([[docsref:/utilities/spacing#negative-margin]]). |\n| `$enable-deprecation-messages` | `true` (default) or `false` | Set to `false` to hide warnings when using any of the deprecated mixins and functions that are planned to be removed in `v6`. |\n| `$enable-important-utilities` | `true` (default) or `false` | Enables the `!important` suffix in utility classes. |\n| `$enable-smooth-scroll` | `true` (default) or `false` | Applies `scroll-behavior: smooth` globally, except for users asking for reduced motion through [`prefers-reduced-motion` media query]([[docsref:/getting-started/accessibility#reduced-motion]]) |\n\u003C/BsTable>","src/content/docs/customize/options.mdx","afd90d6916d4e702","customize/options.mdx","customize/overview",{"id":324,"data":326,"body":346,"filePath":347,"digest":348,"legacyId":349,"deferredRender":139},{"aliases":327,"description":328,"sections":329,"title":344,"toc":345},"/docs/[[config:docs_version]]/customize/","Learn how to theme, customize, and extend Bootstrap with Sass, a boatload of global options, an expansive color system, and more.",[330,333,335,337,339,341,342],{"description":331,"title":332},"Utilize our source Sass files to take advantage of variables, maps, mixins, and functions.","Sass",{"description":334,"title":319},"Customize Bootstrap with built-in variables to easily toggle global CSS preferences.",{"description":336,"title":283},"Learn about and customize the color systems that support the entire toolkit.",{"description":338,"title":274},"Explore our default light mode and the new dark mode, or create custom color modes yourself.",{"description":340,"title":292},"Learn how we build nearly all our components responsively and with base and modifier classes.",{"description":300,"title":301},{"description":343,"title":310},"Keep your projects lean, responsive, and maintainable so you can deliver the best experience.","Customize",false,"## Overview\n\nThere are multiple ways to customize Bootstrap. Your best path can depend on your project, the complexity of your build tools, the version of Bootstrap you're using, browser support, and more.\n\nOur two preferred methods are:\n\n1. Using Bootstrap [via package manager]([[docsref:/getting-started/download#package-managers]]) so you can use and extend our source files.\n2. Using Bootstrap's compiled distribution files or [jsDelivr]([[docsref:/getting-started/download#cdn-via-jsdelivr]]) so you can add onto or override Bootstrap's styles.\n\nWhile we cannot go into details here on how to use every package manager, we can give some guidance on [using Bootstrap with your own Sass compiler]([[docsref:/customize/sass]]).\n\nFor those who want to use the distribution files, review the [getting started page]([[docsref:/getting-started/introduction]]) for how to include those files and an example HTML page. From there, consult the docs for the layout, components, and behaviors you'd like to use.\n\nAs you familiarize yourself with Bootstrap, continue exploring this section for more details on how to utilize our global options, making use of and changing our color system, how we build our components, how to use our growing list of CSS custom properties, and how to optimize your code when building with Bootstrap.\n\n## CSPs and embedded SVGs\n\nSeveral Bootstrap components include embedded SVGs in our CSS to style components consistently and easily across browsers and devices. **For organizations with more strict \u003Cabbr title=\"Content Security Policy\">CSP\u003C/abbr> configurations**, we've documented all instances of our embedded SVGs (all of which are applied via `background-image`) so you can more thoroughly review your options.\n\n- [Accordion]([[docsref:/components/accordion]])\n- [Carousel controls]([[docsref:/components/carousel#with-controls]])\n- [Close button]([[docsref:/components/close-button]]) (used in alerts and modals)\n- [Form checkboxes and radio buttons]([[docsref:/forms/checks-radios]])\n- [Form switches]([[docsref:/forms/checks-radios#switches]])\n- [Form validation icons]([[docsref:/forms/validation#server-side]])\n- [Navbar toggle buttons]([[docsref:/components/navbar#responsive-behaviors]])\n- [Select menus]([[docsref:/forms/select]])\n\nBased on [community conversation](https://github.com/twbs/bootstrap/issues/25394), some options for addressing this in your own codebase include [replacing the URLs with locally hosted assets]([[docsref:/getting-started/webpack#extracting-svg-files]]), removing the images and using inline images (not possible in all components), and modifying your CSP. Our recommendation is to carefully review your own security policies and decide on the best path forward, if necessary.","src/content/docs/customize/overview.mdx","3bebbf56eb36be6d","customize/overview.mdx","customize/sass",{"id":350,"data":352,"body":354,"filePath":355,"digest":356,"legacyId":357,"deferredRender":139},{"description":353,"title":332,"toc":139},"Utilize our source Sass files to take advantage of variables, maps, mixins, and functions to help you build faster and customize your project.","Utilize our source Sass files to take advantage of variables, maps, mixins, and more.\n\n## File structure\n\nWhenever possible, avoid modifying Bootstrap's core files. For Sass, that means creating your own stylesheet that imports Bootstrap so you can modify and extend it. Assuming you're using a package manager like npm, you'll have a file structure that looks like this:\n\n```text\nyour-project/\n├── scss/\n│ └── custom.scss\n└── node_modules/\n│ └── bootstrap/\n│ ├── js/\n│ └── scss/\n└── index.html\n```\n\nIf you've downloaded our source files and aren't using a package manager, you'll want to manually create something similar to that structure, keeping Bootstrap's source files separate from your own.\n\n```text\nyour-project/\n├── scss/\n│ └── custom.scss\n├── bootstrap/\n│ ├── js/\n│ └── scss/\n└── index.html\n```\n\n## Importing\n\nIn your `custom.scss`, you'll import Bootstrap's source Sass files. You have two options: include all of Bootstrap, or pick the parts you need. We encourage the latter, though be aware there are some requirements and dependencies across our components. You also will need to include some JavaScript for our plugins.\n\n```scss\n// Custom.scss\n// Option A: Include all of Bootstrap\n\n// Include any default variable overrides here (though functions won't be available)\n\n@import \"../node_modules/bootstrap/scss/bootstrap\";\n\n// Then add additional custom code here\n```\n\n```scss\n// Custom.scss\n// Option B: Include parts of Bootstrap\n\n// 1. Include functions first (so you can manipulate colors, SVGs, calc, etc)\n@import \"../node_modules/bootstrap/scss/functions\";\n\n// 2. Include any default variable overrides here\n\n// 3. Include remainder of required Bootstrap stylesheets (including any separate color mode stylesheets)\n@import \"../node_modules/bootstrap/scss/variables\";\n@import \"../node_modules/bootstrap/scss/variables-dark\";\n\n// 4. Include any default map overrides here\n\n// 5. Include remainder of required parts\n@import \"../node_modules/bootstrap/scss/maps\";\n@import \"../node_modules/bootstrap/scss/mixins\";\n@import \"../node_modules/bootstrap/scss/root\";\n\n// 6. Optionally include any other parts as needed\n@import \"../node_modules/bootstrap/scss/utilities\";\n@import \"../node_modules/bootstrap/scss/reboot\";\n@import \"../node_modules/bootstrap/scss/type\";\n@import \"../node_modules/bootstrap/scss/images\";\n@import \"../node_modules/bootstrap/scss/containers\";\n@import \"../node_modules/bootstrap/scss/grid\";\n@import \"../node_modules/bootstrap/scss/helpers\";\n\n// 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`\n@import \"../node_modules/bootstrap/scss/utilities/api\";\n\n// 8. Add additional custom code here\n```\n\nWith that setup in place, you can begin to modify any of the Sass variables and maps in your `custom.scss`. You can also start to add parts of Bootstrap under the `// Optional` section as needed. We suggest using the full import stack from our `bootstrap.scss` file as your starting point.\n\n## Compiling\n\nIn order to use your custom Sass code as CSS in the browser, you need a Sass compiler. Sass ships as a CLI package, but you can also compile it with other build tools like [Gulp](https://gulpjs.com/) or [Webpack](https://webpack.js.org/), or with a GUI applications. Some IDEs also have Sass compilers built in or as downloadable extensions.\n\nWe like to use the CLI to compile our Sass, but you can use whichever method you prefer. From the command line, run the following:\n\n```shell\n# Install Sass globally\nnpm install -g sass\n\n# Watch your custom Sass for changes and compile it to CSS\nsass --watch ./scss/custom.scss ./css/custom.css\n```\n\nLearn more about your options at [sass-lang.com/install](https://sass-lang.com/install/) and [compiling with VS Code](https://code.visualstudio.com/docs/languages/css#_transpiling-sass-and-less-into-css).\n\n\u003CCallout>\n**Using Bootstrap with another build tool?** Consider reading our guides for compiling with [Webpack]([[docsref:/getting-started/webpack]]), [Parcel]([[docsref:/getting-started/parcel]]), or [Vite]([[docsref:/getting-started/vite]]). We also have production-ready demos in [our examples repository on GitHub](https://github.com/twbs/examples).\n\u003C/Callout>\n\n## Including\n\nOnce your CSS is compiled, you can include it in your HTML files. Inside your `index.html` you'll want to include your compiled CSS file. Be sure to update the path to your compiled CSS file if you've changed it.\n\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Custom Bootstrap\u003C/title>\n \u003Clink href=\"/css/custom.css\" rel=\"stylesheet\">\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, world!\u003C/h1>\n \u003C/body>\n\u003C/html>\n```\n\n## Variable defaults\n\nEvery Sass variable in Bootstrap includes the `!default` flag allowing you to override the variable's default value in your own Sass without modifying Bootstrap's source code. Copy and paste variables as needed, modify their values, and remove the `!default` flag. If a variable has already been assigned, then it won't be re-assigned by the default values in Bootstrap.\n\nYou will find the complete list of Bootstrap's variables in `scss/_variables.scss`. Some variables are set to `null`, these variables don't output the property unless they are overridden in your configuration.\n\nVariable overrides must come after our functions are imported, but before the rest of the imports.\n\nHere's an example that changes the `background-color` and `color` for the `\u003Cbody>` when importing and compiling Bootstrap via npm:\n\n```scss\n// Required\n@import \"../node_modules/bootstrap/scss/functions\";\n\n// Default variable overrides\n$body-bg: #000;\n$body-color: #111;\n\n// Required\n@import \"../node_modules/bootstrap/scss/variables\";\n@import \"../node_modules/bootstrap/scss/variables-dark\";\n@import \"../node_modules/bootstrap/scss/maps\";\n@import \"../node_modules/bootstrap/scss/mixins\";\n@import \"../node_modules/bootstrap/scss/root\";\n\n// Optional Bootstrap components here\n@import \"../node_modules/bootstrap/scss/reboot\";\n@import \"../node_modules/bootstrap/scss/type\";\n// etc\n```\n\nRepeat as necessary for any variable in Bootstrap, including the global options below.\n\n\u003CCallout name=\"info-npm-starter\" />\n\n## Maps and loops\n\nBootstrap includes a handful of Sass maps, key value pairs that make it easier to generate families of related CSS. We use Sass maps for our colors, grid breakpoints, and more. Just like Sass variables, all Sass maps include the `!default` flag and can be overridden and extended.\n\nSome of our Sass maps are merged into empty ones by default. This is done to allow easy expansion of a given Sass map, but comes at the cost of making _removing_ items from a map slightly more difficult.\n\n### Modify map\n\nAll variables in the `$theme-colors` map are defined as standalone variables. To modify an existing color in our `$theme-colors` map, add the following to your custom Sass file:\n\n```scss\n$primary: #0074d9;\n$danger: #ff4136;\n```\n\nLater on, these variables are set in Bootstrap's `$theme-colors` map:\n\n```scss\n$theme-colors: (\n \"primary\": $primary,\n \"danger\": $danger\n);\n```\n\n### Add to map\n\nAdd new colors to `$theme-colors`, or any other map, by creating a new Sass map with your custom values and merging it with the original map. In this case, we'll create a new `$custom-colors` map and merge it with `$theme-colors`.\n\n```scss\n// Create your own map\n$custom-colors: (\n \"custom-color\": #900\n);\n\n// Merge the maps\n$theme-colors: map-merge($theme-colors, $custom-colors);\n```\n\n### Remove from map\n\nTo remove colors from `$theme-colors`, or any other map, use `map-remove`. Be aware you must insert `$theme-colors` between our requirements just after its definition in `variables` and before its usage in `maps`:\n\n```scss\n// Required\n@import \"../node_modules/bootstrap/scss/functions\";\n@import \"../node_modules/bootstrap/scss/variables\";\n@import \"../node_modules/bootstrap/scss/variables-dark\";\n\n$theme-colors: map-remove($theme-colors, \"info\", \"light\", \"dark\");\n\n@import \"../node_modules/bootstrap/scss/maps\";\n@import \"../node_modules/bootstrap/scss/mixins\";\n@import \"../node_modules/bootstrap/scss/root\";\n\n// Optional\n@import \"../node_modules/bootstrap/scss/reboot\";\n@import \"../node_modules/bootstrap/scss/type\";\n// etc\n```\n\n## Required keys\n\nBootstrap assumes the presence of some specific keys within Sass maps as we used and extend these ourselves. As you customize the included maps, you may encounter errors where a specific Sass map's key is being used.\n\nFor example, we use the `primary`, `success`, and `danger` keys from `$theme-colors` for links, buttons, and form states. Replacing the values of these keys should present no issues, but removing them may cause Sass compilation issues. In these instances, you'll need to modify the Sass code that makes use of those values.\n\n## Functions\n\n### Colors\n\nNext to the [Sass maps]([[docsref:/customize/color#color-sass-maps]]) we have, theme colors can also be used as standalone variables, like `$primary`.\n\n```scss\n.custom-element {\n color: $gray-100;\n background-color: $dark;\n}\n```\n\nYou can lighten or darken colors with Bootstrap's `tint-color()` and `shade-color()` functions. These functions will mix colors with black or white, unlike Sass' native `lighten()` and `darken()` functions which will change the lightness by a fixed amount, which often doesn't lead to the desired effect.\n\n`shift-color()` combines these two functions by shading the color if the weight is positive and tinting the color if the weight is negative.\n\n\u003CScssDocs name=\"color-functions\" file=\"scss/_functions.scss\" />\n\nIn practice, you'd call the function and pass in the color and weight parameters.\n\n```scss\n.custom-element {\n color: tint-color($primary, 10%);\n}\n\n.custom-element-2 {\n color: shade-color($danger, 30%);\n}\n\n.custom-element-3 {\n color: shift-color($success, 40%);\n background-color: shift-color($success, -60%);\n}\n```\n\n### Color contrast\n\nIn order to meet the [Web Content Accessibility Guidelines (WCAG)](https://www.w3.org/TR/WCAG/) contrast requirements, authors **must** provide a minimum [text color contrast of 4.5:1](https://www.w3.org/TR/WCAG/#contrast-minimum) and a minimum [non-text color contrast of 3:1](https://www.w3.org/TR/WCAG/#non-text-contrast), with very few exceptions.\n\nTo help with this, we included the `color-contrast` function in Bootstrap. It uses the [WCAG contrast ratio algorithm](https://www.w3.org/TR/WCAG/#dfn-contrast-ratio) for calculating contrast thresholds based on [relative luminance](https://www.w3.org/TR/WCAG/#dfn-relative-luminance) in an `sRGB` color space to automatically return a light (`#fff`), dark (`#212529`) or black (`#000`) contrast color based on the specified base color. This function is especially useful for mixins or loops where you're generating multiple classes.\n\nFor example, to generate color swatches from our `$theme-colors` map:\n\n```scss\n@each $color, $value in $theme-colors {\n .swatch-#{$color} {\n color: color-contrast($value);\n }\n}\n```\n\nIt can also be used for one-off contrast needs:\n\n```scss\n.custom-element {\n color: color-contrast(#000); // returns `color: #fff`\n}\n```\n\nYou can also specify a base color with our color map functions:\n\n```scss\n.custom-element {\n color: color-contrast($dark); // returns `color: #fff`\n}\n```\n\n### Escape SVG\n\nWe use the `escape-svg` function to escape the `\u003C`, `>` and `#` characters for SVG background images. When using the `escape-svg` function, data URIs must be quoted.\n\n### Add and Subtract functions\n\nWe use the `add` and `subtract` functions to wrap the CSS `calc` function. The primary purpose of these functions is to avoid errors when a \"unitless\" `0` value is passed into a `calc` expression. Expressions like `calc(10px - 0)` will return an error in all browsers, despite being mathematically correct.\n\nExample where the calc is valid:\n\n```scss\n$border-radius: .25rem;\n$border-width: 1px;\n\n.element {\n // Output calc(.25rem - 1px) is valid\n border-radius: calc($border-radius - $border-width);\n}\n\n.element {\n // Output the same calc(.25rem - 1px) as above\n border-radius: subtract($border-radius, $border-width);\n}\n```\n\nExample where the calc is invalid:\n\n```scss\n$border-radius: .25rem;\n$border-width: 0;\n\n.element {\n // Output calc(.25rem - 0) is invalid\n border-radius: calc($border-radius - $border-width);\n}\n\n.element {\n // Output .25rem\n border-radius: subtract($border-radius, $border-width);\n}\n```\n\n## Mixins\n\nOur `scss/mixins/` directory has a ton of mixins that power parts of Bootstrap and can also be used across your own project.\n\n### Color schemes\n\nA shorthand mixin for the `prefers-color-scheme` media query is available with support for `light` and `dark` color schemes. See [the color modes documentation]([[docsref:/customize/color-modes]]) for information on our color mode mixin.\n\n\u003CScssDocs name=\"mixin-color-scheme\" file=\"scss/mixins/_color-scheme.scss\" />\n\n```scss\n.custom-element {\n @include color-scheme(light) {\n // Insert light mode styles here\n }\n\n @include color-scheme(dark) {\n // Insert dark mode styles here\n }\n}\n```","src/content/docs/customize/sass.mdx","5d4b184d3629798a","customize/sass.mdx","components/accordion",{"id":358,"data":360,"body":366,"filePath":367,"digest":368,"legacyId":369,"deferredRender":139},{"aliases":361,"description":364,"title":365,"toc":139},[362,363],"/components/","/docs/[[config:docs_version]]/components/","Build vertically collapsing accordions in combination with our Collapse JavaScript plugin.","Accordion","## How it works\n\nThe accordion uses [collapse]([[docsref:/components/collapse]]) internally to make it collapsible.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Example\n\nClick the accordions below to expand/collapse the accordion content.\n\nTo render an accordion that's expanded by default:\n- add the `.show` class on the `.accordion-collapse` element.\n- drop the `.collapsed` class from the `.accordion-button` element and set its `aria-expanded` attribute to `true`.\n\n\u003CExample code={`\u003Cdiv class=\"accordion\" id=\"accordionExample\">\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseOne\" aria-expanded=\"true\" aria-controls=\"collapseOne\">\n Accordion Item #1\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"collapseOne\" class=\"accordion-collapse collapse show\" data-bs-parent=\"#accordionExample\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the first item's accordion body.\u003C/strong> It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseTwo\" aria-expanded=\"false\" aria-controls=\"collapseTwo\">\n Accordion Item #2\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"collapseTwo\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionExample\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the second item's accordion body.\u003C/strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseThree\" aria-expanded=\"false\" aria-controls=\"collapseThree\">\n Accordion Item #3\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"collapseThree\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionExample\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the third item's accordion body.\u003C/strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Flush\n\nAdd `.accordion-flush` to remove some borders and rounded corners to render accordions edge-to-edge with their parent container.\n\n\u003CExample class=\"bg-body-secondary\" code={`\u003Cdiv class=\"accordion accordion-flush\" id=\"accordionFlushExample\">\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#flush-collapseOne\" aria-expanded=\"false\" aria-controls=\"flush-collapseOne\">\n Accordion Item #1\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"flush-collapseOne\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionFlushExample\">\n \u003Cdiv class=\"accordion-body\">Placeholder content for this accordion, which is intended to demonstrate the \u003Ccode>.accordion-flush\u003C/code> class. This is the first item's accordion body.\u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#flush-collapseTwo\" aria-expanded=\"false\" aria-controls=\"flush-collapseTwo\">\n Accordion Item #2\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"flush-collapseTwo\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionFlushExample\">\n \u003Cdiv class=\"accordion-body\">Placeholder content for this accordion, which is intended to demonstrate the \u003Ccode>.accordion-flush\u003C/code> class. This is the second item's accordion body. Let's imagine this being filled with some actual content.\u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#flush-collapseThree\" aria-expanded=\"false\" aria-controls=\"flush-collapseThree\">\n Accordion Item #3\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"flush-collapseThree\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionFlushExample\">\n \u003Cdiv class=\"accordion-body\">Placeholder content for this accordion, which is intended to demonstrate the \u003Ccode>.accordion-flush\u003C/code> class. This is the third item's accordion body. Nothing more exciting happening here in terms of content, but just filling up the space to make it look, at least at first glance, a bit more representative of how this would look in a real-world application.\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Always open\n\nOmit the `data-bs-parent` attribute on each `.accordion-collapse` to make accordion items stay open when another item is opened.\n\n\u003CExample code={`\u003Cdiv class=\"accordion\" id=\"accordionPanelsStayOpenExample\">\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#panelsStayOpen-collapseOne\" aria-expanded=\"true\" aria-controls=\"panelsStayOpen-collapseOne\">\n Accordion Item #1\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"panelsStayOpen-collapseOne\" class=\"accordion-collapse collapse show\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the first item's accordion body.\u003C/strong> It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#panelsStayOpen-collapseTwo\" aria-expanded=\"false\" aria-controls=\"panelsStayOpen-collapseTwo\">\n Accordion Item #2\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"panelsStayOpen-collapseTwo\" class=\"accordion-collapse collapse\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the second item's accordion body.\u003C/strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#panelsStayOpen-collapseThree\" aria-expanded=\"false\" aria-controls=\"panelsStayOpen-collapseThree\">\n Accordion Item #3\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"panelsStayOpen-collapseThree\" class=\"accordion-collapse collapse\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the third item's accordion body.\u003C/strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Accessibility\n\nPlease read the [collapse accessibility section]([[docsref:/components/collapse#accessibility]]) for more information.\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, accordions now use local CSS variables on `.accordion` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"accordion-css-vars\" file=\"scss/_accordion.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"accordion-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/accordion.mdx","d2692cb45f0d0aa5","components/accordion.mdx","components/badge",{"id":370,"data":372,"body":375,"filePath":376,"digest":377,"legacyId":378,"deferredRender":139},{"description":373,"title":374,"toc":139},"Documentation and examples for badges, our small count and labeling component.","Badges","import { getData } from '@libs/data'\n\n## Examples\n\nBadges scale to match the size of the immediate parent element by using relative font sizing and `em` units. As of v5, badges no longer have focus or hover styles for links.\n\n### Headings\n\n\u003CExample code={`\u003Ch1>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h1>\n\u003Ch2>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h2>\n\u003Ch3>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h3>\n\u003Ch4>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h4>\n\u003Ch5>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h5>\n\u003Ch6>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h6>`} />\n\n### Buttons\n\nBadges can be used as part of links or buttons to provide a counter.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary\">\n Notifications \u003Cspan class=\"badge text-bg-secondary\">4\u003C/span>\n\u003C/button>`} />\n\nNote that depending on how they are used, badges may be confusing for users of screen readers and similar assistive technologies. While the styling of badges provides a visual cue as to their purpose, these users will simply be presented with the content of the badge. Depending on the specific situation, these badges may seem like random additional words or numbers at the end of a sentence, link, or button.\n\nUnless the context is clear (as with the \"Notifications\" example, where it is understood that the \"4\" is the number of notifications), consider including additional context with a visually hidden piece of additional text.\n\n### Positioned\n\nUse utilities to modify a `.badge` and position it in the corner of a link or button.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary position-relative\">\n Inbox\n \u003Cspan class=\"position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger\">\n 99+\n \u003Cspan class=\"visually-hidden\">unread messages\u003C/span>\n \u003C/span>\n\u003C/button>`} />\n\nYou can also replace the `.badge` class with a few more utilities without a count for a more generic indicator.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary position-relative\">\n Profile\n \u003Cspan class=\"position-absolute top-0 start-100 translate-middle p-2 bg-danger border border-light rounded-circle\">\n \u003Cspan class=\"visually-hidden\">New alerts\u003C/span>\n \u003C/span>\n\u003C/button>`} />\n\n## Background colors\n\n\u003CAddedIn version=\"5.2.0\" />\n\nSet a `background-color` with contrasting foreground `color` with [our `.text-bg-{color}` helpers]([[docsref:helpers/color-background]]). Previously it was required to manually pair your choice of [`.text-{color}`]([[docsref:/utilities/colors]]) and [`.bg-{color}`]([[docsref:/utilities/background]]) utilities for styling, which you still may use if you prefer.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cspan class=\"badge text-bg-${themeColor.name}\">${themeColor.title}\u003C/span>`)} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Pill badges\n\nUse the `.rounded-pill` utility class to make badges more rounded with a larger `border-radius`.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cspan class=\"badge rounded-pill text-bg-${themeColor.name}\">${themeColor.title}\u003C/span>`)} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, badges now use local CSS variables on `.badge` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"badge-css-vars\" file=\"scss/_badge.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"badge-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/badge.mdx","749e5cf7de84ad9f","components/badge.mdx","components/alerts",{"id":379,"data":381,"body":384,"filePath":385,"digest":386,"legacyId":387,"deferredRender":139},{"description":382,"title":383,"toc":139},"Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.","Alerts","import { getData } from '@libs/data'\n\n## Examples\n\nAlerts are available for any length of text, as well as an optional close button. For proper styling, use one of the eight **required** contextual classes (e.g., `.alert-success`). For inline dismissal, use the [alerts JavaScript plugin](#dismissing).\n\n\u003CCallout>\n**Heads up!** As of v5.3.0, the `alert-variant()` Sass mixin is deprecated. Alert variants now have their CSS variables overridden in [a Sass loop](#sass-loops).\n\u003C/Callout>\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"alert alert-${themeColor.name}\" role=\"alert\">\n A simple ${themeColor.name} alert—check it out!\n\u003C/div>`)} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n### Live example\n\nClick the button below to show an alert (hidden with inline styles to start), then dismiss (and destroy) it with the built-in close button.\n\n\u003CExample addStackblitzJs code={`\u003Cdiv id=\"liveAlertPlaceholder\">\u003C/div>\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" id=\"liveAlertBtn\">Show live alert\u003C/button>`} />\n\nWe use the following JavaScript to trigger our live alert demo:\n\n\u003CJsDocs name=\"live-alert\" file=\"site/src/assets/partials/snippets.js\" />\n\n### Link color\n\nUse the `.alert-link` utility class to quickly provide matching colored links within any alert.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"alert alert-${themeColor.name}\" role=\"alert\">\n A simple ${themeColor.name} alert with \u003Ca href=\"#\" class=\"alert-link\">an example link\u003C/a>. Give it a click if you like.\n\u003C/div>`)} />\n\n### Additional content\n\nAlerts can also contain additional HTML elements like headings, paragraphs and dividers.\n\n\u003CExample code={`\u003Cdiv class=\"alert alert-success\" role=\"alert\">\n \u003Ch4 class=\"alert-heading\">Well done!\u003C/h4>\n \u003Cp>Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.\u003C/p>\n \u003Chr>\n \u003Cp class=\"mb-0\">Whenever you need to, be sure to use margin utilities to keep things nice and tidy.\u003C/p>\n\u003C/div>`} />\n\n### Icons\n\nSimilarly, you can use [flexbox utilities]([[docsref:/utilities/flex]]) and [Bootstrap Icons]([[config:icons]]) to create alerts with icons. Depending on your icons and content, you may want to add more utilities or custom styles.\n\n\u003CExample code={`\u003Cdiv class=\"alert alert-primary d-flex align-items-center\" role=\"alert\">\n \u003Csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"bi flex-shrink-0 me-2\" viewBox=\"0 0 16 16\" role=\"img\" aria-label=\"Warning:\">\n \u003Cpath d=\"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>\n \u003C/svg>\n \u003Cdiv>\n An example alert with an icon\n \u003C/div>\n\u003C/div>`} />\n\nNeed more than one icon for your alerts? Consider using more Bootstrap Icons and making a local SVG sprite like so to easily reference the same icons repeatedly.\n\n\u003CExample code={`\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"d-none\">\n \u003Csymbol id=\"check-circle-fill\" viewBox=\"0 0 16 16\">\n \u003Cpath d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z\"/>\n \u003C/symbol>\n \u003Csymbol id=\"info-fill\" viewBox=\"0 0 16 16\">\n \u003Cpath d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"/>\n \u003C/symbol>\n \u003Csymbol id=\"exclamation-triangle-fill\" viewBox=\"0 0 16 16\">\n \u003Cpath d=\"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>\n \u003C/symbol>\n\u003C/svg>\n\n\u003Cdiv class=\"alert alert-primary d-flex align-items-center\" role=\"alert\">\n \u003Csvg class=\"bi flex-shrink-0 me-2\" role=\"img\" aria-label=\"Info:\">\u003Cuse xlink:href=\"#info-fill\"/>\u003C/svg>\n \u003Cdiv>\n An example alert with an icon\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"alert alert-success d-flex align-items-center\" role=\"alert\">\n \u003Csvg class=\"bi flex-shrink-0 me-2\" role=\"img\" aria-label=\"Success:\">\u003Cuse xlink:href=\"#check-circle-fill\"/>\u003C/svg>\n \u003Cdiv>\n An example success alert with an icon\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"alert alert-warning d-flex align-items-center\" role=\"alert\">\n \u003Csvg class=\"bi flex-shrink-0 me-2\" role=\"img\" aria-label=\"Warning:\">\u003Cuse xlink:href=\"#exclamation-triangle-fill\"/>\u003C/svg>\n \u003Cdiv>\n An example warning alert with an icon\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"alert alert-danger d-flex align-items-center\" role=\"alert\">\n \u003Csvg class=\"bi flex-shrink-0 me-2\" role=\"img\" aria-label=\"Danger:\">\u003Cuse xlink:href=\"#exclamation-triangle-fill\"/>\u003C/svg>\n \u003Cdiv>\n An example danger alert with an icon\n \u003C/div>\n\u003C/div>`} />\n\n### Dismissing\n\nUsing the alert JavaScript plugin, it's possible to dismiss any alert inline. Here's how:\n\n- Be sure you've loaded the alert plugin, or the compiled Bootstrap JavaScript.\n- Add a [close button]([[docsref:/components/close-button]]) and the `.alert-dismissible` class, which adds extra padding to the right of the alert and positions the close button.\n- On the close button, add the `data-bs-dismiss=\"alert\"` attribute, which triggers the JavaScript functionality. Be sure to use the `\u003Cbutton>` element with it for proper behavior across all devices.\n- To animate alerts when dismissing them, be sure to add the `.fade` and `.show` classes.\n\nYou can see this in action with a live demo:\n\n\u003CExample code={`\u003Cdiv class=\"alert alert-warning alert-dismissible fade show\" role=\"alert\">\n \u003Cstrong>Holy guacamole!\u003C/strong> You should check in on some of those fields below.\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\">\u003C/button>\n\u003C/div>`} />\n\n\u003CCallout type=\"warning\">\nWhen an alert is dismissed, the element is completely removed from the page structure. If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. For this reason, we recommend including additional JavaScript that listens for the `closed.bs.alert` event and programmatically sets `focus()` to the most appropriate location in the page. If you're planning to move focus to a non-interactive element that normally does not receive focus, make sure to add `tabindex=\"-1\"` to the element.\n\u003C/Callout>\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, alerts now use local CSS variables on `.alert` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"alert-css-vars\" file=\"scss/_alert.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"alert-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\n\u003CScssDocs name=\"alert-variant-mixin\" file=\"scss/mixins/_alert.scss\" />\n\n### Sass loops\n\nLoop that generates the modifier classes with an overriding of CSS variables.\n\n\u003CScssDocs name=\"alert-modifiers\" file=\"scss/_alert.scss\" />\n\n## JavaScript behavior\n\n### Initialize\n\nInitialize elements as alerts\n\n```js\nconst alertList = document.querySelectorAll('.alert')\nconst alerts = [...alertList].map(element => new bootstrap.Alert(element))\n```\n\n\u003CCallout>\nFor the sole purpose of dismissing an alert, it isn't necessary to initialize the component manually via the JS API. By making use of `data-bs-dismiss=\"alert\"`, the component will be initialized automatically and properly dismissed.\n\nSee the [triggers](#triggers) section for more details.\n\u003C/Callout>\n\n### Triggers\n\n\u003CJsDismiss name=\"alert\" />\n\n**Note that closing an alert will remove it from the DOM.**\n\n### Methods\n\nYou can create an alert instance with the alert constructor, for example:\n\n```js\nconst bsAlert = new bootstrap.Alert('#myAlert')\n```\n\nThis makes an alert listen for click events on descendant elements which have the `data-bs-dismiss=\"alert\"` attribute. (Not necessary when using the data-api’s auto-initialization.)\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `close` | Closes an alert by removing it from the DOM. If the `.fade` and `.show` classes are present on the element, the alert will fade out before it is removed. |\n| `dispose` | Destroys an element's alert. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the alert instance associated to a DOM element. For example: `bootstrap.Alert.getInstance(alert)`. |\n| `getOrCreateInstance` | Static method which returns an alert instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Alert.getOrCreateInstance(element)`. |\n\u003C/BsTable>\n\nBasic usage:\n\n```js\nconst alert = bootstrap.Alert.getOrCreateInstance('#myAlert')\nalert.close()\n```\n\n### Events\n\nBootstrap's alert plugin exposes a few events for hooking into alert functionality.\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `close.bs.alert` | Fires immediately when the `close` instance method is called. |\n| `closed.bs.alert` | Fired when the alert has been closed and CSS transitions have completed. |\n\u003C/BsTable>\n\n```js\nconst myAlert = document.getElementById('myAlert')\nmyAlert.addEventListener('closed.bs.alert', event => {\n // do something, for instance, explicitly move focus to the most appropriate element,\n // so it doesn't get lost/reset to the start of the page\n // document.getElementById('...').focus()\n})\n```","src/content/docs/components/alerts.mdx","6607ff0c1f19842d","components/alerts.mdx","components/breadcrumb",{"id":388,"data":390,"body":393,"filePath":394,"digest":395,"legacyId":396,"deferredRender":139},{"description":391,"title":392,"toc":139},"Indicate the current page's location within a navigational hierarchy that automatically adds separators via CSS.","Breadcrumb","## Example\n\nUse an ordered or unordered list with linked list items to create a minimally styled breadcrumb. Use our utilities to add additional styles as desired.\n\n\u003CExample code={`\u003Cnav aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Home\u003C/li>\n \u003C/ol>\n\u003C/nav>\n\n\u003Cnav aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Library\u003C/li>\n \u003C/ol>\n\u003C/nav>\n\n\u003Cnav aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Library\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Data\u003C/li>\n \u003C/ol>\n\u003C/nav>`} />\n\n## Dividers\n\nDividers are automatically added in CSS through [`::before`](https://developer.mozilla.org/en-US/docs/Web/CSS/::before) and [`content`](https://developer.mozilla.org/en-US/docs/Web/CSS/content). They can be changed by modifying a local CSS custom property `--bs-breadcrumb-divider`, or through the `$breadcrumb-divider` Sass variable — and `$breadcrumb-divider-flipped` for its RTL counterpart, if needed. We default to our Sass variable, which is set as a fallback to the custom property. This way, you get a global divider that you can override without recompiling CSS at any time.\n\n\u003CExample code={`\u003Cnav style=\"--bs-breadcrumb-divider: '>';\" aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Library\u003C/li>\n \u003C/ol>\n\u003C/nav>`} />\n\nWhen modifying via Sass, the [quote](https://sass-lang.com/documentation/modules/string/#quote) function is required to generate the quotes around a string. For example, using `>` as the divider, you can use this:\n\n```scss\n$breadcrumb-divider: quote(\">\");\n```\n\nIt's also possible to use an **embedded SVG icon**. Apply it via our CSS custom property, or use the Sass variable.\n\n\u003CCallout>\n**Inlined SVG requires properly escaped characters.** Some reserved characters, such as `\u003C`, `>` and `#`, must be URL-encoded or escaped. We do this with the `$breadcrumb-divider` variable using our [`escape-svg()` Sass function]([[docsref:/customize/sass#escape-svg]]). When customizing the CSS variable, you must handle this yourself. Read [Kevin Weber's explanations on CodePen](https://codepen.io/kevinweber/pen/dXWoRw ) for more info.\n\u003C/Callout>\n\n\u003CExample code={`\u003Cnav style=\"--bs-breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%236c757d'/%3E%3C/svg%3E");\" aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Library\u003C/li>\n \u003C/ol>\n\u003C/nav>`} />\n\n```scss\n$breadcrumb-divider: url(\"data:image/svg+xml,\u003Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'>\u003Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='#{$breadcrumb-divider-color}'/>\u003C/svg>\");\n```\n\nYou can also remove the divider setting `--bs-breadcrumb-divider: '';` (empty strings in CSS custom properties counts as a value), or setting the Sass variable to `$breadcrumb-divider: none;`.\n\n\u003CExample code={`\u003Cnav style=\"--bs-breadcrumb-divider: '';\" aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Library\u003C/li>\n \u003C/ol>\n\u003C/nav>`} />\n\n\n```scss\n$breadcrumb-divider: none;\n```\n\n## Accessibility\n\nSince breadcrumbs provide a navigation, it's a good idea to add a meaningful label such as `aria-label=\"breadcrumb\"` to describe the type of navigation provided in the `\u003Cnav>` element, as well as applying an `aria-current=\"page\"` to the last item of the set to indicate that it represents the current page.\n\nFor more information, see the [ARIA Authoring Practices Guide breadcrumb pattern](https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/).\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, breadcrumbs now use local CSS variables on `.breadcrumb` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"breadcrumb-css-vars\" file=\"scss/_breadcrumb.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"breadcrumb-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/breadcrumb.mdx","f74a76757713e11b","components/breadcrumb.mdx","components/button-group",{"id":397,"data":399,"body":402,"filePath":403,"digest":404,"legacyId":405,"deferredRender":139},{"description":400,"title":401,"toc":139},"Group a series of buttons together on a single line or stack them in a vertical column.","Button group","## Basic example\n\nWrap a series of buttons with `.btn` in `.btn-group`.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Right\u003C/button>\n\u003C/div>`} />\n\n\u003CCallout>\nButton groups require an appropriate `role` attribute and explicit label to ensure assistive technologies like screen readers identify buttons as grouped and announce them. Use `role=\"group\"` for button groups or `role=\"toolbar\"` for button toolbars. Then use `aria-label` or `aria-labelledby` to label them.\n\u003C/Callout>\n\nThese classes can also be added to groups of links, as an alternative to the [`.nav` navigation components]([[docsref:/components/navs-tabs]]).\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Ca href=\"#\" class=\"btn btn-primary active\" aria-current=\"page\">Active link\u003C/a>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Link\u003C/a>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Link\u003C/a>\n\u003C/div>`} />\n\n## Mixed styles\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic mixed styles example\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-warning\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-success\">Right\u003C/button>\n\u003C/div>`} />\n\n## Outlined styles\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic outlined example\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Right\u003C/button>\n\u003C/div>`} />\n\n## Checkbox and radio button groups\n\nCombine button-like checkbox and radio [toggle buttons]([[docsref:/forms/checks-radios]]) into a seamless looking button group.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic checkbox toggle button group\">\n \u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btncheck1\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btncheck1\">Checkbox 1\u003C/label>\n\n \u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btncheck2\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btncheck2\">Checkbox 2\u003C/label>\n\n \u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btncheck3\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btncheck3\">Checkbox 3\u003C/label>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic radio toggle button group\">\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"btnradio\" id=\"btnradio1\" autocomplete=\"off\" checked>\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btnradio1\">Radio 1\u003C/label>\n\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"btnradio\" id=\"btnradio2\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btnradio2\">Radio 2\u003C/label>\n\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"btnradio\" id=\"btnradio3\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btnradio3\">Radio 3\u003C/label>\n\u003C/div>`} />\n\n## Button toolbar\n\nCombine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.\n\n\u003CExample code={`\u003Cdiv class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Toolbar with button groups\">\n \u003Cdiv class=\"btn-group me-2\" role=\"group\" aria-label=\"First group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">2\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">3\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">4\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"btn-group me-2\" role=\"group\" aria-label=\"Second group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">5\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">6\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">7\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Third group\">\n \u003Cbutton type=\"button\" class=\"btn btn-info\">8\u003C/button>\n \u003C/div>\n\u003C/div>`} />\n\nFeel free to mix input groups with button groups in your toolbars. Similar to the example above, you'll likely need some utilities though to space things properly.\n\n\u003CExample code={`\u003Cdiv class=\"btn-toolbar mb-3\" role=\"toolbar\" aria-label=\"Toolbar with button groups\">\n \u003Cdiv class=\"btn-group me-2\" role=\"group\" aria-label=\"First group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">2\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">3\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">4\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\" id=\"btnGroupAddon\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Input group example\" aria-label=\"Input group example\" aria-describedby=\"btnGroupAddon\">\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"btn-toolbar justify-content-between\" role=\"toolbar\" aria-label=\"Toolbar with button groups\">\n \u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"First group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">2\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">3\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">4\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\" id=\"btnGroupAddon2\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Input group example\" aria-label=\"Input group example\" aria-describedby=\"btnGroupAddon2\">\n \u003C/div>\n\u003C/div>`} />\n\n## Sizing\n\nInstead of applying button sizing classes to every button in a group, just add `.btn-group-*` to each `.btn-group`, including each one when nesting multiple groups.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group btn-group-lg\" role=\"group\" aria-label=\"Large button group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Right\u003C/button>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Default button group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Right\u003C/button>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"btn-group btn-group-sm\" role=\"group\" aria-label=\"Small button group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Right\u003C/button>\n\u003C/div>`} />\n\n## Nesting\n\nPlace a `.btn-group` within another `.btn-group` when you want dropdown menus mixed with a series of buttons.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Button group with nested dropdown\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">2\u003C/button>\n\n \u003Cdiv class=\"btn-group\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>`} />\n\n## Vertical variation\n\nMake a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.**\n\n\u003CExample code={`\u003Cdiv class=\"btn-group-vertical\" role=\"group\" aria-label=\"Vertical button group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"btn-group-vertical\" role=\"group\" aria-label=\"Vertical button group\">\n \u003Cdiv class=\"btn-group\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cdiv class=\"btn-group dropstart\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropend\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropup\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"btn-group-vertical\" role=\"group\" aria-label=\"Vertical radio toggle button group\">\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"vbtn-radio\" id=\"vbtn-radio1\" autocomplete=\"off\" checked>\n \u003Clabel class=\"btn btn-outline-danger\" for=\"vbtn-radio1\">Radio 1\u003C/label>\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"vbtn-radio\" id=\"vbtn-radio2\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-danger\" for=\"vbtn-radio2\">Radio 2\u003C/label>\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"vbtn-radio\" id=\"vbtn-radio3\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-danger\" for=\"vbtn-radio3\">Radio 3\u003C/label>\n\u003C/div>`} />","src/content/docs/components/button-group.mdx","6844839b1fda36ae","components/button-group.mdx","components/buttons",{"id":406,"data":408,"body":411,"filePath":412,"digest":413,"legacyId":414,"deferredRender":139},{"description":409,"title":410,"toc":139},"Use Bootstrap's custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.","Buttons","import { getData } from '@libs/data'\n\n## Base class\n\nBootstrap has a base `.btn` class that sets up basic styles such as padding and content alignment. By default, `.btn` controls have a transparent border and background color, and lack any explicit focus and hover styles.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn\">Base class\u003C/button>`} />\n\nThe `.btn` class is intended to be used in conjunction with our button variants, or to serve as a basis for your own custom styles.\n\n\u003CCallout type=\"warning\">\nIf you are using the `.btn` class on its own, remember to at least define some explicit `:focus` and/or `:focus-visible` styles.\n\u003C/Callout>\n\n## Variants\n\nBootstrap includes several button variants, each serving its own semantic purpose, with a few extras thrown in for more control.\n\n\u003CExample code={[...getData('theme-colors').map((themeColor) => `\u003Cbutton type=\"button\" class=\"btn btn-${themeColor.name}\">${themeColor.title}\u003C/button>`), `\n\u003Cbutton type=\"button\" class=\"btn btn-link\">Link\u003C/button>`]} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Disable text wrapping\n\nIf you don't want the button text to wrap, you can add the `.text-nowrap` class to the button. In Sass, you can set `$btn-white-space: nowrap` to disable text wrapping for each button.\n\n## Button tags\n\nThe `.btn` classes are designed to be used with the `\u003Cbutton>` element. However, you can also use these classes on `\u003Ca>` or `\u003Cinput>` elements (though some browsers may apply a slightly different rendering).\n\nWhen using button classes on `\u003Ca>` elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a `role=\"button\"` to appropriately convey their purpose to assistive technologies such as screen readers.\n\n\u003CExample code={`\u003Ca class=\"btn btn-primary\" href=\"#\" role=\"button\">Link\u003C/a>\n\u003Cbutton class=\"btn btn-primary\" type=\"submit\">Button\u003C/button>\n\u003Cinput class=\"btn btn-primary\" type=\"button\" value=\"Input\">\n\u003Cinput class=\"btn btn-primary\" type=\"submit\" value=\"Submit\">\n\u003Cinput class=\"btn btn-primary\" type=\"reset\" value=\"Reset\">`} />\n\n## Outline buttons\n\nIn need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the `.btn-outline-*` ones to remove all background images and colors on any button.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cbutton type=\"button\" class=\"btn btn-outline-${themeColor.name}\">${themeColor.name}\u003C/button>`)} />\n\n\u003CCallout>\nSome of the button styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast.\n\u003C/Callout>\n\n## Sizes\n\nFancy larger or smaller buttons? Add `.btn-lg` or `.btn-sm` for additional sizes.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary btn-lg\">Large button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary btn-lg\">Large button\u003C/button>`} />\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary btn-sm\">Small button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary btn-sm\">Small button\u003C/button>`} />\n\nYou can even roll your own custom sizing with CSS variables:\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary\"\n style=\"--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;\">\n Custom button\n\u003C/button>`} />\n\n## Disabled state\n\nMake buttons look inactive by adding the `disabled` boolean attribute to any `\u003Cbutton>` element. Disabled buttons have `pointer-events: none` applied to, preventing hover and active states from triggering.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary\" disabled>Primary button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" disabled>Button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-outline-primary\" disabled>Primary button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\" disabled>Button\u003C/button>`} />\n\nDisabled buttons using the `\u003Ca>` element behave a bit different:\n\n- `\u003Ca>`s don't support the `disabled` attribute, so you must add the `.disabled` class to make it visually appear disabled.\n- Some future-friendly styles are included to disable all `pointer-events` on anchor buttons.\n- Disabled buttons using `\u003Ca>` should include the `aria-disabled=\"true\"` attribute to indicate the state of the element to assistive technologies.\n- Disabled buttons using `\u003Ca>` *should not* include the `href` attribute.\n\n\u003CExample code={`\u003Ca class=\"btn btn-primary disabled\" role=\"button\" aria-disabled=\"true\">Primary link\u003C/a>\n\u003Ca class=\"btn btn-secondary disabled\" role=\"button\" aria-disabled=\"true\">Link\u003C/a>`} />\n\n### Link functionality caveat\n\nTo cover cases where you have to keep the `href` attribute on a disabled link, the `.disabled` class uses `pointer-events: none` to try to disable the link functionality of `\u003Ca>`s. Note that this CSS property is not yet standardized for HTML, but all modern browsers support it. In addition, even in browsers that do support `pointer-events: none`, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, in addition to `aria-disabled=\"true\"`, also include a `tabindex=\"-1\"` attribute on these links to prevent them from receiving keyboard focus, and use custom JavaScript to disable their functionality altogether.\n\n\u003CExample code={`\u003Ca href=\"#\" class=\"btn btn-primary disabled\" tabindex=\"-1\" role=\"button\" aria-disabled=\"true\">Primary link\u003C/a>\n\u003Ca href=\"#\" class=\"btn btn-secondary disabled\" tabindex=\"-1\" role=\"button\" aria-disabled=\"true\">Link\u003C/a>`} />\n\n## Block buttons\n\nCreate responsive stacks of full-width, \"block buttons\" like those in Bootstrap 4 with a mix of our display and gap utilities. By using utilities instead of button-specific classes, we have much greater control over spacing, alignment, and responsive behaviors.\n\n\u003CExample code={`\u003Cdiv class=\"d-grid gap-2\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\nHere we create a responsive variation, starting with vertically stacked buttons until the `md` breakpoint, where `.d-md-block` replaces the `.d-grid` class, thus nullifying the `gap-2` utility. Resize your browser to see them change.\n\n\u003CExample code={`\u003Cdiv class=\"d-grid gap-2 d-md-block\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\nYou can adjust the width of your block buttons with grid column width classes. For example, for a half-width \"block button\", use `.col-6`. Center it horizontally with `.mx-auto`, too.\n\n\u003CExample code={`\u003Cdiv class=\"d-grid gap-2 col-6 mx-auto\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\nAdditional utilities can be used to adjust the alignment of buttons when horizontal. Here we've taken our previous responsive example and added some flex utilities and a margin utility on the button to right-align the buttons when they're no longer stacked.\n\n\u003CExample code={`\u003Cdiv class=\"d-grid gap-2 d-md-flex justify-content-md-end\">\n \u003Cbutton class=\"btn btn-primary me-md-2\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\n## Button plugin\n\nThe button plugin allows you to create simple on/off toggle buttons.\n\n\u003CCallout>\nVisually, these toggle buttons are identical to the [checkbox toggle buttons]([[docsref:/forms/checks-radios#checkbox-toggle-buttons]]). However, they are conveyed differently by assistive technologies: the checkbox toggles will be announced by screen readers as \"checked\"/\"not checked\" (since, despite their appearance, they are fundamentally still checkboxes), whereas these toggle buttons will be announced as \"button\"/\"button pressed\". The choice between these two approaches will depend on the type of toggle you are creating, and whether or not the toggle will make sense to users when announced as a checkbox or as an actual button.\n\u003C/Callout>\n\n### Toggle states\n\nAdd `data-bs-toggle=\"button\"` to toggle a button's `active` state. If you're pre-toggling a button, you must manually add the `.active` class **and** `aria-pressed=\"true\"` to ensure that it is conveyed appropriately to assistive technologies.\n\n\u003CExample code={`\u003Cp class=\"d-inline-flex gap-1\">\n \u003Cbutton type=\"button\" class=\"btn\" data-bs-toggle=\"button\">Toggle button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn active\" data-bs-toggle=\"button\" aria-pressed=\"true\">Active toggle button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn\" disabled data-bs-toggle=\"button\">Disabled toggle button\u003C/button>\n\u003C/p>\n\u003Cp class=\"d-inline-flex gap-1\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"button\">Toggle button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary active\" data-bs-toggle=\"button\" aria-pressed=\"true\">Active toggle button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" disabled data-bs-toggle=\"button\">Disabled toggle button\u003C/button>\n\u003C/p>`} />\n\n\u003CExample code={`\u003Cp class=\"d-inline-flex gap-1\">\n \u003Ca href=\"#\" class=\"btn\" role=\"button\" data-bs-toggle=\"button\">Toggle link\u003C/a>\n \u003Ca href=\"#\" class=\"btn active\" role=\"button\" data-bs-toggle=\"button\" aria-pressed=\"true\">Active toggle link\u003C/a>\n \u003Ca class=\"btn disabled\" aria-disabled=\"true\" role=\"button\" data-bs-toggle=\"button\">Disabled toggle link\u003C/a>\n\u003C/p>\n\u003Cp class=\"d-inline-flex gap-1\">\n \u003Ca href=\"#\" class=\"btn btn-primary\" role=\"button\" data-bs-toggle=\"button\">Toggle link\u003C/a>\n \u003Ca href=\"#\" class=\"btn btn-primary active\" role=\"button\" data-bs-toggle=\"button\" aria-pressed=\"true\">Active toggle link\u003C/a>\n \u003Ca class=\"btn btn-primary disabled\" aria-disabled=\"true\" role=\"button\" data-bs-toggle=\"button\">Disabled toggle link\u003C/a>\n\u003C/p>`} />\n\n### Methods\n\nYou can create a button instance with the button constructor, for example:\n\n```js\nconst bsButton = new bootstrap.Button('#myButton')\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's button. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the button instance associated with a DOM element, you can use it like this: `bootstrap.Button.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a button instance associated with a DOM element or creates a new one in case it wasn't initialized. You can use it like this: `bootstrap.Button.getOrCreateInstance(element)`. |\n| `toggle` | Toggles push state. Gives the button the appearance that it has been activated. |\n\u003C/BsTable>\n\nFor example, to toggle all buttons\n\n```js\ndocument.querySelectorAll('.btn').forEach(buttonElement => {\n const button = bootstrap.Button.getOrCreateInstance(buttonElement)\n button.toggle()\n})\n```\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, buttons now use local CSS variables on `.btn` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"btn-css-vars\" file=\"scss/_buttons.scss\" />\n\nEach `.btn-*` modifier class updates the appropriate CSS variables to minimize additional CSS rules with our `button-variant()`, `button-outline-variant()`, and `button-size()` mixins.\n\nHere's an example of building a custom `.btn-*` modifier class as we do for the buttons unique to our docs by reassigning Bootstrap's CSS variables with a mixture of our own CSS and Sass variables.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-bd-primary\">Custom button\u003C/button>\n\u003C/div>\n\n\u003CScssDocs name=\"btn-css-vars-example\" file=\"site/src/scss/_buttons.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"btn-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\nThere are three mixins for buttons: button and button outline variant mixins (both based on `$theme-colors`), plus a button size mixin.\n\n\u003CScssDocs name=\"btn-variant-mixin\" file=\"scss/mixins/_buttons.scss\" />\n\n\u003CScssDocs name=\"btn-outline-variant-mixin\" file=\"scss/mixins/_buttons.scss\" />\n\n\u003CScssDocs name=\"btn-size-mixin\" file=\"scss/mixins/_buttons.scss\" />\n\n### Sass loops\n\nButton variants (for regular and outline buttons) use their respective mixins with our `$theme-colors` map to generate the modifier classes in `scss/_buttons.scss`.\n\n\u003CScssDocs name=\"btn-variant-loops\" file=\"scss/_buttons.scss\" />","src/content/docs/components/buttons.mdx","c617334b57f91df8","components/buttons.mdx","components/card",{"id":415,"data":417,"body":420,"filePath":421,"digest":422,"legacyId":423,"deferredRender":139},{"description":418,"title":419,"toc":139},"Bootstrap's cards provide a flexible and extensible content container with multiple variants and options.","Cards","import { getData } from '@libs/data'\n\n## About\n\nA **card** is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options. If you're familiar with Bootstrap 3, cards replace our old panels, wells, and thumbnails. Similar functionality to those components is available as modifier classes for cards.\n\n## Example\n\nCards are built with as little markup and styles as possible, but still manage to deliver a ton of control and customization. Built with flexbox, they offer easy alignment and mix well with other Bootstrap components. They have no `margin` by default, so use [spacing utilities]([[docsref:/utilities/spacing]]) as needed.\n\nBelow is an example of a basic card with mixed content and a fixed width. Cards have no fixed width to start, so they'll naturally fill the full width of its parent element. This is easily customized with our various [sizing options](#sizing).\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Content types\n\nCards support a wide variety of content, including images, text, list groups, links, and more. Below are examples of what's supported.\n\n### Body\n\nThe building block of a card is the `.card-body`. Use it whenever you need a padded section within a card.\n\n\u003CExample code={`\u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-body\">\n This is some text within a card body.\n \u003C/div>\n\u003C/div>`} />\n\n### Titles, text, and links\n\nCard titles are used by adding `.card-title` to a `\u003Ch*>` tag. In the same way, links are added and placed next to each other by adding `.card-link` to an `\u003Ca>` tag.\n\nSubtitles are used by adding a `.card-subtitle` to a `\u003Ch*>` tag. If the `.card-title` and the `.card-subtitle` items are placed in a `.card-body` item, the card title and subtitle are aligned nicely.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Ch6 class=\"card-subtitle mb-2 text-body-secondary\">Card subtitle\u003C/h6>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"card-link\">Card link\u003C/a>\n \u003Ca href=\"#\" class=\"card-link\">Another link\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n### Images\n\n`.card-img-top` and `.card-img-bottom` respectively set the top and bottom corners rounded to match the card's borders. With `.card-text`, text can be added to the card. Text within `.card-text` can also be styled with the standard HTML tags.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n### List groups\n\nCreate lists of content in a card with a flush list group.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-header\">\n Featured\n \u003C/div>\n \u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003C/ul>\n \u003Cdiv class=\"card-footer\">\n Card footer\n \u003C/div>\n\u003C/div>`} />\n\n### Kitchen sink\n\nMix and match multiple content types to create the card you need, or throw everything in there. Shown below are image styles, blocks, text styles, and a list group—all wrapped in a fixed-width card.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n \u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003C/ul>\n \u003Cdiv class=\"card-body\">\n \u003Ca href=\"#\" class=\"card-link\">Card link\u003C/a>\n \u003Ca href=\"#\" class=\"card-link\">Another link\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n### Header and footer\n\nAdd an optional header and/or footer within a card.\n\n\u003CExample code={`\u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-header\">\n Featured\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\nCard headers can be styled by adding `.card-header` to `\u003Ch*>` elements.\n\n\u003CExample code={`\u003Cdiv class=\"card\">\n \u003Ch5 class=\"card-header\">Featured\u003C/h5>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-header\">\n Quote\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Cblockquote class=\"blockquote mb-0\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003Cfooter class=\"blockquote-footer\">Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\u003C/footer>\n \u003C/blockquote>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card text-center\">\n \u003Cdiv class=\"card-header\">\n Featured\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n \u003Cdiv class=\"card-footer text-body-secondary\">\n 2 days ago\n \u003C/div>\n\u003C/div>`} />\n\n## Sizing\n\nCards assume no specific `width` to start, so they'll be 100% wide unless otherwise stated. You can change this as needed with custom CSS, grid classes, grid Sass mixins, or utilities.\n\n### Using grid markup\n\nUsing the grid, wrap cards in columns and rows as needed.\n\n\u003CExample code={`\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-6 mb-3 mb-sm-0\">\n \u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-sm-6\">\n \u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Using utilities\n\nUse our handful of [available sizing utilities]([[docsref:/utilities/sizing]]) to quickly set a card's width.\n\n\u003CExample code={`\u003Cdiv class=\"card w-75 mb-3\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Button\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card w-50\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Button\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n### Using custom CSS\n\nUse custom CSS in your stylesheets or as inline styles to set a width.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Text alignment\n\nYou can quickly change the text alignment of any card—in its entirety or specific parts—with our [text align classes]([[docsref:/utilities/text#text-alignment]]).\n\n\u003CExample code={`\u003Cdiv class=\"card mb-3\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card text-center mb-3\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card text-end\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Navigation\n\nAdd some navigation to a card's header (or block) with Bootstrap's [nav components]([[docsref:/components/navs-tabs]]).\n\n\u003CExample code={`\u003Cdiv class=\"card text-center\">\n \u003Cdiv class=\"card-header\">\n \u003Cul class=\"nav nav-tabs card-header-tabs\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"true\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card text-center\">\n \u003Cdiv class=\"card-header\">\n \u003Cul class=\"nav nav-pills card-header-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Images\n\nCards include a few options for working with images. Choose from appending \"image caps\" at either end of a card, overlaying images with card content, or simply embedding the image in a card.\n\n### Image caps\n\nSimilar to headers and footers, cards can include top and bottom \"image caps\"—images at the top or bottom of a card.\n\n\u003CExample code={`\u003Cdiv class=\"card mb-3\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-bottom\" text=\"Image cap\" />\n\u003C/div>`} />\n\n### Image overlays\n\nTurn an image into a card background and overlay your card's text. Depending on the image, you may or may not need additional styles or utilities.\n\n\u003CExample code={`\u003Cdiv class=\"card text-bg-dark\">\n \u003CPlaceholder width=\"100%\" height=\"270\" class=\"bd-placeholder-img-lg card-img\" text=\"Card image\" />\n \u003Cdiv class=\"card-img-overlay\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall>Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CCallout>\nNote that content should not be larger than the height of the image. If content is larger than the image the content will be displayed outside the image.\n\u003C/Callout>\n\n## Horizontal\n\nUsing a combination of grid and utility classes, cards can be made horizontal in a mobile-friendly and responsive way. In the example below, we remove the grid gutters with `.g-0` and use `.col-md-*` classes to make the card horizontal at the `md` breakpoint. Further adjustments may be needed depending on your card content.\n\n\u003CExample code={`\u003Cdiv class=\"card mb-3\" style=\"max-width: 540px;\">\n \u003Cdiv class=\"row g-0\">\n \u003Cdiv class=\"col-md-4\">\n \u003CPlaceholder width=\"100%\" height=\"250\" text=\"Image\" class=\"img-fluid rounded-start\" />\n \u003C/div>\n \u003Cdiv class=\"col-md-8\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Card styles\n\nCards include various options for customizing their backgrounds, borders, and color.\n\n### Background and color\n\n\u003CAddedIn version=\"5.2.0\" />\n\nSet a `background-color` with contrasting foreground `color` with [our `.text-bg-{color}` helpers]([[docsref:helpers/color-background]]). Previously it was required to manually pair your choice of [`.text-{color}`]([[docsref:/utilities/colors]]) and [`.bg-{color}`]([[docsref:/utilities/background]]) utilities for styling, which you still may use if you prefer.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"card text-bg-${themeColor.name} mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header\">Header\u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">${themeColor.title} card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>`)} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n### Border\n\nUse [border utilities]([[docsref:/utilities/borders]]) to change just the `border-color` of a card. Note that you can put `.text-{color}` classes on the parent `.card` or a subset of the card's contents as shown below.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"card border-${themeColor.name} mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header\">Header\u003C/div>\n \u003Cdiv class=\"card-body${themeColor.contrast_color ? '' : ` text-${themeColor.name}`}\">\n \u003Ch5 class=\"card-title\">${themeColor.title} card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>`)} />\n\n### Mixins utilities\n\nYou can also change the borders on the card header and footer as needed, and even remove their `background-color` with `.bg-transparent`.\n\n\u003CExample code={`\u003Cdiv class=\"card border-success mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header bg-transparent border-success\">Header\u003C/div>\n \u003Cdiv class=\"card-body text-success\">\n \u003Ch5 class=\"card-title\">Success card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer bg-transparent border-success\">Footer\u003C/div>\n\u003C/div>`} />\n\n## Card layout\n\nIn addition to styling the content within cards, Bootstrap includes a few options for laying out series of cards. For the time being, **these layout options are not yet responsive**.\n\n### Card groups\n\nUse card groups to render cards as a single, attached element with equal width and height columns. Card groups start off stacked and use `display: flex;` to become attached with uniform dimensions starting at the `sm` breakpoint.\n\n\u003CExample code={`\u003Cdiv class=\"card-group\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This card has supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nWhen using card groups with footers, their content will automatically line up.\n\n\u003CExample code={`\u003Cdiv class=\"card-group\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This card has supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Grid cards\n\nUse the Bootstrap grid system and its [`.row-cols` classes]([[docsref:/layout/grid#row-columns]]) to control how many grid columns (wrapped around your cards) you show per row. For example, here's `.row-cols-1` laying out the cards on one column, and `.row-cols-md-2` splitting four cards to equal width across multiple rows, from the medium breakpoint up.\n\n\u003CExample code={`\u003Cdiv class=\"row row-cols-1 row-cols-md-2 g-4\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nChange it to `.row-cols-3` and you'll see the fourth card wrap.\n\n\u003CExample code={`\u003Cdiv class=\"row row-cols-1 row-cols-md-3 g-4\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nWhen you need equal height, add `.h-100` to the cards. If you want equal heights by default, you can set `$card-height: 100%` in Sass.\n\n\u003CExample code={`\u003Cdiv class=\"row row-cols-1 row-cols-md-3 g-4\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a short card.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nJust like with card groups, card footers will automatically line up.\n\n\u003CExample code={`\u003Cdiv class=\"row row-cols-1 row-cols-md-3 g-4\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This card has supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Masonry\n\nIn `v4` we used a CSS-only technique to mimic the behavior of [Masonry](https://masonry.desandro.com/)-like columns, but this technique came with lots of unpleasant [side effects](https://github.com/twbs/bootstrap/pull/28922). If you want to have this type of layout in `v5`, you can just make use of Masonry plugin. **Masonry is not included in Bootstrap**, but we've made a [demo example]([[docsref:/examples/masonry]]) to help you get started.\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, cards now use local CSS variables on `.card` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"card-css-vars\" file=\"scss/_card.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"card-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/card.mdx","7a4693fffa649103","components/card.mdx","components/carousel",{"id":424,"data":426,"body":429,"filePath":430,"digest":431,"legacyId":432,"deferredRender":139},{"description":427,"title":428,"toc":139},"A slideshow component for cycling through elements—images or slides of text—like a carousel.","Carousel","## How it works\n\n- The carousel is a slideshow for cycling through a series of content, built with CSS 3D transforms and a bit of JavaScript. It works with a series of images, text, or custom markup. It also includes support for previous/next controls and indicators.\n\n- For performance reasons, **carousels must be manually initialized** using the [carousel constructor method](#methods). Without initialization, some of the event listeners (specifically, the events needed touch/swipe support) will not be registered until a user has explicitly activated a control or indicator.\n\n The only exception are [autoplaying carousels](#autoplaying-carousels) with the `data-bs-ride=\"carousel\"` attribute as these are initialized automatically on page load. If you're using autoplaying carousels with the data attribute, **don't explicitly initialize the same carousels with the constructor method.**\n\n- Nested carousels are not supported. You should also be aware that carousels in general can often cause usability and accessibility challenges.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Basic examples\n\nHere is a basic example of a carousel with three slides. Note the previous/next controls. We recommend using `\u003Cbutton>` elements, but you can also use `\u003Ca>` elements with `role=\"button\"`.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExample\" class=\"carousel slide\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExample\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExample\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\nCarousels don't automatically normalize slide dimensions. As such, you may need to use additional utilities or custom styles to appropriately size content. While carousels support previous/next controls and indicators, they're not explicitly required. Add and customize as you see fit.\n\n**You must add the `.active` class to one of the slides**, otherwise the carousel will not be visible. Also be sure to set a unique `id` on the `.carousel` for optional controls, especially if you're using multiple carousels on a single page. Control and indicator elements must have a `data-bs-target` attribute (or `href` for links) that matches the `id` of the `.carousel` element.\n\n### Indicators\n\nYou can add indicators to the carousel, alongside the previous/next controls. The indicators let users jump directly to a particular slide.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleIndicators\" class=\"carousel slide\">\n \u003Cdiv class=\"carousel-indicators\">\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide-to=\"0\" class=\"active\" aria-current=\"true\" aria-label=\"Slide 1\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide-to=\"1\" aria-label=\"Slide 2\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide-to=\"2\" aria-label=\"Slide 3\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n### Captions\n\nYou can add captions to your slides with the `.carousel-caption` element within any `.carousel-item`. They can be easily hidden on smaller viewports, as shown below, with optional [display utilities]([[docsref:/utilities/display]]). We hide them initially with `.d-none` and bring them back on medium-sized devices with `.d-md-block`.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleCaptions\" class=\"carousel slide\">\n \u003Cdiv class=\"carousel-indicators\">\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide-to=\"0\" class=\"active\" aria-current=\"true\" aria-label=\"Slide 1\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide-to=\"1\" aria-label=\"Slide 2\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide-to=\"2\" aria-label=\"Slide 3\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>First slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the first slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>Second slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the second slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>Third slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the third slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n### Crossfade\n\nAdd `.carousel-fade` to your carousel to animate slides with a fade transition instead of a slide. Depending on your carousel content (e.g., text only slides), you may want to add `.bg-body` or some custom CSS to the `.carousel-item`s for proper crossfading.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleFade\" class=\"carousel slide carousel-fade\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleFade\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleFade\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n## Autoplaying carousels\n\nYou can make your carousels autoplay on page load by setting the `ride` option to `carousel`. Autoplaying carousels automatically pause while hovered with the mouse. This behavior can be controlled with the `pause` option. In browsers that support the [Page Visibility API](https://www.w3.org/TR/page-visibility/), the carousel will stop cycling when the webpage is not visible to the user (such as when the browser tab is inactive, or when the browser window is minimized).\n\n\u003CCallout>\nFor accessibility reasons, we recommend avoiding the use of autoplaying carousels. If your page does include an autoplaying carousel, we recommend providing an additional button or control to explicitly pause/stop the carousel.\n\nSee [WCAG 2.2 Success Criterion 2.2.2 Pause, Stop, Hide](https://www.w3.org/TR/WCAG/#pause-stop-hide).\n\u003C/Callout>\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleAutoplaying\" class=\"carousel slide\" data-bs-ride=\"carousel\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleAutoplaying\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleAutoplaying\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\nWhen the `ride` option is set to `true`, rather than `carousel`, the carousel won't automatically start to cycle on page load. Instead, it will only start after the first user interaction.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleRide\" class=\"carousel slide\" data-bs-ride=\"true\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleRide\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleRide\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n### Individual `.carousel-item` interval\n\nAdd `data-bs-interval=\"\"` to a `.carousel-item` to change the amount of time to delay between automatically cycling to the next item.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleInterval\" class=\"carousel slide\" data-bs-ride=\"carousel\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\" data-bs-interval=\"10000\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\" data-bs-interval=\"2000\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleInterval\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleInterval\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n### Autoplaying carousels without controls\n\nHere's a carousel with slides only. Note the presence of the `.d-block` and `.w-100` on carousel images to prevent browser default image alignment.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleSlidesOnly\" class=\"carousel slide\" data-bs-ride=\"carousel\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Disable touch swiping\n\nCarousels support swiping left/right on touchscreen devices to move between slides. This can be disabled by setting the `touch` option to `false`.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleControlsNoTouching\" class=\"carousel slide\" data-bs-touch=\"false\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleControlsNoTouching\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleControlsNoTouching\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n## Dark variant\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\nAdd `.carousel-dark` to the `.carousel` for darker controls, indicators, and captions. Controls are inverted compared to their default white fill with the `filter` CSS property. Captions and controls have additional Sass variables that customize the `color` and `background-color`.\n\n\u003CCalloutDeprecatedDarkVariants component=\"carousel\" />\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleDark\" class=\"carousel carousel-dark slide\">\n \u003Cdiv class=\"carousel-indicators\">\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide-to=\"0\" class=\"active\" aria-current=\"true\" aria-label=\"Slide 1\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide-to=\"1\" aria-label=\"Slide 2\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide-to=\"2\" aria-label=\"Slide 3\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\" data-bs-interval=\"10000\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#aaa\" background=\"#f5f5f5\" text=\"First slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>First slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the first slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"carousel-item\" data-bs-interval=\"2000\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#bbb\" background=\"#eee\" text=\"Second slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>Second slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the second slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#999\" background=\"#e5e5e5\" text=\"Third slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>Third slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the third slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n## Custom transition\n\nThe transition duration of `.carousel-item` can be changed with the `$carousel-transition-duration` Sass variable before compiling or custom styles if you're using the compiled CSS. If multiple transitions are applied, make sure the transform transition is defined first (e.g. `transition: transform 2s ease, opacity .5s ease-out`).\n\n## CSS\n\n### Sass variables\n\nVariables for all carousels:\n\n\u003CScssDocs name=\"carousel-variables\" file=\"scss/_variables.scss\" />\n\nVariables for the [dark carousel](#dark-variant):\n\n\u003CScssDocs name=\"carousel-dark-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\n### Via data attributes\n\nUse data attributes to easily control the position of the carousel. `data-bs-slide` accepts the keywords `prev` or `next`, which alters the slide position relative to its current position. Alternatively, use `data-bs-slide-to` to pass a raw slide index to the carousel `data-bs-slide-to=\"2\"`, which shifts the slide position to a particular index beginning with `0`.\n\n### Via JavaScript\n\nCall carousel manually with:\n\n```js\nconst carousel = new bootstrap.Carousel('#myCarousel')\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `interval` | number | `5000` | The amount of time to delay between automatically cycling an item. |\n| `keyboard` | boolean | `true` | Whether the carousel should react to keyboard events. |\n| `pause` | string, boolean | `\"hover\"` | If set to `\"hover\"`, pauses the cycling of the carousel on `mouseenter` and resumes the cycling of the carousel on `mouseleave`. If set to `false`, hovering over the carousel won't pause it. On touch-enabled devices, when set to `\"hover\"`, cycling will pause on `touchend` (once the user finished interacting with the carousel) for two intervals, before automatically resuming. This is in addition to the mouse behavior. |\n| `ride` | string, boolean | `false` | If set to `true`, autoplays the carousel after the user manually cycles the first item. If set to `\"carousel\"`, autoplays the carousel on load. |\n| `touch` | boolean | `true` | Whether the carousel should support left/right swipe interactions on touchscreen devices. |\n| `wrap` | boolean | `true` | Whether the carousel should cycle continuously or have hard stops. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nYou can create a carousel instance with the carousel constructor, and pass on any additional options. For example, to manually initialize an autoplaying carousel (assuming you're not using the `data-bs-ride=\"carousel\"` attribute in the markup itself) with a specific interval and with touch support disabled, you can use:\n\n```js\nconst myCarouselElement = document.querySelector('#myCarousel')\n\nconst carousel = new bootstrap.Carousel(myCarouselElement, {\n interval: 2000,\n touch: false\n})\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `cycle` | Starts cycling through the carousel items from left to right. |\n| `dispose` | Destroys an element's carousel. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the carousel instance associated to a DOM element. You can use it like this: `bootstrap.Carousel.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a carousel instance associated to a DOM element, or creates a new one in case it wasn't initialized. You can use it like this: `bootstrap.Carousel.getOrCreateInstance(element)`. |\n| `next` | Cycles to the next item. **Returns to the caller before the next item has been shown** (e.g., before the `slid.bs.carousel` event occurs). |\n| `nextWhenVisible` | Don't cycle carousel to next when the page, the carousel, or the carousel's parent aren't visible. **Returns to the caller before the target item has been shown**. |\n| `pause` | Stops the carousel from cycling through items. |\n| `prev` | Cycles to the previous item. **Returns to the caller before the previous item has been shown** (e.g., before the `slid.bs.carousel` event occurs). |\n| `to` | Cycles the carousel to a particular frame (0 based, similar to an array). **Returns to the caller before the target item has been shown** (e.g., before the `slid.bs.carousel` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nBootstrap's carousel class exposes two events for hooking into carousel functionality. Both events have the following additional properties:\n\n- `direction`: The direction in which the carousel is sliding (either `\"left\"` or `\"right\"`).\n- `relatedTarget`: The DOM element that is being slid into place as the active item.\n- `from`: The index of the current item\n- `to`: The index of the next item\n\nAll carousel events are fired at the carousel itself (i.e. at the `\u003Cdiv class=\"carousel\">`).\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `slid.bs.carousel` | Fired when the carousel has completed its slide transition. |\n| `slide.bs.carousel` | Fires immediately when the `slide` instance method is invoked. |\n\u003C/BsTable>\n\n```js\nconst myCarousel = document.getElementById('myCarousel')\n\nmyCarousel.addEventListener('slide.bs.carousel', event => {\n // do something...\n})\n```","src/content/docs/components/carousel.mdx","2873ba5c11474379","components/carousel.mdx","components/close-button",{"id":433,"data":435,"body":438,"filePath":439,"digest":440,"legacyId":441,"deferredRender":139},{"description":436,"title":437,"toc":139},"A generic close button for dismissing content like modals and alerts.","Close button","## Example\n\nProvide an option to dismiss or close a component with `.btn-close`. Default styling is limited, but highly customizable. Modify the Sass variables to replace the default `background-image`. **Be sure to include text for screen readers**, as we've done with `aria-label`.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn-close\" aria-label=\"Close\">\u003C/button>`} />\n\n## Disabled state\n\nDisabled close buttons change their `opacity`. We've also applied `pointer-events: none` and `user-select: none` to preventing hover and active states from triggering.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn-close\" disabled aria-label=\"Close\">\u003C/button>`} />\n\n## Dark variant\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\n\u003CCallout type=\"warning\">\n**Heads up!** As of v5.3.0, the `.btn-close-white` class is deprecated. Instead, use `data-bs-theme=\"dark\"` to change the color mode of the close button.\n\u003C/Callout>\n\nAdd `data-bs-theme=\"dark\"` to the `.btn-close`, or to its parent element, to invert the close button. This uses the `filter` property to invert the `background-image` without overriding its value.\n\n\u003CExample class=\"bg-dark\" code={`\u003Cdiv data-bs-theme=\"dark\">\n \u003Cbutton type=\"button\" class=\"btn-close\" aria-label=\"Close\">\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn-close\" disabled aria-label=\"Close\">\u003C/button>\n\u003C/div>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.3.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, close button now uses local CSS variables on `.btn-close` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"close-css-vars\" file=\"scss/_close.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"close-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/close-button.mdx","b8e90b732d1b18d5","components/close-button.mdx","components/collapse",{"id":442,"data":444,"body":447,"filePath":448,"digest":449,"legacyId":450,"deferredRender":139},{"description":445,"title":446,"toc":139},"Toggle the visibility of content across your project with a few classes and our JavaScript plugins.","Collapse","## How it works\n\nThe collapse JavaScript plugin is used to show and hide content. Buttons or anchors are used as triggers that are mapped to specific elements you toggle. Collapsing an element will animate the `height` from its current value to `0`. Given how CSS handles animations, you cannot use `padding` on a `.collapse` element. Instead, use the class as an independent wrapping element.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Example\n\nClick the buttons below to show and hide another element via class changes:\n\n- `.collapse` hides content\n- `.collapsing` is applied during transitions\n- `.collapse.show` shows content\n\nGenerally, we recommend using a `\u003Cbutton>` with the `data-bs-target` attribute. While not recommended from a semantic point of view, you can also use an `\u003Ca>` link with the `href` attribute (and a `role=\"button\"`). In both cases, the `data-bs-toggle=\"collapse\"` is required.\n\n\u003CExample code={`\u003Cp class=\"d-inline-flex gap-1\">\n \u003Ca class=\"btn btn-primary\" data-bs-toggle=\"collapse\" href=\"#collapseExample\" role=\"button\" aria-expanded=\"false\" aria-controls=\"collapseExample\">\n Link with href\n \u003C/a>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseExample\" aria-expanded=\"false\" aria-controls=\"collapseExample\">\n Button with data-bs-target\n \u003C/button>\n\u003C/p>\n\u003Cdiv class=\"collapse\" id=\"collapseExample\">\n \u003Cdiv class=\"card card-body\">\n Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.\n \u003C/div>\n\u003C/div>`} />\n\n## Horizontal\n\nThe collapse plugin supports horizontal collapsing. Add the `.collapse-horizontal` modifier class to transition the `width` instead of `height` and set a `width` on the immediate child element. Feel free to write your own custom Sass, use inline styles, or use our [width utilities]([[docsref:/utilities/sizing]]).\n\n\u003CCallout>\nPlease note that while the example below has a `min-height` set to avoid excessive repaints in our docs, this is not explicitly required. **Only the `width` on the child element is required.**\n\u003C/Callout>\n\n\u003CExample code={`\u003Cp>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseWidthExample\" aria-expanded=\"false\" aria-controls=\"collapseWidthExample\">\n Toggle width collapse\n \u003C/button>\n\u003C/p>\n\u003Cdiv style=\"min-height: 120px;\">\n \u003Cdiv class=\"collapse collapse-horizontal\" id=\"collapseWidthExample\">\n \u003Cdiv class=\"card card-body\" style=\"width: 300px;\">\n This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Multiple toggles and targets\n\nA `\u003Cbutton>` or `\u003Ca>` element can show and hide multiple elements by referencing them with a selector in its `data-bs-target` or `href` attribute.\nConversely, multiple `\u003Cbutton>` or `\u003Ca>` elements can show and hide the same element if they each reference it with their `data-bs-target` or `href` attribute.\n\n\u003CExample code={`\u003Cp class=\"d-inline-flex gap-1\">\n \u003Ca class=\"btn btn-primary\" data-bs-toggle=\"collapse\" href=\"#multiCollapseExample1\" role=\"button\" aria-expanded=\"false\" aria-controls=\"multiCollapseExample1\">Toggle first element\u003C/a>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#multiCollapseExample2\" aria-expanded=\"false\" aria-controls=\"multiCollapseExample2\">Toggle second element\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\".multi-collapse\" aria-expanded=\"false\" aria-controls=\"multiCollapseExample1 multiCollapseExample2\">Toggle both elements\u003C/button>\n\u003C/p>\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"collapse multi-collapse\" id=\"multiCollapseExample1\">\n \u003Cdiv class=\"card card-body\">\n Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"collapse multi-collapse\" id=\"multiCollapseExample2\">\n \u003Cdiv class=\"card card-body\">\n Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Accessibility\n\nBe sure to add `aria-expanded` to the control element. This attribute explicitly conveys the current state of the collapsible element tied to the control to screen readers and similar assistive technologies. If the collapsible element is closed by default, the attribute on the control element should have a value of `aria-expanded=\"false\"`. If you've set the collapsible element to be open by default using the `show` class, set `aria-expanded=\"true\"` on the control instead. The plugin will automatically toggle this attribute on the control based on whether or not the collapsible element has been opened or closed (via JavaScript, or because the user triggered another control element also tied to the same collapsible element). If the control element's HTML element is not a button (e.g., an `\u003Ca>` or `\u003Cdiv>`), the attribute `role=\"button\"` should be added to the element.\n\nIf your control element is targeting a single collapsible element – i.e. the `data-bs-target` attribute is pointing to an `id` selector – you should add the `aria-controls` attribute to the control element, containing the `id` of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.\n\nNote that Bootstrap's current implementation does not cover the various *optional* keyboard interactions described in the [ARIA Authoring Practices Guide accordion pattern](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/) - you will need to include these yourself with custom JavaScript.\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"collapse-transition\" file=\"scss/_variables.scss\" />\n\n### Classes\n\nCollapse transition classes can be found in `scss/_transitions.scss` as these are shared across multiple components (collapse and accordion).\n\n\u003CScssDocs name=\"collapse-classes\" file=\"scss/_transitions.scss\" />\n\n## Usage\n\nThe collapse plugin utilizes a few classes to handle the heavy lifting:\n\n- `.collapse` hides the content\n- `.collapse.show` shows the content\n- `.collapsing` is added when the transition starts, and removed when it finishes\n\nThese classes can be found in `_transitions.scss`.\n\n### Via data attributes\n\nJust add `data-bs-toggle=\"collapse\"` and a `data-bs-target` to the element to automatically assign control of one or more collapsible elements. The `data-bs-target` attribute accepts a CSS selector to apply the collapse to. Be sure to add the class `collapse` to the collapsible element. If you'd like it to default open, add the additional class `show`.\n\nTo add accordion-like group management to a collapsible area, add the data attribute `data-bs-parent=\"#selector\"`. Refer to the [accordion page]([[docsref:/components/accordion]]) for more information.\n\n### Via JavaScript\n\nEnable manually with:\n\n```js\nconst collapseElementList = document.querySelectorAll('.collapse')\nconst collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n`parent` | selector, DOM element | `null` | If parent is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the `card` class). The attribute has to be set on the target collapsible area. |\n`toggle` | boolean | `true` | Toggles the collapsible element on invocation. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nActivates your content as a collapsible element. Accepts an optional options `object`.\n\nYou can create a collapse instance with the constructor, for example:\n\n```js\nconst bsCollapse = new bootstrap.Collapse('#myCollapse', {\n toggle: false\n})\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's collapse. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the collapse instance associated to a DOM element, you can use it like this: `bootstrap.Collapse.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a collapse instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Collapse.getOrCreateInstance(element)`. |\n| `hide` | Hides a collapsible element. **Returns to the caller before the collapsible element has actually been hidden** (e.g., before the `hidden.bs.collapse` event occurs). |\n| `show` | Shows a collapsible element. **Returns to the caller before the collapsible element has actually been shown** (e.g., before the `shown.bs.collapse` event occurs). |\n| `toggle` | Toggles a collapsible element to shown or hidden. **Returns to the caller before the collapsible element has actually been shown or hidden** (i.e. before the `shown.bs.collapse` or `hidden.bs.collapse` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nBootstrap's collapse class exposes a few events for hooking into collapse functionality.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.collapse` | This event is fired immediately when the `hide` method has been called. |\n| `hidden.bs.collapse` | This event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete). |\n| `show.bs.collapse` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.collapse` | This event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete). |\n\u003C/BsTable>\n\n```js\nconst myCollapsible = document.getElementById('myCollapsible')\nmyCollapsible.addEventListener('hidden.bs.collapse', event => {\n // do something...\n})\n```","src/content/docs/components/collapse.mdx","68f66325b9dcdf7b","components/collapse.mdx","components/dropdowns",{"id":451,"data":453,"body":456,"filePath":457,"digest":458,"legacyId":459,"deferredRender":139},{"description":454,"title":455,"toc":139},"Toggle contextual overlays for displaying lists of links and more with the Bootstrap dropdown plugin.","Dropdowns","## Overview\n\nDropdowns are toggleable, contextual overlays for displaying lists of links and more. They're made interactive with the included Bootstrap dropdown JavaScript plugin. They're toggled by clicking, not by hovering; this is [an intentional design decision](https://markdotto.com/blog/bootstrap-explained-dropdowns/).\n\nDropdowns are built on a third party library, [Popper](https://popper.js.org/docs/v2/), which provides dynamic positioning and viewport detection. Be sure to include [popper.min.js]([[config:cdn.popper]]) before Bootstrap's JavaScript or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper. Popper isn't used to position dropdowns in navbars though as dynamic positioning isn't required.\n\n## Accessibility\n\nThe [\u003Cabbr title=\"Web Accessibility Initiative\">WAI\u003C/abbr> \u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr>](https://www.w3.org/TR/wai-aria/) standard defines an actual [`role=\"menu\"` widget](https://www.w3.org/TR/wai-aria/#menu), but this is specific to application-like menus which trigger actions or functions. \u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr> menus can only contain menu items, checkbox menu items, radio button menu items, radio button groups, and sub-menus.\n\nBootstrap's dropdowns, on the other hand, are designed to be generic and applicable to a variety of situations and markup structures. For instance, it is possible to create dropdowns that contain additional inputs and form controls, such as search fields or login forms. For this reason, Bootstrap does not expect (nor automatically add) any of the `role` and `aria-` attributes required for true \u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr> menus. Authors will have to include these more specific attributes themselves.\n\nHowever, Bootstrap does add built-in support for most standard keyboard menu interactions, such as the ability to move through individual `.dropdown-item` elements using the cursor keys and close the menu with the \u003Ckbd>Esc\u003C/kbd> key.\n\n## Examples\n\nWrap the dropdown's toggle (your button or link) and the dropdown menu within `.dropdown`, or another element that declares `position: relative;`. Ideally, you should use a `\u003Cbutton>` element as the dropdown trigger, but the plugin will work with `\u003Ca>` elements as well. The examples shown here use semantic `\u003Cul>` elements where appropriate, but custom markup is supported.\n\n### Single button\n\nAny single `.btn` can be turned into a dropdown toggle with some markup changes. Here's how you can put them to work with `\u003Cbutton>` elements:\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nWhile `\u003Cbutton>` is the recommended control for a dropdown toggle, there might be situations where you have to use an `\u003Ca>` element. If you do, we recommend adding a `role=\"button\"` attribute to appropriately convey control's purpose to assistive technologies such as screen readers.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Ca class=\"btn btn-secondary dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown link\n \u003C/a>\n\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nThe best part is you can do this with any button variant, too:\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Primary\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Secondary\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-success dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Success\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-info dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Info\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-warning dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Warning\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Danger\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Example single danger button -->\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Danger\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n```\n\n### Split button\n\nSimilarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` for proper spacing around the dropdown caret.\n\nWe use this extra class to reduce the horizontal `padding` on either side of the caret by 25% and remove the `margin-left` that's added for regular button dropdowns. Those extra changes keep the caret centered in the split button and provide a more appropriately sized hit area next to the main button.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Primary\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">Secondary\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-success\">Success\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-success dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-info\">Info\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-info dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-warning\">Warning\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-warning dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger\">Danger\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-danger dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Example split danger button -->\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger\">Danger\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-danger dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n```\n\n## Sizing\n\nButton dropdowns work with buttons of all sizes, including default and split dropdown buttons.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-lg dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Large button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-lg btn-secondary\">Large split button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Large button groups (default and split) -->\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-lg dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Large button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-lg\" type=\"button\">\n Large split button\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-sm dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Small button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-sm btn-secondary\">Small split button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-sm dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Small button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-sm\" type=\"button\">\n Small split button\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n```\n\n## Dark dropdowns\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\nOpt into darker dropdowns to match a dark navbar or custom style by adding `.dropdown-menu-dark` onto an existing `.dropdown-menu`. No changes are required to the dropdown items.\n\n\u003CCalloutDeprecatedDarkVariants component=\"dropdown-menu\" />\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown button\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-dark\">\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nAnd putting it to use in a navbar:\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg navbar-dark bg-dark\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNavDarkDropdown\" aria-controls=\"navbarNavDarkDropdown\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNavDarkDropdown\">\n \u003Cul class=\"navbar-nav\">\n \u003Cli class=\"nav-item dropdown\">\n \u003Cbutton class=\"btn btn-dark dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-dark\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n## Directions\n\n\u003CCallout>\n**Directions are flipped in RTL mode.** As such, `.dropstart` will appear on the right side.\n\u003C/Callout>\n\n### Centered\n\nMake the dropdown menu centered below the toggle with `.dropdown-center` on the parent element.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown-center\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Centered dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action two\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action three\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n### Dropup\n\nTrigger dropdown menus above elements by adding `.dropup` to the parent element.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropup\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropup\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Default dropup button -->\n\u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropup\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n\n\u003C!-- Split dropup button -->\n\u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropup\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n```\n\n### Dropup centered\n\nMake the dropup menu centered above the toggle with `.dropup-center` on the parent element.\n\n\u003CExample code={`\u003Cdiv class=\"dropup-center dropup\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Centered dropup\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action two\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action three\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n### Dropend\n\nTrigger dropdown menus at the right of the elements by adding `.dropend` to the parent element.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropend\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropend\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropend\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Default dropend button -->\n\u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropend\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n\n\u003C!-- Split dropend button -->\n\u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropend\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropend\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n```\n\n### Dropstart\n\nTrigger dropdown menus at the left of the elements by adding `.dropstart` to the parent element.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropstart\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropstart\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropstart\n \u003C/button>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Default dropstart button -->\n\u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropstart\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n\n\u003C!-- Split dropstart button -->\n\u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropstart\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropstart\n \u003C/button>\n\u003C/div>\n```\n\n## Menu items\n\nYou can use `\u003Ca>` or `\u003Cbutton>` elements as dropdown items.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Another action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Something else here\u003C/button>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nYou can also create non-interactive dropdown items with `.dropdown-item-text`. Feel free to style further with custom CSS or text utilities.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Cspan class=\"dropdown-item-text\">Dropdown item text\u003C/span>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n### Active\n\nAdd `.active` to items in the dropdown to **style them as active**. To convey the active state to assistive technologies, use the `aria-current` attribute — using the `page` value for the current page, or `true` for the current item in a set.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Regular link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\" aria-current=\"true\">Active link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another link\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n### Disabled\n\nAdd `.disabled` to items in the dropdown to **style them as disabled**.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Regular link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item disabled\" aria-disabled=\"true\">Disabled link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another link\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n## Menu alignment\n\nBy default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. You can change this with the directional `.drop*` classes, but you can also control them with additional modifier classes.\n\nAdd `.dropdown-menu-end` to a `.dropdown-menu` to right align the dropdown menu. Directions are mirrored when using Bootstrap in RTL, meaning `.dropdown-menu-end` will appear on the left side.\n\n\u003CCallout>\n**Heads up!** Dropdowns are positioned thanks to Popper except when they are contained in a navbar.\n\u003C/Callout>\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Right-aligned menu example\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Another action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Something else here\u003C/button>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n### Responsive alignment\n\nIf you want to use responsive alignment, disable dynamic positioning by adding the `data-bs-display=\"static\"` attribute and use the responsive variation classes.\n\nTo align **right** the dropdown menu with the given breakpoint or larger, add `.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end`.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\">\n Left-aligned but right aligned when large screen\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-lg-end\">\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Another action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Something else here\u003C/button>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nTo align **left** the dropdown menu with the given breakpoint or larger, add `.dropdown-menu-end` and `.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-start`.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\">\n Right-aligned but left aligned when large screen\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end dropdown-menu-lg-start\">\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Another action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Something else here\u003C/button>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nNote that you don't need to add a `data-bs-display=\"static\"` attribute to dropdown buttons in navbars, since Popper isn't used in navbars.\n\n### Alignment options\n\nTaking most of the options shown above, here's a small kitchen sink demo of various dropdown alignment options in one place.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Right-aligned menu\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\">\n Left-aligned, right-aligned lg\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-lg-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\">\n Right-aligned, left-aligned lg\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end dropdown-menu-lg-start\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropstart\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropend\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropup\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## Menu content\n\n### Headers\n\nAdd a header to label sections of actions in any dropdown menu.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ch6 class=\"dropdown-header\">Dropdown header\u003C/h6>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n### Dividers\n\nSeparate groups of related menu items with a divider.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n### Text\n\nPlace any freeform text within a dropdown menu with text and use [spacing utilities]([[docsref:/utilities/spacing]]). Note that you'll likely need additional sizing styles to constrain the menu width.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown-menu p-4 text-body-secondary\" style=\"max-width: 200px;\">\n \u003Cp>\n Some example text that's free-flowing within the dropdown menu.\n \u003C/p>\n \u003Cp class=\"mb-0\">\n And this is more example text.\n \u003C/p>\n\u003C/div>`} />\n\n### Forms\n\nPut a form within a dropdown menu, or make it into a dropdown menu, and use [margin or padding utilities]([[docsref:/utilities/spacing]]) to give it the negative space you require.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown-menu\">\n \u003Cform class=\"px-4 py-3\">\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleDropdownFormEmail1\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"exampleDropdownFormEmail1\" placeholder=\"email@example.com\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleDropdownFormPassword1\" class=\"form-label\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"exampleDropdownFormPassword1\" placeholder=\"Password\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput type=\"checkbox\" class=\"form-check-input\" id=\"dropdownCheck\">\n \u003Clabel class=\"form-check-label\" for=\"dropdownCheck\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Sign in\u003C/button>\n \u003C/form>\n \u003Cdiv class=\"dropdown-divider\">\u003C/div>\n \u003Ca class=\"dropdown-item\" href=\"#\">New around here? Sign up\u003C/a>\n \u003Ca class=\"dropdown-item\" href=\"#\">Forgot password?\u003C/a>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-auto-close=\"outside\">\n Dropdown form\n \u003C/button>\n \u003Cform class=\"dropdown-menu p-4\">\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleDropdownFormEmail2\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"exampleDropdownFormEmail2\" placeholder=\"email@example.com\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleDropdownFormPassword2\" class=\"form-label\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"exampleDropdownFormPassword2\" placeholder=\"Password\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput type=\"checkbox\" class=\"form-check-input\" id=\"dropdownCheck2\">\n \u003Clabel class=\"form-check-label\" for=\"dropdownCheck2\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Sign in\u003C/button>\n \u003C/form>\n\u003C/div>`} />\n\n## Dropdown options\n\nUse `data-bs-offset` or `data-bs-reference` to change the location of the dropdown.\n\n\u003CExample code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"dropdown me-1\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-offset=\"10,20\">\n Offset\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">Reference\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>`} />\n\n### Auto close behavior\n\nBy default, the dropdown menu is closed when clicking inside or outside the dropdown menu. You can use the `autoClose` option to change this behavior of the dropdown.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"true\" aria-expanded=\"false\">\n Default dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"inside\" aria-expanded=\"false\">\n Clickable inside\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" aria-expanded=\"false\">\n Clickable outside\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"false\" aria-expanded=\"false\">\n Manual close\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, dropdowns now use local CSS variables on `.dropdown-menu` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"dropdown-css-vars\" file=\"scss/_dropdown.scss\" />\n\n\u003CCallout>\nDropdown items include at least one variable that is not set on `.dropdown`. This allows you to provide a new value while Bootstrap defaults to a fallback value.\n\n- `--bs-dropdown-item-border-radius`\n\u003C/Callout>\n\nCustomization through CSS variables can be seen on the `.dropdown-menu-dark` class where we override specific values without adding duplicate CSS selectors.\n\n\u003CScssDocs name=\"dropdown-dark-css-vars\" file=\"scss/_dropdown.scss\" />\n\n### Sass variables\n\nVariables for all dropdowns:\n\n\u003CScssDocs name=\"dropdown-variables\" file=\"scss/_variables.scss\" />\n\nVariables for the [dark dropdown](#dark-dropdowns):\n\n\u003CScssDocs name=\"dropdown-dark-variables\" file=\"scss/_variables.scss\" />\n\nVariables for the CSS-based carets that indicate a dropdown's interactivity:\n\n\u003CScssDocs name=\"caret-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\nMixins are used to generate the CSS-based carets and can be found in `scss/mixins/_caret.scss`.\n\n\u003CScssDocs name=\"caret-mixins\" file=\"scss/mixins/_caret.scss\" />\n\n## Usage\n\nVia data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.show` class on the parent `.dropdown-menu`. The `data-bs-toggle=\"dropdown\"` attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.\n\n\u003CCallout>\nOn touch-enabled devices, opening a dropdown adds empty `mouseover` handlers to the immediate children of the `\u003Cbody>` element. This admittedly ugly hack is necessary to work around a [quirk in iOS' event delegation](https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html), which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code that closes the dropdown. Once the dropdown is closed, these additional empty `mouseover` handlers are removed.\n\u003C/Callout>\n\n### Via data attributes\n\nAdd `data-bs-toggle=\"dropdown\"` to a link or button to toggle a dropdown.\n\n```html\n\u003Cdiv class=\"dropdown\">\n \u003Cbutton type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown trigger\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n```\n\n### Via JavaScript\n\n\u003CCallout type=\"warning\">\nDropdowns must have `data-bs-toggle=\"dropdown\"` on their trigger element, regardless of whether you call your dropdown via JavaScript or use the data-api.\n\u003C/Callout>\n\nCall the dropdowns via JavaScript:\n\n```js\nconst dropdownElementList = document.querySelectorAll('.dropdown-toggle')\nconst dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl))\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `autoClose` | boolean, string | `true` | Configure the auto close behavior of the dropdown: \u003Cul class=\"my-2\">\u003Cli>`true` - the dropdown will be closed by clicking outside or inside the dropdown menu.\u003C/li>\u003Cli>`false` - the dropdown will be closed by clicking the toggle button and manually calling `hide` or `toggle` method. (Also will not be closed by pressing \u003Ckbd>Esc\u003C/kbd> key)\u003C/li>\u003Cli>`'inside'` - the dropdown will be closed (only) by clicking inside the dropdown menu.\u003C/li> \u003Cli>`'outside'` - the dropdown will be closed (only) by clicking outside the dropdown menu.\u003C/li>\u003C/ul> Note: the dropdown can always be closed with the \u003Ckbd>Esc\u003C/kbd> key. |\n| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the dropdown menu (applies only to Popper's preventOverflow modifier). By default it's `clippingParents` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). |\n| `display` | string | `'dynamic'` | By default, we use Popper for dynamic positioning. Disable this with `static`. |\n| `offset` | array, string, function | `[0, 2]` | Offset of the dropdown relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset=\"10,20\"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). |\n| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper. |\n| `reference` | string, element, object | `'toggle'` | Reference element of the dropdown menu. Accepts the values of `'toggle'`, `'parent'`, an HTMLElement reference or an object providing `getBoundingClientRect`. For more information refer to Popper's [constructor docs](https://popper.js.org/docs/v2/constructors/#createpopper) and [virtual element docs](https://popper.js.org/docs/v2/virtual-elements/). |\n\u003C/BsTable>\n\n#### Using function with `popperConfig`\n\n```js\nconst dropdown = new bootstrap.Dropdown(element, {\n popperConfig(defaultBsPopperConfig) {\n // const newPopperConfig = {...}\n // use defaultBsPopperConfig if needed...\n // return newPopperConfig\n }\n})\n```\n\n### Methods\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's dropdown. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the dropdown instance associated to a DOM element, you can use it like this: `bootstrap.Dropdown.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a dropdown instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Dropdown.getOrCreateInstance(element)`. |\n| `hide` | Hides the dropdown menu of a given navbar or tabbed navigation. |\n| `show` | Shows the dropdown menu of a given navbar or tabbed navigation. |\n| `toggle` | Toggles the dropdown menu of a given navbar or tabbed navigation. |\n| `update` | Updates the position of an element's dropdown. |\n\u003C/BsTable>\n\n### Events\n\nAll dropdown events are fired at the toggling element and then bubbled up. So you can also add event listeners on the `.dropdown-menu`'s parent element. `hide.bs.dropdown` and `hidden.bs.dropdown` events have a `clickEvent` property (only when the original Event type is `click`) that contains an Event Object for the click event.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.dropdown` | Fires immediately when the `hide` instance method has been called. |\n| `hidden.bs.dropdown` | Fired when the dropdown has finished being hidden from the user and CSS transitions have completed. |\n| `show.bs.dropdown` | Fires immediately when the `show` instance method is called. |\n| `shown.bs.dropdown` | Fired when the dropdown has been made visible to the user and CSS transitions have completed. |\n\u003C/BsTable>\n\n```js\nconst myDropdown = document.getElementById('myDropdown')\nmyDropdown.addEventListener('show.bs.dropdown', event => {\n // do something...\n})\n```","src/content/docs/components/dropdowns.mdx","937818bbfbc24683","components/dropdowns.mdx","components/list-group",{"id":460,"data":462,"body":465,"filePath":466,"digest":467,"legacyId":468,"deferredRender":139},{"description":463,"title":464,"toc":139},"List groups are a flexible and powerful component for displaying a series of content. Modify and extend them to support just about any content within.","List group","import { getData } from '@libs/data'\n\n## Basic example\n\nThe most basic list group is an unordered list with list items and the proper classes. Build upon it with the options that follow, or with your own CSS as needed.\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003Cli class=\"list-group-item\">A fourth item\u003C/li>\n \u003Cli class=\"list-group-item\">And a fifth one\u003C/li>\n\u003C/ul>`} />\n\n## Active items\n\nAdd `.active` to a `.list-group-item` to indicate the current active selection.\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item active\" aria-current=\"true\">An active item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003Cli class=\"list-group-item\">A fourth item\u003C/li>\n \u003Cli class=\"list-group-item\">And a fifth one\u003C/li>\n\u003C/ul>`} />\n\n## Disabled items\n\nAdd `.disabled` to a `.list-group-item` to make it _appear_ disabled. Note that some elements with `.disabled` will also require custom JavaScript to fully disable their click events (e.g., links).\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item disabled\" aria-disabled=\"true\">A disabled item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003Cli class=\"list-group-item\">A fourth item\u003C/li>\n \u003Cli class=\"list-group-item\">And a fifth one\u003C/li>\n\u003C/ul>`} />\n\n## Links and buttons\n\nUse `\u003Ca>`s or `\u003Cbutton>`s to create _actionable_ list group items with hover, disabled, and active states by adding `.list-group-item-action`. We separate these pseudo-classes to ensure list groups made of non-interactive elements (like `\u003Cli>`s or `\u003Cdiv>`s) don't provide a click or tap affordance.\n\nBe sure to **not use the standard `.btn` classes here**.\n\n\u003CExample code={`\u003Cdiv class=\"list-group\">\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action active\" aria-current=\"true\">\n The current link item\n \u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">A second link item\u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">A third link item\u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">A fourth link item\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action disabled\" aria-disabled=\"true\">A disabled link item\u003C/a>\n\u003C/div>`} />\n\nWith `\u003Cbutton>`s, you can also make use of the `disabled` attribute instead of the `.disabled` class. Sadly, `\u003Ca>`s don't support the disabled attribute.\n\n\u003CExample code={`\u003Cdiv class=\"list-group\">\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action active\" aria-current=\"true\">\n The current button\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action\">A second button item\u003C/button>\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action\">A third button item\u003C/button>\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action\">A fourth button item\u003C/button>\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action\" disabled>A disabled button item\u003C/button>\n\u003C/div>`} />\n\n## Flush\n\nAdd `.list-group-flush` to remove some borders and rounded corners to render list group items edge-to-edge in a parent container (e.g., cards).\n\n\u003CExample code={`\u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003Cli class=\"list-group-item\">A fourth item\u003C/li>\n \u003Cli class=\"list-group-item\">And a fifth one\u003C/li>\n\u003C/ul>`} />\n\n## Numbered\n\nAdd the `.list-group-numbered` modifier class (and optionally use an `\u003Col>` element) to opt into numbered list group items. Numbers are generated via CSS (as opposed to a `\u003Col>`s default browser styling) for better placement inside list group items and to allow for better customization.\n\nNumbers are generated by `counter-reset` on the `\u003Col>`, and then styled and placed with a `::before` pseudo-element on the `\u003Cli>` with `counter-increment` and `content`.\n\n\u003CExample code={`\u003Col class=\"list-group list-group-numbered\">\n \u003Cli class=\"list-group-item\">A list item\u003C/li>\n \u003Cli class=\"list-group-item\">A list item\u003C/li>\n \u003Cli class=\"list-group-item\">A list item\u003C/li>\n\u003C/ol>`} />\n\nThese work great with custom content as well.\n\n\u003CExample code={`\u003Col class=\"list-group list-group-numbered\">\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-start\">\n \u003Cdiv class=\"ms-2 me-auto\">\n \u003Cdiv class=\"fw-bold\">Subheading\u003C/div>\n Content for list item\n \u003C/div>\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">14\u003C/span>\n \u003C/li>\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-start\">\n \u003Cdiv class=\"ms-2 me-auto\">\n \u003Cdiv class=\"fw-bold\">Subheading\u003C/div>\n Content for list item\n \u003C/div>\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">14\u003C/span>\n \u003C/li>\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-start\">\n \u003Cdiv class=\"ms-2 me-auto\">\n \u003Cdiv class=\"fw-bold\">Subheading\u003C/div>\n Content for list item\n \u003C/div>\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">14\u003C/span>\n \u003C/li>\n\u003C/ol>`} />\n\n## Horizontal\n\nAdd `.list-group-horizontal` to change the layout of list group items from vertical to horizontal across all breakpoints. Alternatively, choose a responsive variant `.list-group-horizontal-{sm|md|lg|xl|xxl}` to make a list group horizontal starting at that breakpoint's `min-width`. Currently **horizontal list groups cannot be combined with flush list groups.**\n\n**ProTip:** Want equal-width list group items when horizontal? Add `.flex-fill` to each list group item.\n\n\u003CExample code={getData('breakpoints').map((breakpoint) => `\u003Cul class=\"list-group list-group-horizontal${breakpoint.abbr}\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n\u003C/ul>`)} />\n\n## Variants\n\n\u003CCallout>\n**Heads up!** As of v5.3.0, the `list-group-item-variant()` Sass mixin is deprecated. List group item variants now have their CSS variables overridden in [a Sass loop](#sass-loops).\n\u003C/Callout>\n\nUse contextual classes to style list items with a stateful background and color.\n\n\u003CExample code={[\n `\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">A simple default list group item\u003C/li>\n `,\n ...getData('theme-colors').map((themeColor) => ` \u003Cli class=\"list-group-item list-group-item-${themeColor.name}\">A simple ${themeColor.name} list group item\u003C/li>`),\n `\u003C/ul>`\n]} />\n\n### For links and buttons\n\nContextual classes also work with `.list-group-item-action` for `\u003Ca>` and `\u003Cbutton>` elements. Note the addition of the hover styles here not present in the previous example. Also supported is the `.active` state; apply it to indicate an active selection on a contextual list group item.\n\n\u003CExample code={[\n `\u003Cdiv class=\"list-group\">\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">A simple default list group item\u003C/a>\n `,\n ...getData('theme-colors').map((themeColor) => ` \u003Ca href=\"#\" class=\"list-group-item list-group-item-action list-group-item-${themeColor.name}\">A simple ${themeColor.name} list group item\u003C/a>`),\n `\u003C/div>`\n]} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## With badges\n\nAdd badges to any list group item to show unread counts, activity, and more with the help of some [utilities]([[docsref:/utilities/flex]]).\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-center\">\n A list item\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">14\u003C/span>\n \u003C/li>\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-center\">\n A second list item\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">2\u003C/span>\n \u003C/li>\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-center\">\n A third list item\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">1\u003C/span>\n \u003C/li>\n\u003C/ul>`} />\n\n## Custom content\n\nAdd nearly any HTML within, even for linked list groups like the one below, with the help of [flexbox utilities]([[docsref:/utilities/flex]]).\n\n\u003CExample code={`\u003Cdiv class=\"list-group\">\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action active\" aria-current=\"true\">\n \u003Cdiv class=\"d-flex w-100 justify-content-between\">\n \u003Ch5 class=\"mb-1\">List group item heading\u003C/h5>\n \u003Csmall>3 days ago\u003C/small>\n \u003C/div>\n \u003Cp class=\"mb-1\">Some placeholder content in a paragraph.\u003C/p>\n \u003Csmall>And some small print.\u003C/small>\n \u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">\n \u003Cdiv class=\"d-flex w-100 justify-content-between\">\n \u003Ch5 class=\"mb-1\">List group item heading\u003C/h5>\n \u003Csmall class=\"text-body-secondary\">3 days ago\u003C/small>\n \u003C/div>\n \u003Cp class=\"mb-1\">Some placeholder content in a paragraph.\u003C/p>\n \u003Csmall class=\"text-body-secondary\">And some muted small print.\u003C/small>\n \u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">\n \u003Cdiv class=\"d-flex w-100 justify-content-between\">\n \u003Ch5 class=\"mb-1\">List group item heading\u003C/h5>\n \u003Csmall class=\"text-body-secondary\">3 days ago\u003C/small>\n \u003C/div>\n \u003Cp class=\"mb-1\">Some placeholder content in a paragraph.\u003C/p>\n \u003Csmall class=\"text-body-secondary\">And some muted small print.\u003C/small>\n \u003C/a>\n\u003C/div>`} />\n\n## Checkboxes and radios\n\nPlace Bootstrap's checkboxes and radios within list group items and customize as needed. You can use them without `\u003Clabel>`s, but please remember to include an `aria-label` attribute and value for accessibility.\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"firstCheckbox\">\n \u003Clabel class=\"form-check-label\" for=\"firstCheckbox\">First checkbox\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"secondCheckbox\">\n \u003Clabel class=\"form-check-label\" for=\"secondCheckbox\">Second checkbox\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"thirdCheckbox\">\n \u003Clabel class=\"form-check-label\" for=\"thirdCheckbox\">Third checkbox\u003C/label>\n \u003C/li>\n\u003C/ul>`} />\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"radio\" name=\"listGroupRadio\" value=\"\" id=\"firstRadio\" checked>\n \u003Clabel class=\"form-check-label\" for=\"firstRadio\">First radio\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"radio\" name=\"listGroupRadio\" value=\"\" id=\"secondRadio\">\n \u003Clabel class=\"form-check-label\" for=\"secondRadio\">Second radio\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"radio\" name=\"listGroupRadio\" value=\"\" id=\"thirdRadio\">\n \u003Clabel class=\"form-check-label\" for=\"thirdRadio\">Third radio\u003C/label>\n \u003C/li>\n\u003C/ul>`} />\n\nYou can use `.stretched-link` on `\u003Clabel>`s to make the whole list group item clickable.\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"firstCheckboxStretched\">\n \u003Clabel class=\"form-check-label stretched-link\" for=\"firstCheckboxStretched\">First checkbox\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"secondCheckboxStretched\">\n \u003Clabel class=\"form-check-label stretched-link\" for=\"secondCheckboxStretched\">Second checkbox\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"thirdCheckboxStretched\">\n \u003Clabel class=\"form-check-label stretched-link\" for=\"thirdCheckboxStretched\">Third checkbox\u003C/label>\n \u003C/li>\n\u003C/ul>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, list groups now use local CSS variables on `.list-group` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"list-group-css-vars\" file=\"scss/_list-group.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"list-group-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\n\u003CScssDocs name=\"list-group-mixin\" file=\"scss/mixins/_list-group.scss\" />\n\n### Sass loops\n\nLoop that generates the modifier classes with an overriding of CSS variables.\n\n\u003CScssDocs name=\"list-group-modifiers\" file=\"scss/_list-group.scss\" />\n\n## JavaScript behavior\n\nUse the tab JavaScript plugin—include it individually or through the compiled `bootstrap.js` file—to extend our list group to create tabbable panes of local content.\n\n\u003Cdiv class=\"bd-example\" role=\"tabpanel\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv class=\"list-group\" id=\"list-tab\" role=\"tablist\">\n \u003Ca class=\"list-group-item list-group-item-action active\" id=\"list-home-list\" data-bs-toggle=\"tab\" href=\"#list-home\" role=\"tab\" aria-controls=\"list-home\">Home\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-profile-list\" data-bs-toggle=\"tab\" href=\"#list-profile\" role=\"tab\" aria-controls=\"list-profile\">Profile\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-messages-list\" data-bs-toggle=\"tab\" href=\"#list-messages\" role=\"tab\" aria-controls=\"list-messages\">Messages\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-settings-list\" data-bs-toggle=\"tab\" href=\"#list-settings\" role=\"tab\" aria-controls=\"list-settings\">Settings\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv class=\"tab-content\" id=\"nav-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"list-home\" role=\"tabpanel\" aria-labelledby=\"list-home-list\">\n \u003Cp>Some placeholder content in a paragraph relating to \"Home\". And some more content, used here just to pad out and fill this tab panel. In production, you would obviously have more real content here. And not just text. It could be anything, really. Text, images, forms.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-profile\" role=\"tabpanel\" aria-labelledby=\"list-profile-list\">\n \u003Cp>Some placeholder content in a paragraph relating to \"Profile\". And some more content, used here just to pad out and fill this tab panel. In production, you would obviously have more real content here. And not just text. It could be anything, really. Text, images, forms.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-messages\" role=\"tabpanel\" aria-labelledby=\"list-messages-list\">\n \u003Cp>Some placeholder content in a paragraph relating to \"Messages\". And some more content, used here just to pad out and fill this tab panel. In production, you would obviously have more real content here. And not just text. It could be anything, really. Text, images, forms.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-settings\" role=\"tabpanel\" aria-labelledby=\"list-settings-list\">\n \u003Cp>Some placeholder content in a paragraph relating to \"Settings\". And some more content, used here just to pad out and fill this tab panel. In production, you would obviously have more real content here. And not just text. It could be anything, really. Text, images, forms.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv class=\"list-group\" id=\"list-tab\" role=\"tablist\">\n \u003Ca class=\"list-group-item list-group-item-action active\" id=\"list-home-list\" data-bs-toggle=\"list\" href=\"#list-home\" role=\"tab\" aria-controls=\"list-home\">Home\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-profile-list\" data-bs-toggle=\"list\" href=\"#list-profile\" role=\"tab\" aria-controls=\"list-profile\">Profile\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-messages-list\" data-bs-toggle=\"list\" href=\"#list-messages\" role=\"tab\" aria-controls=\"list-messages\">Messages\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-settings-list\" data-bs-toggle=\"list\" href=\"#list-settings\" role=\"tab\" aria-controls=\"list-settings\">Settings\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv class=\"tab-content\" id=\"nav-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"list-home\" role=\"tabpanel\" aria-labelledby=\"list-home-list\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-profile\" role=\"tabpanel\" aria-labelledby=\"list-profile-list\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-messages\" role=\"tabpanel\" aria-labelledby=\"list-messages-list\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-settings\" role=\"tabpanel\" aria-labelledby=\"list-settings-list\">...\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Using data attributes\n\nYou can activate a list group navigation without writing any JavaScript by simply specifying `data-bs-toggle=\"list\"` or on an element. Use these data attributes on `.list-group-item`.\n\n```html\n\u003Cdiv role=\"tabpanel\">\n \u003C!-- List group -->\n \u003Cdiv class=\"list-group\" id=\"myList\" role=\"tablist\">\n \u003Ca class=\"list-group-item list-group-item-action active\" data-bs-toggle=\"list\" href=\"#home\" role=\"tab\">Home\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" data-bs-toggle=\"list\" href=\"#profile\" role=\"tab\">Profile\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" data-bs-toggle=\"list\" href=\"#messages\" role=\"tab\">Messages\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" data-bs-toggle=\"list\" href=\"#settings\" role=\"tab\">Settings\u003C/a>\n \u003C/div>\n\n \u003C!-- Tab panes -->\n \u003Cdiv class=\"tab-content\">\n \u003Cdiv class=\"tab-pane active\" id=\"home\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"profile\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"messages\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"settings\" role=\"tabpanel\">...\u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Via JavaScript\n\nEnable tabbable list item via JavaScript (each list item needs to be activated individually):\n\n```js\nconst triggerTabList = document.querySelectorAll('#myTab a')\ntriggerTabList.forEach(triggerEl => {\n const tabTrigger = new bootstrap.Tab(triggerEl)\n\n triggerEl.addEventListener('click', event => {\n event.preventDefault()\n tabTrigger.show()\n })\n})\n```\n\nYou can activate individual list item in several ways:\n\n```js\nconst triggerEl = document.querySelector('#myTab a[href=\"#profile\"]')\nbootstrap.Tab.getInstance(triggerEl).show() // Select tab by name\n\nconst triggerFirstTabEl = document.querySelector('#myTab li:first-child a')\nbootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab\n```\n\n### Fade effect\n\nTo make tabs panel fade in, add `.fade` to each `.tab-pane`. The first tab pane must also have `.show` to make the initial content visible.\n\n```html\n\u003Cdiv class=\"tab-content\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"home\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"profile\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"messages\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"settings\" role=\"tabpanel\">...\u003C/div>\n\u003C/div>\n```\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nActivates your content as a tab element.\n\nYou can create a tab instance with the constructor, for example:\n\n```js\nconst bsTab = new bootstrap.Tab('#myTab')\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's tab. |\n| `getInstance` | Static method which allows you to get the tab instance associated with a DOM element, you can use it like this: `bootstrap.Tab.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a tab instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Tab.getOrCreateInstance(element)`. |\n| `show` | Selects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. **Returns to the caller before the tab pane has actually been shown** (i.e. before the `shown.bs.tab` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nWhen showing a new tab, the events fire in the following order:\n\n1. `hide.bs.tab` (on the current active tab)\n2. `show.bs.tab` (on the to-be-shown tab)\n3. `hidden.bs.tab` (on the previous active tab, the same one as for the `hide.bs.tab` event)\n4. `shown.bs.tab` (on the newly-active just-shown tab, the same one as for the `show.bs.tab` event)\n\nIf no tab was already active, then the `hide.bs.tab` and `hidden.bs.tab` events will not be fired.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.tab` | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use `event.target` and `event.relatedTarget` to target the current active tab and the new soon-to-be-active tab, respectively. |\n| `hidden.bs.tab` | This event fires after a new tab is shown (and thus the previous active tab is hidden). Use `event.target` and `event.relatedTarget` to target the previous active tab and the new active tab, respectively. |\n| `show.bs.tab` | This event fires on tab show, but before the new tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. |\n| `shown.bs.tab` | This event fires on tab show after a tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. |\n\u003C/BsTable>\n\n```js\nconst tabElms = document.querySelectorAll('a[data-bs-toggle=\"list\"]')\ntabElms.forEach(tabElm => {\n tabElm.addEventListener('shown.bs.tab', event => {\n event.target // newly activated tab\n event.relatedTarget // previous active tab\n })\n})\n```","src/content/docs/components/list-group.mdx","d3920cbcb7808f21","components/list-group.mdx","components/modal",{"id":469,"data":471,"body":474,"filePath":475,"digest":476,"legacyId":477,"deferredRender":139},{"description":472,"title":473,"toc":139},"Use Bootstrap's JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.","Modal","## How it works\n\nBefore getting started with Bootstrap's modal component, be sure to read the following as our menu options have recently changed.\n\n- Modals are built with HTML, CSS, and JavaScript. They're positioned over everything else in the document and remove scroll from the `\u003Cbody>` so that modal content scrolls instead.\n- Clicking on the modal \"backdrop\" will automatically close the modal.\n- Bootstrap only supports one modal window at a time. Nested modals aren't supported as we believe them to be poor user experiences.\n- Modals use `position: fixed`, which can sometimes be a bit particular about its rendering. Whenever possible, place your modal HTML in a top-level position to avoid potential interference from other elements. You'll likely run into issues when nesting a `.modal` within another fixed element.\n- Once again, due to `position: fixed`, there are some caveats with using modals on mobile devices. [See our browser support docs]([[docsref:/getting-started/browsers-devices#modals-and-dropdowns-on-mobile]]) for details.\n- Due to how HTML5 defines its semantics, [the `autofocus` HTML attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autofocus) has no effect in Bootstrap modals. To achieve the same effect, use some custom JavaScript:\n\n```js\nconst myModal = document.getElementById('myModal')\nconst myInput = document.getElementById('myInput')\n\nmyModal.addEventListener('shown.bs.modal', () => {\n myInput.focus()\n})\n```\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\nKeep reading for demos and usage guidelines.\n\n## Examples\n\n### Modal components\n\nBelow is a _static_ modal example (meaning its `position` and `display` have been overridden). Included are the modal header, modal body (required for `padding`), and modal footer (optional). We ask that you include modal headers with dismiss actions whenever possible, or provide another explicit dismiss action.\n\n\u003Cdiv class=\"bd-example bg-body-tertiary\">\n \u003Cdiv class=\"modal position-static d-block\" tabindex=\"-1\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch5 class=\"modal-title\">Modal title\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>Modal body text goes here.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"modal\" tabindex=\"-1\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch5 class=\"modal-title\">Modal title\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>Modal body text goes here.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n\u003CCallout>\nIn the above static example, we use `\u003Ch5>`, to avoid issues with the heading hierarchy in the documentation page. Structurally, however, a modal dialog represents its own separate document/context, so the `.modal-title` should ideally be an `\u003Ch1>`. If necessary, you can use the [font size utilities]([[docsref:/utilities/text#font-size]]) to control the heading's appearance. All the following live examples use this approach.\n\u003C/Callout>\n\n### Live demo\n\nToggle a working modal demo by clicking the button below. It will slide down and fade in from the top of the page.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalLive\" tabindex=\"-1\" aria-labelledby=\"exampleModalLiveLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalLiveLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>Woo-hoo, you're reading this text in a modal!\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalLive\">\n Launch demo modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Button trigger modal -->\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModal\">\n Launch demo modal\n\u003C/button>\n\n\u003C!-- Modal -->\n\u003Cdiv class=\"modal fade\" id=\"exampleModal\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Static backdrop\n\nWhen backdrop is set to static, the modal will not close when clicking outside of it. Click the button below to try it.\n\n\u003Cdiv class=\"modal fade\" id=\"staticBackdropLive\" data-bs-backdrop=\"static\" data-bs-keyboard=\"false\" tabindex=\"-1\" aria-labelledby=\"staticBackdropLiveLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"staticBackdropLiveLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>I will not close if you click outside of me. Don't even try to press escape key.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Understood\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#staticBackdropLive\">\n Launch static backdrop modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Button trigger modal -->\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#staticBackdrop\">\n Launch static backdrop modal\n\u003C/button>\n\n\u003C!-- Modal -->\n\u003Cdiv class=\"modal fade\" id=\"staticBackdrop\" data-bs-backdrop=\"static\" data-bs-keyboard=\"false\" tabindex=\"-1\" aria-labelledby=\"staticBackdropLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"staticBackdropLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Understood\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Scrolling long content\n\nWhen modals become too long for the user's viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalLong\" tabindex=\"-1\" aria-labelledby=\"exampleModalLongTitle\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalLongTitle\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\" style=\"min-height: 100vh\">\n \u003Cp>This is some placeholder content to show the scrolling behavior for modals. Instead of repeating the text in the modal, we use an inline style to set a minimum height, thereby extending the length of the overall modal and demonstrating the overflow scrolling. When content becomes longer than the height of the viewport, scrolling will move the modal as needed.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalLong\">\n Launch demo modal\n \u003C/button>\n\u003C/div>\n\nYou can also create a scrollable modal that allows scrolling the modal body by adding `.modal-dialog-scrollable` to `.modal-dialog`.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalScrollable\" tabindex=\"-1\" aria-labelledby=\"exampleModalScrollableTitle\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-dialog-scrollable\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalScrollableTitle\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>This is some placeholder content to show the scrolling behavior for modals. We use repeated line breaks to demonstrate how content can exceed minimum inner height, thereby showing inner scrolling. When content becomes longer than the predefined max-height of modal, content will be cropped and scrollable within the modal.\u003C/p>\n \u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\n \u003Cp>This content should appear at the bottom after you scroll.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalScrollable\">\n Launch demo modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Scrollable modal -->\n\u003Cdiv class=\"modal-dialog modal-dialog-scrollable\">\n ...\n\u003C/div>\n```\n\n### Vertically centered\n\nAdd `.modal-dialog-centered` to `.modal-dialog` to vertically center the modal.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalCenter\" tabindex=\"-1\" aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-dialog-centered\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalCenterTitle\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>This is a vertically centered modal.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalCenteredScrollable\" tabindex=\"-1\" aria-labelledby=\"exampleModalCenteredScrollableTitle\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalCenteredScrollableTitle\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>This is some placeholder content to show a vertically centered modal. We've added some extra copy here to show how vertically centering the modal works when combined with scrollable modals. We also use some repeated line breaks to quickly extend the height of the content, thereby triggering the scrolling. When content becomes longer than the predefined max-height of modal, content will be cropped and scrollable within the modal.\u003C/p>\n \u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\n \u003Cp>Just like that.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalCenter\">\n Vertically centered modal\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalCenteredScrollable\">\n Vertically centered scrollable modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Vertically centered modal -->\n\u003Cdiv class=\"modal-dialog modal-dialog-centered\">\n ...\n\u003C/div>\n\n\u003C!-- Vertically centered scrollable modal -->\n\u003Cdiv class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable\">\n ...\n\u003C/div>\n```\n\n### Tooltips and popovers\n\n[Tooltips]([[docsref:/components/tooltips]]) and [popovers]([[docsref:/components/popovers]]) can be placed within modals as needed. When modals are closed, any tooltips and popovers within are also automatically dismissed.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalPopovers\" tabindex=\"-1\" aria-labelledby=\"exampleModalPopoversLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalPopoversLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Ch2 class=\"fs-5\">Popover in a modal\u003C/h2>\n \u003Cp>This \u003Cbutton class=\"btn btn-secondary\" data-bs-toggle=\"popover\" title=\"Popover title\" data-bs-content=\"Popover body content is set in this attribute.\" data-bs-container=\"#exampleModalPopovers\">button\u003C/button> triggers a popover on click.\u003C/p>\n \u003Chr/>\n \u003Ch2 class=\"fs-5\">Tooltips in a modal\u003C/h2>\n \u003Cp>\u003Ca href=\"#\" data-bs-toggle=\"tooltip\" title=\"Tooltip\" data-bs-container=\"#exampleModalPopovers\">This link\u003C/a> and \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" title=\"Tooltip\" data-bs-container=\"#exampleModalPopovers\">that link\u003C/a> have tooltips on hover.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalPopovers\">\n Launch demo modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"modal-body\">\n \u003Ch2 class=\"fs-5\">Popover in a modal\u003C/h2>\n \u003Cp>This \u003Cbutton class=\"btn btn-secondary\" data-bs-toggle=\"popover\" title=\"Popover title\" data-bs-content=\"Popover body content is set in this attribute.\">button\u003C/button> triggers a popover on click.\u003C/p>\n \u003Chr/>\n \u003Ch2 class=\"fs-5\">Tooltips in a modal\u003C/h2>\n \u003Cp>\u003Ca href=\"#\" data-bs-toggle=\"tooltip\" title=\"Tooltip\">This link\u003C/a> and \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" title=\"Tooltip\">that link\u003C/a> have tooltips on hover.\u003C/p>\n\u003C/div>\n```\n\n### Using the grid\n\nUtilize the Bootstrap grid system within a modal by nesting `.container-fluid` within the `.modal-body`. Then, use the normal grid system classes as you would anywhere else.\n\n\u003Cdiv class=\"modal fade\" id=\"gridSystemModal\" tabindex=\"-1\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"gridModalLabel\">Grids in modals\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cdiv class=\"container-fluid bd-example-row\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-4\">.col-md-4\u003C/div>\n \u003Cdiv class=\"col-md-4 ms-auto\">.col-md-4 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-3 ms-auto\">.col-md-3 .ms-auto\u003C/div>\n \u003Cdiv class=\"col-md-2 ms-auto\">.col-md-2 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-6 ms-auto\">.col-md-6 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-9\">\n Level 1: .col-sm-9\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-8 col-sm-6\">\n Level 2: .col-8 .col-sm-6\n \u003C/div>\n \u003Cdiv class=\"col-4 col-sm-6\">\n Level 2: .col-4 .col-sm-6\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#gridSystemModal\">\n Launch demo modal\n\u003C/button>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"modal-body\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-4\">.col-md-4\u003C/div>\n \u003Cdiv class=\"col-md-4 ms-auto\">.col-md-4 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-3 ms-auto\">.col-md-3 .ms-auto\u003C/div>\n \u003Cdiv class=\"col-md-2 ms-auto\">.col-md-2 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-6 ms-auto\">.col-md-6 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-9\">\n Level 1: .col-sm-9\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-8 col-sm-6\">\n Level 2: .col-8 .col-sm-6\n \u003C/div>\n \u003Cdiv class=\"col-4 col-sm-6\">\n Level 2: .col-4 .col-sm-6\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Varying modal content\n\nHave a bunch of buttons that all trigger the same modal with slightly different contents? Use `event.relatedTarget` and [HTML `data-bs-*` attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes) to vary the contents of the modal depending on which button was clicked.\n\nBelow is a live demo followed by example HTML and JavaScript. For more information, [read the modal events docs](#events) for details on `relatedTarget`.\n\n\u003CExample addStackblitzJs code={`\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModal\" data-bs-whatever=\"@mdo\">Open modal for @mdo\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModal\" data-bs-whatever=\"@fat\">Open modal for @fat\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModal\" data-bs-whatever=\"@getbootstrap\">Open modal for @getbootstrap\u003C/button>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModal\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalLabel\">New message\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cform>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"recipient-name\" class=\"col-form-label\">Recipient:\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"recipient-name\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"message-text\" class=\"col-form-label\">Message:\u003C/label>\n \u003Ctextarea class=\"form-control\" id=\"message-text\">\u003C/textarea>\n \u003C/div>\n \u003C/form>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Send message\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CJsDocs name=\"varying-modal-content\" file=\"site/src/assets/partials/snippets.js\" />\n\n### Toggle between modals\n\nToggle between multiple modals with some clever placement of the `data-bs-target` and `data-bs-toggle` attributes. For example, you could toggle a password reset modal from within an already open sign in modal. **Please note multiple modals cannot be open at the same time**—this method simply toggles between two separate modals.\n\n\u003CExample code={`\u003Cdiv class=\"modal fade\" id=\"exampleModalToggle\" aria-hidden=\"true\" aria-labelledby=\"exampleModalToggleLabel\" tabindex=\"-1\">\n \u003Cdiv class=\"modal-dialog modal-dialog-centered\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalToggleLabel\">Modal 1\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n Show a second modal and hide this one with the button below.\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton class=\"btn btn-primary\" data-bs-target=\"#exampleModalToggle2\" data-bs-toggle=\"modal\">Open second modal\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"modal fade\" id=\"exampleModalToggle2\" aria-hidden=\"true\" aria-labelledby=\"exampleModalToggleLabel2\" tabindex=\"-1\">\n \u003Cdiv class=\"modal-dialog modal-dialog-centered\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalToggleLabel2\">Modal 2\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n Hide this modal and show the first with the button below.\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton class=\"btn btn-primary\" data-bs-target=\"#exampleModalToggle\" data-bs-toggle=\"modal\">Back to first\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\u003Cbutton class=\"btn btn-primary\" data-bs-target=\"#exampleModalToggle\" data-bs-toggle=\"modal\">Open first modal\u003C/button>`} />\n\n### Change animation\n\nThe `$modal-fade-transform` variable determines the transform state of `.modal-dialog` before the modal fade-in animation, the `$modal-show-transform` variable determines the transform of `.modal-dialog` at the end of the modal fade-in animation.\n\nIf you want for example a zoom-in animation, you can set `$modal-fade-transform: scale(.8)`.\n\n### Remove animation\n\nFor modals that simply appear rather than fade in to view, remove the `.fade` class from your modal markup.\n\n```html\n\u003Cdiv class=\"modal\" tabindex=\"-1\" aria-labelledby=\"...\" aria-hidden=\"true\">\n ...\n\u003C/div>\n```\n\n### Dynamic heights\n\nIf the height of a modal changes while it is open, you should call `myModal.handleUpdate()` to readjust the modal's position in case a scrollbar appears.\n\n### Accessibility\n\nBe sure to add `aria-labelledby=\"...\"`, referencing the modal title, to `.modal`. Additionally, you may give a description of your modal dialog with `aria-describedby` on `.modal`. Note that you don't need to add `role=\"dialog\"` since we already add it via JavaScript.\n\n### Embedding YouTube videos\n\nEmbedding YouTube videos in modals requires additional JavaScript not in Bootstrap to automatically stop playback and more. [See this helpful Stack Overflow post](https://stackoverflow.com/questions/18622508/bootstrap-3-and-youtube-in-modal) for more information.\n\n## Optional sizes\n\nModals have three optional sizes, available via modifier classes to be placed on a `.modal-dialog`. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports.\n\n\u003CBsTable>\n| Size | Class | Modal max-width\n| --- | --- | --- |\n| Small | `.modal-sm` | `300px` |\n| Default | \u003Cspan class=\"text-body-secondary\">None\u003C/span> | `500px` |\n| Large | `.modal-lg` | `800px` |\n| Extra large | `.modal-xl` | `1140px` |\n\u003C/BsTable>\n\nOur default modal without modifier class constitutes the \"medium\" size modal.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalXl\">Extra large modal\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalLg\">Large modal\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalSm\">Small modal\u003C/button>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"modal-dialog modal-xl\">...\u003C/div>\n\u003Cdiv class=\"modal-dialog modal-lg\">...\u003C/div>\n\u003Cdiv class=\"modal-dialog modal-sm\">...\u003C/div>\n```\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalXl\" tabindex=\"-1\" aria-labelledby=\"exampleModalXlLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-xl\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalXlLabel\">Extra large modal\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalLg\" tabindex=\"-1\" aria-labelledby=\"exampleModalLgLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-lg\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalLgLabel\">Large modal\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalSm\" tabindex=\"-1\" aria-labelledby=\"exampleModalSmLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-sm\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalSmLabel\">Small modal\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n## Fullscreen Modal\n\nAnother override is the option to pop up a modal that covers the user viewport, available via modifier classes that are placed on a `.modal-dialog`.\n\n\u003CBsTable>\n| Class | Availability |\n| --- | --- |\n| `.modal-fullscreen` | Always |\n| `.modal-fullscreen-sm-down` | `576px` |\n| `.modal-fullscreen-md-down` | `768px` |\n| `.modal-fullscreen-lg-down` | `992px` |\n| `.modal-fullscreen-xl-down` | `1200px` |\n| `.modal-fullscreen-xxl-down` | `1400px` |\n\u003C/BsTable>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreen\">Full screen\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenSm\">Full screen below sm\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenMd\">Full screen below md\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenLg\">Full screen below lg\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenXl\">Full screen below xl\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenXxl\">Full screen below xxl\u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Full screen modal -->\n\u003Cdiv class=\"modal-dialog modal-fullscreen-sm-down\">\n ...\n\u003C/div>\n```\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreen\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenLabel\">Full screen modal\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenSm\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenSmLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-sm-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenSmLabel\">Full screen below sm\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenMd\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenMdLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-md-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenMdLabel\">Full screen below md\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenLg\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenLgLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-lg-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenLgLabel\">Full screen below lg\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenXl\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenXlLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-xl-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenXlLabel\">Full screen below xl\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenXxl\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenXxlLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-xxl-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenXxlLabel\">Full screen below xxl\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, modals now use local CSS variables on `.modal` and `.modal-backdrop` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"modal-css-vars\" file=\"scss/_modal.scss\" />\n\n\u003CScssDocs name=\"modal-backdrop-css-vars\" file=\"scss/_modal.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"modal-variables\" file=\"scss/_variables.scss\" />\n\n### Sass loops\n\n[Responsive fullscreen modals](#fullscreen-modal) are generated via the `$breakpoints` map and a loop in `scss/_modal.scss`.\n\n\u003CScssDocs name=\"modal-fullscreen-loop\" file=\"scss/_modal.scss\" />\n\n## Usage\n\nThe modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also overrides default scrolling behavior and generates a `.modal-backdrop` to provide a click area for dismissing shown modals when clicking outside the modal.\n\n### Via data attributes\n\n#### Toggle\n\nActivate a modal without writing JavaScript. Set `data-bs-toggle=\"modal\"` on a controller element, like a button, along with a `data-bs-target=\"#foo\"` or `href=\"#foo\"` to target a specific modal to toggle.\n\n```html\n\u003Cbutton type=\"button\" data-bs-toggle=\"modal\" data-bs-target=\"#myModal\">Launch modal\u003C/button>\n```\n\n#### Dismiss\n\n\u003CJsDismiss name=\"modal\" />\n\n\u003CCallout type=\"warning\">\nWhile both ways to dismiss a modal are supported, keep in mind that dismissing from outside a modal does not match the [ARIA Authoring Practices Guide dialog (modal) pattern](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/). Do this at your own risk.\n\u003C/Callout>\n\n### Via JavaScript\n\nCreate a modal with a single line of JavaScript:\n\n```js\nconst myModal = new bootstrap.Modal(document.getElementById('myModal'), options)\n// or\nconst myModalAlternative = new bootstrap.Modal('#myModal', options)\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `backdrop` | boolean, `'static'` | `true` | Includes a modal-backdrop element. Alternatively, specify `static` for a backdrop which doesn't close the modal when clicked. |\n| `focus` | boolean | `true` | Puts the focus on the modal when initialized. |\n| `keyboard` | boolean | `true` | Closes the modal when escape key is pressed. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\n#### Passing options\n\nActivates your content as a modal. Accepts an optional options `object`.\n\n```js\nconst myModal = new bootstrap.Modal('#myModal', {\n keyboard: false\n})\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's modal. (Removes stored data on the DOM element) |\n| `getInstance` | _Static_ method which allows you to get the modal instance associated with a DOM element. |\n| `getOrCreateInstance` | _Static_ method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `handleUpdate` | Manually readjust the modal's position if the height of a modal changes while it is open (i.e. in case a scrollbar appears). |\n| `hide` | Manually hides a modal. **Returns to the caller before the modal has actually been hidden** (i.e. before the `hidden.bs.modal` event occurs). |\n| `show` | Manually opens a modal. **Returns to the caller before the modal has actually been shown** (i.e. before the `shown.bs.modal` event occurs). Also, you can pass a DOM element as an argument that can be received in the modal events (as the `relatedTarget` property). (i.e. `const modalToggle = document.getElementById('toggleMyModal'); myModal.show(modalToggle)`. |\n| `toggle` | Manually toggles a modal. **Returns to the caller before the modal has actually been shown or hidden** (i.e. before the `shown.bs.modal` or `hidden.bs.modal` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nBootstrap's modal class exposes a few events for hooking into modal functionality. All modal events are fired at the modal itself (i.e. at the `\u003Cdiv class=\"modal\">`).\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `hide.bs.modal` | This event is fired immediately when the `hide` instance method has been called. Can be prevented by calling `event.preventDefault()`. See [JavaScript events documentation]([[docsref:/getting-started/javascript#events]]) for more details on event prevention. |\n| `hidden.bs.modal` | This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete). |\n| `hidePrevented.bs.modal` | This event is fired when the modal is shown, its backdrop is `static` and a click outside of the modal is performed. The event is also fired when the escape key is pressed and the `keyboard` option is set to `false`. |\n| `show.bs.modal` | This event fires immediately when the `show` instance method is called. If caused by a click, the clicked element is available as the `relatedTarget` property of the event. |\n| `shown.bs.modal` | This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the `relatedTarget` property of the event. |\n\u003C/BsTable>\n\n```js\nconst myModalEl = document.getElementById('myModal')\nmyModalEl.addEventListener('hidden.bs.modal', event => {\n // do something...\n})\n```","src/content/docs/components/modal.mdx","df206e57d0aaba9c","components/modal.mdx","components/navbar",{"id":478,"data":480,"body":483,"filePath":484,"digest":485,"legacyId":486,"deferredRender":139},{"description":481,"title":482,"toc":139},"Documentation and examples for Bootstrap's powerful, responsive navigation header, the navbar. Includes support for branding, navigation, and more, including support for our collapse plugin.","Navbar","import { getConfig } from '@libs/config'\n\n## How it works\n\nHere's what you need to know before getting started with the navbar:\n\n- Navbars require a wrapping `.navbar` with `.navbar-expand{-sm|-md|-lg|-xl|-xxl}` for responsive collapsing and [color scheme](#color-schemes) classes.\n- Navbars and their contents are fluid by default. Change the [container](#containers) to limit their horizontal width in different ways.\n- Use our [spacing]([[docsref:/utilities/spacing]]) and [flex]([[docsref:/utilities/flex]]) utility classes for controlling spacing and alignment within navbars.\n- Navbars are responsive by default, but you can easily modify them to change that. Responsive behavior depends on our Collapse JavaScript plugin.\n- Ensure accessibility by using a `\u003Cnav>` element or, if using a more generic element such as a `\u003Cdiv>`, add a `role=\"navigation\"` to every navbar to explicitly identify it as a landmark region for users of assistive technologies.\n- Indicate the current item by using `aria-current=\"page\"` for the current page or `aria-current=\"true\"` for the current item in a set.\n- **New in v5.2.0:** Navbars can be themed with CSS variables that are scoped to the `.navbar` base class. `.navbar-light` has been deprecated and `.navbar-dark` has been rewritten to override CSS variables instead of adding additional styles.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Supported content\n\nNavbars come with built-in support for a handful of sub-components. Choose from the following as needed:\n\n- `.navbar-brand` for your company, product, or project name.\n- `.navbar-nav` for a full-height and lightweight navigation (including support for dropdowns).\n- `.navbar-toggler` for use with our collapse plugin and other [navigation toggling](#responsive-behaviors) behaviors.\n- Flex and spacing utilities for any form controls and actions.\n- `.navbar-text` for adding vertically centered strings of text.\n- `.collapse.navbar-collapse` for grouping and hiding navbar contents by a parent breakpoint.\n- Add an optional `.navbar-scroll` to set a `max-height` and [scroll expanded navbar content](#scrolling).\n\nHere's an example of all the sub-components included in a responsive light-themed navbar that automatically collapses at the `lg` (large) breakpoint.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarSupportedContent\" aria-controls=\"navbarSupportedContent\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarSupportedContent\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nThis example uses [background]([[docsref:/utilities/background]]) (`bg-body-tertiary`) and [spacing]([[docsref:/utilities/spacing]]) (`me-auto`, `mb-2`, `mb-lg-0`, `me-2`) utility classes.\n\n### Brand\n\nThe `.navbar-brand` can be applied to most elements, but an anchor works best, as some elements might require utility classes or custom styles.\n\n#### Text\n\nAdd your text within an element with the `.navbar-brand` class.\n\n\u003CExample code={`\u003C!-- As a link -->\n\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003C/div>\n\u003C/nav>\n\n\u003C!-- As a heading -->\n\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cspan class=\"navbar-brand mb-0 h1\">Navbar\u003C/span>\n \u003C/div>\n\u003C/nav>`} />\n\n#### Image\n\nYou can replace the text within the `.navbar-brand` with an `\u003Cimg>`.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container\">\n \u003Ca class=\"navbar-brand\" href=\"#\">\n \u003Cimg src=\"/docs/${getConfig().docs_version}/assets/brand/bootstrap-logo.svg\" alt=\"Bootstrap\" width=\"30\" height=\"24\">\n \u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n#### Image and text\n\nYou can also make use of some additional utilities to add an image and text at the same time. Note the addition of `.d-inline-block` and `.align-text-top` on the `\u003Cimg>`.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">\n \u003Cimg src=\"/docs/${getConfig().docs_version}/assets/brand/bootstrap-logo.svg\" alt=\"Logo\" width=\"30\" height=\"24\" class=\"d-inline-block align-text-top\">\n Bootstrap\n \u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n### Nav\n\nNavbar navigation links build on our `.nav` options with their own modifier class and require the use of [toggler classes](#toggler) for proper responsive styling. **Navigation in navbars will also grow to occupy as much horizontal space as possible** to keep your navbar contents securely aligned.\n\nAdd the `.active` class on `.nav-link` to indicate the current page.\n\nPlease note that you should also add the `aria-current` attribute on the active `.nav-link`.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\" aria-controls=\"navbarNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNav\">\n \u003Cul class=\"navbar-nav\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nAnd because we use classes for our navs, you can avoid the list-based approach entirely if you like.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNavAltMarkup\" aria-controls=\"navbarNavAltMarkup\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNavAltMarkup\">\n \u003Cdiv class=\"navbar-nav\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nYou can also use dropdowns in your navbar. Dropdown menus require a wrapping element for positioning, so be sure to use separate and nested elements for `.nav-item` and `.nav-link` as shown below.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNavDropdown\" aria-controls=\"navbarNavDropdown\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNavDropdown\">\n \u003Cul class=\"navbar-nav\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown link\n \u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n### Forms\n\nPlace various form controls and components within a navbar:\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n\u003C/nav>`} />\n\nImmediate child elements of `.navbar` use flex layout and will default to `justify-content: space-between`. Use additional [flex utilities]([[docsref:/utilities/flex]]) as needed to adjust this behavior.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\">Navbar\u003C/a>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n\u003C/nav>`} />\n\nInput groups work, too. If your navbar is an entire form, or mostly a form, you can use the `\u003Cform>` element as the container and save some HTML.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cform class=\"container-fluid\">\n \u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\" id=\"basic-addon1\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-label=\"Username\" aria-describedby=\"basic-addon1\"/>\n \u003C/div>\n \u003C/form>\n\u003C/nav>`} />\n\nVarious buttons are supported as part of these navbar forms, too. This is also a great reminder that vertical alignment utilities can be used to align different sized elements.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cform class=\"container-fluid justify-content-start\">\n \u003Cbutton class=\"btn btn-outline-success me-2\" type=\"button\">Main button\u003C/button>\n \u003Cbutton class=\"btn btn-sm btn-outline-secondary\" type=\"button\">Smaller button\u003C/button>\n \u003C/form>\n\u003C/nav>`} />\n\n### Text\n\nNavbars may contain bits of text with the help of `.navbar-text`. This class adjusts vertical alignment and horizontal spacing for strings of text.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cspan class=\"navbar-text\">\n Navbar text with an inline element\n \u003C/span>\n \u003C/div>\n\u003C/nav>`} />\n\nMix and match with other components and utilities as needed.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar w/ text\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarText\" aria-controls=\"navbarText\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarText\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cspan class=\"navbar-text\">\n Navbar text with an inline element\n \u003C/span>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n## Color schemes\n\n\u003CCallout type=\"warning\">\n**New dark navbars in v5.3.0 —** We've deprecated `.navbar-dark` in favor of the new `data-bs-theme=\"dark\"`. Add `data-bs-theme=\"dark\"` to the `.navbar` to enable a component-specific color mode. [Learn more about our color modes.]([[docsref:/customize/color-modes]])\n\n---\n\n**New in v5.2.0 —** Navbar theming is now powered by CSS variables and `.navbar-light` has been deprecated. CSS variables are applied to `.navbar`, defaulting to the \"light\" appearance, and can be overridden with `.navbar-dark`.\n\u003C/Callout>\n\nNavbar themes are easier than ever thanks to Bootstrap's combination of Sass and CSS variables. The default is our \"light navbar\" for use with light background colors, but you can also apply `data-bs-theme=\"dark\"` to the `.navbar` parent for dark background colors. Then, customize with `.bg-*` and additional utilities.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cnav class=\"navbar navbar-expand-lg bg-dark border-bottom border-body\" data-bs-theme=\"dark\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarColor01\" aria-controls=\"navbarColor01\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarColor01\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">About\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-light\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/nav>\n\n \u003Cnav class=\"navbar navbar-expand-lg bg-primary\" data-bs-theme=\"dark\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarColor02\" aria-controls=\"navbarColor02\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarColor02\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">About\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-light\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/nav>\n\n \u003Cnav class=\"navbar navbar-expand-lg\" style=\"background-color: #e3f2fd;\" data-bs-theme=\"light\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarColor03\" aria-controls=\"navbarColor03\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarColor03\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">About\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-primary\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/nav>\n\u003C/div>\n\n```html\n\u003Cnav class=\"navbar bg-dark border-bottom border-body\" data-bs-theme=\"dark\">\n \u003C!-- Navbar content -->\n\u003C/nav>\n\n\u003Cnav class=\"navbar bg-primary\" data-bs-theme=\"dark\">\n \u003C!-- Navbar content -->\n\u003C/nav>\n\n\u003Cnav class=\"navbar\" style=\"background-color: #e3f2fd;\" data-bs-theme=\"light\">\n \u003C!-- Navbar content -->\n\u003C/nav>\n```\n\n## Containers\n\nAlthough it's not required, you can wrap a navbar in a `.container` to center it on a page–though note that an inner container is still required. Or you can add a container inside the `.navbar` to only center the contents of a [fixed or static top navbar](#placement).\n\n\u003CExample code={`\u003Cdiv class=\"container\">\n \u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003C/div>\n \u003C/nav>\n\u003C/div>`} />\n\nUse any of the responsive containers to change how wide the content in your navbar is presented.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-md\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003C/div>\n\u003C/nav>\n`} />\n\n## Placement\n\nUse our [position utilities]([[docsref:/utilities/position]]) to place navbars in non-static positions. Choose from fixed to the top, fixed to the bottom, stickied to the top (scrolls with the page until it reaches the top, then stays there), or stickied to the bottom (scrolls with the page until it reaches the bottom, then stays there).\n\nFixed navbars use `position: fixed`, meaning they're pulled from the normal flow of the DOM and may require custom CSS (e.g., `padding-top` on the `\u003Cbody>`) to prevent overlap with other elements.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Default\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav class=\"navbar fixed-top bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Fixed top\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav class=\"navbar fixed-bottom bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Fixed bottom\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav class=\"navbar sticky-top bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Sticky top\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav class=\"navbar sticky-bottom bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Sticky bottom\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n## Scrolling\n\nAdd `.navbar-nav-scroll` to a `.navbar-nav` (or other navbar sub-component) to enable vertical scrolling within the toggleable contents of a collapsed navbar. By default, scrolling kicks in at `75vh` (or 75% of the viewport height), but you can override that with the local CSS custom property `--bs-navbar-height` or custom styles. At larger viewports when the navbar is expanded, content will appear as it does in a default navbar.\n\nPlease note that this behavior comes with a potential drawback of `overflow`—when setting `overflow-y: auto` (required to scroll the content here), `overflow-x` is the equivalent of `auto`, which will crop some horizontal content.\n\nHere's an example navbar using `.navbar-nav-scroll` with `style=\"--bs-scroll-height: 100px;\"`, with some extra margin utilities for optimum spacing.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar scroll\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarScroll\" aria-controls=\"navbarScroll\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarScroll\">\n \u003Cul class=\"navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll\" style=\"--bs-scroll-height: 100px;\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Link\n \u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Link\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n## Responsive behaviors\n\nNavbars can use `.navbar-toggler`, `.navbar-collapse`, and `.navbar-expand{-sm|-md|-lg|-xl|-xxl}` classes to determine when their content collapses behind a button. In combination with other utilities, you can easily choose when to show or hide particular elements.\n\nFor navbars that never collapse, add the `.navbar-expand` class on the navbar. For navbars that always collapse, don't add any `.navbar-expand` class.\n\n### Toggler\n\nNavbar togglers are left-aligned by default, but should they follow a sibling element like a `.navbar-brand`, they'll automatically be aligned to the far right. Reversing your markup will reverse the placement of the toggler. Below are examples of different toggle styles.\n\nWith no `.navbar-brand` shown at the smallest breakpoint:\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarTogglerDemo01\" aria-controls=\"navbarTogglerDemo01\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarTogglerDemo01\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Hidden brand\u003C/a>\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nWith a brand name shown on the left and toggler on the right:\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarTogglerDemo02\" aria-controls=\"navbarTogglerDemo02\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarTogglerDemo02\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nWith a toggler on the left and brand name on the right:\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarTogglerDemo03\" aria-controls=\"navbarTogglerDemo03\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarTogglerDemo03\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n### External content\n\nSometimes you want to use the collapse plugin to trigger a container element for content that structurally sits outside of the `.navbar` . Because our plugin works on the `id` and `data-bs-target` matching, that's easily done!\n\n\u003CExample code={`\u003Cdiv class=\"collapse\" id=\"navbarToggleExternalContent\" data-bs-theme=\"dark\">\n \u003Cdiv class=\"bg-dark p-4\">\n \u003Ch5 class=\"text-body-emphasis h4\">Collapsed content\u003C/h5>\n \u003Cspan class=\"text-body-secondary\">Toggleable via the navbar brand.\u003C/span>\n \u003C/div>\n\u003C/div>\n\u003Cnav class=\"navbar navbar-dark bg-dark\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarToggleExternalContent\" aria-controls=\"navbarToggleExternalContent\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003C/div>\n\u003C/nav>`} />\n\nWhen you do this, we recommend including additional JavaScript to move the focus programmatically to the container when it is opened. Otherwise, keyboard users and users of assistive technologies will likely have a hard time finding the newly revealed content - particularly if the container that was opened comes *before* the toggler in the document's structure. We also recommend making sure that the toggler has the `aria-controls` attribute, pointing to the `id` of the content container. In theory, this allows assistive technology users to jump directly from the toggler to the container it controls–but support for this is currently quite patchy.\n\n### Offcanvas\n\nTransform your expanding and collapsing navbar into an offcanvas drawer with the [offcanvas component]([[docsref:/components/offcanvas]]). We extend both the offcanvas default styles and use our `.navbar-expand-*` classes to create a dynamic and flexible navigation sidebar.\n\nIn the example below, to create an offcanvas navbar that is always collapsed across all breakpoints, omit the `.navbar-expand-*` class entirely.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary fixed-top\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Offcanvas navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasNavbar\" aria-controls=\"offcanvasNavbar\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"offcanvasNavbar\" aria-labelledby=\"offcanvasNavbarLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasNavbarLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cul class=\"navbar-nav justify-content-end flex-grow-1 pe-3\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\n \u003Chr class=\"dropdown-divider\">\n \u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex mt-3\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nTo create an offcanvas navbar that expands into a normal navbar at a specific breakpoint like `lg`, use `.navbar-expand-lg`.\n\n```html\n\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary fixed-top\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Offcanvas navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navbarOffcanvasLg\" aria-controls=\"navbarOffcanvasLg\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"navbarOffcanvasLg\" aria-labelledby=\"navbarOffcanvasLgLabel\">\n ...\n \u003C/div>\n\u003C/nav>\n```\n\nWhen using offcanvas in a dark navbar, be aware that you may need to have a dark background on the offcanvas content to avoid the text becoming illegible. In the example below, we add `.navbar-dark` and `.bg-dark` to the `.navbar`, `.text-bg-dark` to the `.offcanvas`, `.dropdown-menu-dark` to `.dropdown-menu`, and `.btn-close-white` to `.btn-close` for proper styling with a dark offcanvas.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-dark bg-dark fixed-top\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Offcanvas dark navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasDarkNavbar\" aria-controls=\"offcanvasDarkNavbar\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"offcanvas offcanvas-end text-bg-dark\" tabindex=\"-1\" id=\"offcanvasDarkNavbar\" aria-labelledby=\"offcanvasDarkNavbarLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasDarkNavbarLabel\">Dark offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cul class=\"navbar-nav justify-content-end flex-grow-1 pe-3\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/a>\n \u003Cul class=\"dropdown-menu dropdown-menu-dark\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\n \u003Chr class=\"dropdown-divider\">\n \u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex mt-3\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, navbars now use local CSS variables on `.navbar` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"navbar-css-vars\" file=\"scss/_navbar.scss\" />\n\nSome additional CSS variables are also present on `.navbar-nav`:\n\n\u003CScssDocs name=\"navbar-nav-css-vars\" file=\"scss/_navbar.scss\" />\n\nCustomization through CSS variables can be seen on the `.navbar-dark` class where we override specific values without adding duplicate CSS selectors.\n\n\u003CScssDocs name=\"navbar-dark-css-vars\" file=\"scss/_navbar.scss\" />\n\n### Sass variables\n\nVariables for all navbars:\n\n\u003CScssDocs name=\"navbar-variables\" file=\"scss/_variables.scss\" />\n\nVariables for the [dark navbar](#color-schemes):\n\n\u003CScssDocs name=\"navbar-dark-variables\" file=\"scss/_variables.scss\" />\n\n### Sass loops\n\n[Responsive navbar expand/collapse classes](#responsive-behaviors) (e.g., `.navbar-expand-lg`) are combined with the `$breakpoints` map and generated through a loop in `scss/_navbar.scss`.\n\n\u003CScssDocs name=\"navbar-expand-loop\" file=\"scss/_navbar.scss\" />","src/content/docs/components/navbar.mdx","97f16c3a269185a4","components/navbar.mdx","components/navs-tabs",{"id":487,"data":489,"body":493,"filePath":494,"digest":495,"legacyId":496,"deferredRender":139},{"aliases":490,"description":491,"title":492,"toc":139},"/docs/[[config:docs_version]]/components/navs/","Documentation and examples for how to use Bootstrap's included navigation components.","Navs and tabs","## Base nav\n\nNavigation available in Bootstrap share general markup and styles, from the base `.nav` class to the active and disabled states. Swap modifier classes to switch between each style.\n\nThe base `.nav` component is built with flexbox and provide a strong foundation for building all types of navigation components. It includes some style overrides (for working with lists), some link padding for larger hit areas, and basic disabled styling.\n\n\u003CCallout>\nThe base `.nav` component does not include any `.active` state. The following examples include the class, mainly to demonstrate that this particular class does not trigger any special styling.\n\nTo convey the active state to assistive technologies, use the `aria-current` attribute — using the `page` value for current page, or `true` for the current item in a set.\n\u003C/Callout>\n\n\u003CExample code={`\u003Cul class=\"nav\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nClasses are used throughout, so your markup can be super flexible. Use `\u003Cul>`s like above, `\u003Col>` if the order of your items is important, or roll your own with a `\u003Cnav>` element. Because the `.nav` uses `display: flex`, the nav links behave the same as nav items would, but without the extra markup.\n\n\u003CExample code={`\u003Cnav class=\"nav\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n\u003C/nav>`} />\n\n## Available styles\n\nChange the style of `.nav`s component with modifiers and utilities. Mix and match as needed, or build your own.\n\n### Horizontal alignment\n\nChange the horizontal alignment of your nav with [flexbox utilities]([[docsref:/utilities/flex#justify-content]]). By default, navs are left-aligned, but you can easily change them to center or right-aligned.\n\nCentered with `.justify-content-center`:\n\n\u003CExample code={`\u003Cul class=\"nav justify-content-center\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nRight-aligned with `.justify-content-end`:\n\n\u003CExample code={`\u003Cul class=\"nav justify-content-end\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Vertical\n\nStack your navigation by changing the flex item direction with the `.flex-column` utility. Need to stack them on some viewports but not others? Use the responsive versions (e.g., `.flex-sm-column`).\n\n\u003CExample code={`\u003Cul class=\"nav flex-column\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nAs always, vertical navigation is possible without `\u003Cul>`s, too.\n\n\u003CExample code={`\u003Cnav class=\"nav flex-column\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n\u003C/nav>`} />\n\n### Tabs\n\nTakes the basic nav from above and adds the `.nav-tabs` class to generate a tabbed interface. Use them to create tabbable regions with our [tab JavaScript plugin](#javascript-behavior).\n\n\u003CExample code={`\u003Cul class=\"nav nav-tabs\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Pills\n\nTake that same HTML, but use `.nav-pills` instead:\n\n\u003CExample code={`\u003Cul class=\"nav nav-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Underline\n\nTake that same HTML, but use `.nav-underline` instead:\n\n\u003CExample code={`\u003Cul class=\"nav nav-underline\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Fill and justify\n\nForce your `.nav`'s contents to extend the full available width with one of two modifier classes. To proportionately fill all available space with your `.nav-item`s, use `.nav-fill`. Notice that all horizontal space is occupied, but not every nav item has the same width.\n\n\u003CExample code={`\u003Cul class=\"nav nav-pills nav-fill\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Much longer nav link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nWhen using a `\u003Cnav>`-based navigation, you can safely omit `.nav-item` as only `.nav-link` is required for styling `\u003Ca>` elements.\n\n\u003CExample code={`\u003Cnav class=\"nav nav-pills nav-fill\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Much longer nav link\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n\u003C/nav>`} />\n\nFor equal-width elements, use `.nav-justified`. All horizontal space will be occupied by nav links, but unlike the `.nav-fill` above, every nav item will be the same width.\n\n\u003CExample code={`\u003Cul class=\"nav nav-pills nav-justified\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Much longer nav link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nSimilar to the `.nav-fill` example using a `\u003Cnav>`-based navigation.\n\n\u003CExample code={`\u003Cnav class=\"nav nav-pills nav-justified\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Much longer nav link\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n\u003C/nav>\n`} />\n## Working with flex utilities\n\nIf you need responsive nav variations, consider using a series of [flexbox utilities]([[docsref:/utilities/flex]]). While more verbose, these utilities offer greater customization across responsive breakpoints. In the example below, our nav will be stacked on the lowest breakpoint, then adapt to a horizontal layout that fills the available width starting from the small breakpoint.\n\n\u003CExample code={`\u003Cnav class=\"nav nav-pills flex-column flex-sm-row\">\n \u003Ca class=\"flex-sm-fill text-sm-center nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"flex-sm-fill text-sm-center nav-link\" href=\"#\">Longer nav link\u003C/a>\n \u003Ca class=\"flex-sm-fill text-sm-center nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"flex-sm-fill text-sm-center nav-link disabled\">Disabled\u003C/a>\n\u003C/nav>`} />\n\n## Regarding accessibility\n\nIf you're using navs to provide a navigation bar, be sure to add a `role=\"navigation\"` to the most logical parent container of the `\u003Cul>`, or wrap a `\u003Cnav>` element around the whole navigation. Do not add the role to the `\u003Cul>` itself, as this would prevent it from being announced as an actual list by assistive technologies.\n\nNote that navigation bars, even if visually styled as tabs with the `.nav-tabs` class, should **not** be given `role=\"tablist\"`, `role=\"tab\"` or `role=\"tabpanel\"` attributes. These are only appropriate for dynamic tabbed interfaces, as described in the [ARIA Authoring Practices Guide tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabpanel/). See [JavaScript behavior](#javascript-behavior) for dynamic tabbed interfaces in this section for an example. The `aria-current` attribute is not necessary on dynamic tabbed interfaces since our JavaScript handles the selected state by adding `aria-selected=\"true\"` on the active tab.\n\n## Using dropdowns\n\nAdd dropdown menus with a little extra HTML and the [dropdowns JavaScript plugin]([[docsref:/components/dropdowns#usage]]).\n\n### Tabs with dropdowns\n\n\u003CExample code={`\u003Cul class=\"nav nav-tabs\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">Dropdown\u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Pills with dropdowns\n\n\u003CExample code={`\u003Cul class=\"nav nav-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">Dropdown\u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, navs now use local CSS variables on `.nav`, `.nav-tabs`, and `.nav-pills` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\nOn the `.nav` base class:\n\n\u003CScssDocs name=\"nav-css-vars\" file=\"scss/_nav.scss\" />\n\nOn the `.nav-tabs` modifier class:\n\n\u003CScssDocs name=\"nav-tabs-css-vars\" file=\"scss/_nav.scss\" />\n\nOn the `.nav-pills` modifier class:\n\n\u003CScssDocs name=\"nav-pills-css-vars\" file=\"scss/_nav.scss\" />\n\n\u003CAddedIn version=\"5.3.0\" />\n\nOn the `.nav-underline` modifier class:\n\n\u003CScssDocs name=\"nav-underline-css-vars\" file=\"scss/_nav.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"nav-variables\" file=\"scss/_variables.scss\" />\n\n## JavaScript behavior\n\nUse the tab JavaScript plugin—include it individually or through the compiled `bootstrap.js` file—to extend our navigational tabs and pills to create tabbable panes of local content.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cul class=\"nav nav-tabs mb-3\" id=\"myTab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#home-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"home-tab-pane\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#profile-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"profile-tab-pane\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"contact-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#contact-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"contact-tab-pane\" aria-selected=\"false\">Contact\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"disabled-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#disabled-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"disabled-tab-pane\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/li>\n \u003C/ul>\n \u003Cdiv class=\"tab-content\" id=\"myTabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"home-tab-pane\" role=\"tabpanel\" aria-labelledby=\"home-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Home tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"profile-tab-pane\" role=\"tabpanel\" aria-labelledby=\"profile-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Profile tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"contact-tab-pane\" role=\"tabpanel\" aria-labelledby=\"contact-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Contact tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"disabled-tab-pane\" role=\"tabpanel\" aria-labelledby=\"disabled-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Disabled tab's\u003C/strong> associated content.\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#home-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"home-tab-pane\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#profile-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"profile-tab-pane\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"contact-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#contact-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"contact-tab-pane\" aria-selected=\"false\">Contact\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"disabled-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#disabled-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"disabled-tab-pane\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"tab-content\" id=\"myTabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"home-tab-pane\" role=\"tabpanel\" aria-labelledby=\"home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"profile-tab-pane\" role=\"tabpanel\" aria-labelledby=\"profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"contact-tab-pane\" role=\"tabpanel\" aria-labelledby=\"contact-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"disabled-tab-pane\" role=\"tabpanel\" aria-labelledby=\"disabled-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\nTo help fit your needs, this works with `\u003Cul>`-based markup, as shown above, or with any arbitrary \"roll your own\" markup. Note that if you're using `\u003Cnav>`, you shouldn't add `role=\"tablist\"` directly to it, as this would override the element's native role as a navigation landmark. Instead, switch to an alternative element (in the example below, a simple `\u003Cdiv>`) and wrap the `\u003Cnav>` around it.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cnav>\n \u003Cdiv class=\"nav nav-tabs mb-3\" id=\"nav-tab\" role=\"tablist\">\n \u003Cbutton class=\"nav-link active\" id=\"nav-home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-home\" type=\"button\" role=\"tab\" aria-controls=\"nav-home\" aria-selected=\"true\">Home\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-profile\" type=\"button\" role=\"tab\" aria-controls=\"nav-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-contact-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-contact\" type=\"button\" role=\"tab\" aria-controls=\"nav-contact\" aria-selected=\"false\">Contact\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-disabled-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-disabled\" type=\"button\" role=\"tab\" aria-controls=\"nav-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/div>\n \u003C/nav>\n \u003Cdiv class=\"tab-content\" id=\"nav-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"nav-home\" role=\"tabpanel\" aria-labelledby=\"nav-home-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Home tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-profile\" role=\"tabpanel\" aria-labelledby=\"nav-profile-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Profile tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-contact\" role=\"tabpanel\" aria-labelledby=\"nav-contact-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Contact tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-disabled\" role=\"tabpanel\" aria-labelledby=\"nav-disabled-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Disabled tab's\u003C/strong> associated content.\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cnav>\n \u003Cdiv class=\"nav nav-tabs\" id=\"nav-tab\" role=\"tablist\">\n \u003Cbutton class=\"nav-link active\" id=\"nav-home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-home\" type=\"button\" role=\"tab\" aria-controls=\"nav-home\" aria-selected=\"true\">Home\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-profile\" type=\"button\" role=\"tab\" aria-controls=\"nav-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-contact-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-contact\" type=\"button\" role=\"tab\" aria-controls=\"nav-contact\" aria-selected=\"false\">Contact\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-disabled-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-disabled\" type=\"button\" role=\"tab\" aria-controls=\"nav-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/div>\n\u003C/nav>\n\u003Cdiv class=\"tab-content\" id=\"nav-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"nav-home\" role=\"tabpanel\" aria-labelledby=\"nav-home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-profile\" role=\"tabpanel\" aria-labelledby=\"nav-profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-contact\" role=\"tabpanel\" aria-labelledby=\"nav-contact-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-disabled\" role=\"tabpanel\" aria-labelledby=\"nav-disabled-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\nThe tabs plugin also works with pills.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cul class=\"nav nav-pills mb-3\" id=\"pills-tab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"pills-home-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-home\" type=\"button\" role=\"tab\" aria-controls=\"pills-home\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-profile-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-profile\" type=\"button\" role=\"tab\" aria-controls=\"pills-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-contact-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-contact\" type=\"button\" role=\"tab\" aria-controls=\"pills-contact\" aria-selected=\"false\">Contact\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-disabled-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-disabled\" type=\"button\" role=\"tab\" aria-controls=\"pills-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/li>\n \u003C/ul>\n \u003Cdiv class=\"tab-content\" id=\"pills-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"pills-home\" role=\"tabpanel\" aria-labelledby=\"pills-home-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Home tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-profile\" role=\"tabpanel\" aria-labelledby=\"pills-profile-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Profile tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-contact\" role=\"tabpanel\" aria-labelledby=\"pills-contact-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Contact tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-disabled\" role=\"tabpanel\" aria-labelledby=\"pills-disabled-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Disabled tab's\u003C/strong> associated content.\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cul class=\"nav nav-pills mb-3\" id=\"pills-tab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"pills-home-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-home\" type=\"button\" role=\"tab\" aria-controls=\"pills-home\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-profile-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-profile\" type=\"button\" role=\"tab\" aria-controls=\"pills-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-contact-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-contact\" type=\"button\" role=\"tab\" aria-controls=\"pills-contact\" aria-selected=\"false\">Contact\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-disabled-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-disabled\" type=\"button\" role=\"tab\" aria-controls=\"pills-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"tab-content\" id=\"pills-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"pills-home\" role=\"tabpanel\" aria-labelledby=\"pills-home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-profile\" role=\"tabpanel\" aria-labelledby=\"pills-profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-contact\" role=\"tabpanel\" aria-labelledby=\"pills-contact-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-disabled\" role=\"tabpanel\" aria-labelledby=\"pills-disabled-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\nAnd with vertical pills. Ideally, for vertical tabs, you should also add `aria-orientation=\"vertical\"` to the tab list container.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"d-flex align-items-start\">\n \u003Cdiv class=\"nav flex-column nav-pills me-3\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n \u003Cbutton class=\"nav-link active\" id=\"v-pills-home-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-home\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-home\" aria-selected=\"true\">Home\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-profile-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-profile\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-disabled-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-disabled\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-messages-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-messages\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-messages\" aria-selected=\"false\">Messages\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-settings-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-settings\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-settings\" aria-selected=\"false\">Settings\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"tab-content\" id=\"v-pills-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"v-pills-home\" role=\"tabpanel\" aria-labelledby=\"v-pills-home-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Home tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-profile\" role=\"tabpanel\" aria-labelledby=\"v-pills-profile-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Profile tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-disabled\" role=\"tabpanel\" aria-labelledby=\"v-pills-disabled-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Disabled tab's\u003C/strong> associated content.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-messages\" role=\"tabpanel\" aria-labelledby=\"v-pills-messages-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Messages tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-settings\" role=\"tabpanel\" aria-labelledby=\"v-pills-settings-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Settings tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-items-start\">\n \u003Cdiv class=\"nav flex-column nav-pills me-3\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n \u003Cbutton class=\"nav-link active\" id=\"v-pills-home-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-home\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-home\" aria-selected=\"true\">Home\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-profile-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-profile\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-disabled-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-disabled\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-messages-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-messages\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-messages\" aria-selected=\"false\">Messages\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-settings-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-settings\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-settings\" aria-selected=\"false\">Settings\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"tab-content\" id=\"v-pills-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"v-pills-home\" role=\"tabpanel\" aria-labelledby=\"v-pills-home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-profile\" role=\"tabpanel\" aria-labelledby=\"v-pills-profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-disabled\" role=\"tabpanel\" aria-labelledby=\"v-pills-disabled-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-messages\" role=\"tabpanel\" aria-labelledby=\"v-pills-messages-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-settings\" role=\"tabpanel\" aria-labelledby=\"v-pills-settings-tab\" tabindex=\"0\">...\u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Accessibility\n\nDynamic tabbed interfaces, as described in the [ARIA Authoring Practices Guide tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabpanel/), require `role=\"tablist\"`, `role=\"tab\"`, `role=\"tabpanel\"`, and additional `aria-` attributes in order to convey their structure, functionality, and current state to users of assistive technologies (such as screen readers). As a best practice, we recommend using `\u003Cbutton>` elements for the tabs, as these are controls that trigger a dynamic change, rather than links that navigate to a new page or location.\n\nIn line with the ARIA Authoring Practices pattern, only the currently active tab receives keyboard focus. When the JavaScript plugin is initialized, it will set `tabindex=\"-1\"` on all inactive tab controls. Once the currently active tab has focus, the cursor keys activate the previous/next tab. The \u003Ckbd>Home\u003C/kbd> and \u003Ckbd>End\u003C/kbd> keys activate the first and last tabs, respectively. The plugin will change the [roving `tabindex`](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/) accordingly. However, note that the JavaScript plugin does not distinguish between horizontal and vertical tab lists when it comes to cursor key interactions: regardless of the tab list's orientation, both the up *and* left cursor go to the previous tab, and down *and* right cursor go to the next tab.\n\n\u003CCallout type=\"warning\">\nIn general, to facilitate keyboard navigation, it's recommended to make the tab panels themselves focusable as well, unless the first element containing meaningful content inside the tab panel is already focusable. The JavaScript plugin does not try to handle this aspect—where appropriate, you'll need to explicitly make your tab panels focusable by adding `tabindex=\"0\"` in your markup.\n\u003C/Callout>\n\n\u003CCallout type=\"danger\">\nThe tab JavaScript plugin **does not** support tabbed interfaces that contain dropdown menus, as these cause both usability and accessibility issues. From a usability perspective, the fact that the currently displayed tab's trigger element is not immediately visible (as it's inside the closed dropdown menu) can cause confusion. From an accessibility point of view, there is currently no sensible way to map this sort of construct to a standard WAI ARIA pattern, meaning that it cannot be easily made understandable to users of assistive technologies.\n\u003C/Callout>\n\n### Using data attributes\n\nYou can activate a tab or pill navigation without writing any JavaScript by simply specifying `data-bs-toggle=\"tab\"` or `data-bs-toggle=\"pill\"` on an element. Use these data attributes on `.nav-tabs` or `.nav-pills`.\n\n```html\n\u003C!-- Nav tabs -->\n\u003Cul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#home\" type=\"button\" role=\"tab\" aria-controls=\"home\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#profile\" type=\"button\" role=\"tab\" aria-controls=\"profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"messages-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#messages\" type=\"button\" role=\"tab\" aria-controls=\"messages\" aria-selected=\"false\">Messages\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"settings-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#settings\" type=\"button\" role=\"tab\" aria-controls=\"settings\" aria-selected=\"false\">Settings\u003C/button>\n \u003C/li>\n\u003C/ul>\n\n\u003C!-- Tab panes -->\n\u003Cdiv class=\"tab-content\">\n \u003Cdiv class=\"tab-pane active\" id=\"home\" role=\"tabpanel\" aria-labelledby=\"home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"profile\" role=\"tabpanel\" aria-labelledby=\"profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"messages\" role=\"tabpanel\" aria-labelledby=\"messages-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"settings\" role=\"tabpanel\" aria-labelledby=\"settings-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\n### Via JavaScript\n\nEnable tabbable tabs via JavaScript (each tab needs to be activated individually):\n\n```js\nconst triggerTabList = document.querySelectorAll('#myTab button')\ntriggerTabList.forEach(triggerEl => {\n const tabTrigger = new bootstrap.Tab(triggerEl)\n\n triggerEl.addEventListener('click', event => {\n event.preventDefault()\n tabTrigger.show()\n })\n})\n```\n\nYou can activate individual tabs in several ways:\n\n```js\nconst triggerEl = document.querySelector('#myTab button[data-bs-target=\"#profile\"]')\nbootstrap.Tab.getInstance(triggerEl).show() // Select tab by name\n\nconst triggerFirstTabEl = document.querySelector('#myTab li:first-child button')\nbootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab\n```\n\n### Fade effect\n\nTo make tabs fade in, add `.fade` to each `.tab-pane`. The first tab pane must also have `.show` to make the initial content visible.\n\n```html\n\u003Cdiv class=\"tab-content\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"home\" role=\"tabpanel\" aria-labelledby=\"home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"profile\" role=\"tabpanel\" aria-labelledby=\"profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"messages\" role=\"tabpanel\" aria-labelledby=\"messages-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"settings\" role=\"tabpanel\" aria-labelledby=\"settings-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nActivates your content as a tab element.\n\nYou can create a tab instance with the constructor, for example:\n\n```js\nconst bsTab = new bootstrap.Tab('#myTab')\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's tab. |\n| `getInstance` | Static method which allows you to get the tab instance associated with a DOM element, you can use it like this: `bootstrap.Tab.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a tab instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Tab.getOrCreateInstance(element)`. |\n| `show` | Selects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. **Returns to the caller before the tab pane has actually been shown** (i.e. before the `shown.bs.tab` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nWhen showing a new tab, the events fire in the following order:\n\n1. `hide.bs.tab` (on the current active tab)\n2. `show.bs.tab` (on the to-be-shown tab)\n3. `hidden.bs.tab` (on the previous active tab, the same one as for the `hide.bs.tab` event)\n4. `shown.bs.tab` (on the newly-active just-shown tab, the same one as for the `show.bs.tab` event)\n\nIf no tab was already active, then the `hide.bs.tab` and `hidden.bs.tab` events will not be fired.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.tab` | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use `event.target` and `event.relatedTarget` to target the current active tab and the new soon-to-be-active tab, respectively. |\n| `hidden.bs.tab` | This event fires after a new tab is shown (and thus the previous active tab is hidden). Use `event.target` and `event.relatedTarget` to target the previous active tab and the new active tab, respectively. |\n| `show.bs.tab` | This event fires on tab show, but before the new tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. |\n| `shown.bs.tab` | This event fires on tab show after a tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. |\n\u003C/BsTable>\n\n```js\nconst tabEl = document.querySelector('button[data-bs-toggle=\"tab\"]')\ntabEl.addEventListener('shown.bs.tab', event => {\n event.target // newly activated tab\n event.relatedTarget // previous active tab\n})\n```","src/content/docs/components/navs-tabs.mdx","fa41b7164104bf9c","components/navs-tabs.mdx","components/offcanvas",{"id":497,"data":499,"body":502,"filePath":503,"digest":504,"legacyId":505,"deferredRender":139},{"description":500,"title":501,"toc":139},"Build hidden sidebars into your project for navigation, shopping carts, and more with a few classes and our JavaScript plugin.","Offcanvas","## How it works\n\nOffcanvas is a sidebar component that can be toggled via JavaScript to appear from the left, right, top, or bottom edge of the viewport. Buttons or anchors are used as triggers that are attached to specific elements you toggle, and `data` attributes are used to invoke our JavaScript.\n\n- Offcanvas shares some of the same JavaScript code as modals. Conceptually, they are quite similar, but they are separate plugins.\n- Similarly, some [source Sass](#sass-variables) variables for offcanvas's styles and dimensions are inherited from the modal's variables.\n- When shown, offcanvas includes a default backdrop that can be clicked to hide the offcanvas.\n- Similar to modals, only one offcanvas can be shown at a time.\n\n**Heads up!** Given how CSS handles animations, you cannot use `margin` or `translate` on an `.offcanvas` element. Instead, use the class as an independent wrapping element.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Examples\n\n### Offcanvas components\n\nBelow is an offcanvas example that is shown by default (via `.show` on `.offcanvas`). Offcanvas includes support for a header with a close button and an optional body class for some initial `padding`. We suggest that you include offcanvas headers with dismiss actions whenever possible, or provide an explicit dismiss action.\n\n\u003CExample class=\"bd-example-offcanvas p-0 bg-body-tertiary overflow-hidden\" code={`\u003Cdiv class=\"offcanvas offcanvas-start show\" tabindex=\"-1\" id=\"offcanvas\" aria-labelledby=\"offcanvasLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here.\n \u003C/div>\n\u003C/div>`} />\n\n### Live demo\n\nUse the buttons below to show and hide an offcanvas element via JavaScript that toggles the `.show` class on an element with the `.offcanvas` class.\n\n- `.offcanvas` hides content (default)\n- `.offcanvas.show` shows content\n\nYou can use a link with the `href` attribute, or a button with the `data-bs-target` attribute. In both cases, the `data-bs-toggle=\"offcanvas\"` is required.\n\n\u003CExample code={`\u003Ca class=\"btn btn-primary\" data-bs-toggle=\"offcanvas\" href=\"#offcanvasExample\" role=\"button\" aria-controls=\"offcanvasExample\">\n Link with href\n\u003C/a>\n\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasExample\" aria-controls=\"offcanvasExample\">\n Button with data-bs-target\n\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-start\" tabindex=\"-1\" id=\"offcanvasExample\" aria-labelledby=\"offcanvasExampleLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasExampleLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cdiv class=\"\">\n Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.\n \u003C/div>\n \u003Cdiv class=\"dropdown mt-3\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\">\n Dropdown button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Body scrolling\n\nScrolling the `\u003Cbody>` element is disabled when an offcanvas and its backdrop are visible. Use the `data-bs-scroll` attribute to enable `\u003Cbody>` scrolling.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasScrolling\" aria-controls=\"offcanvasScrolling\">Enable body scrolling\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-start\" data-bs-scroll=\"true\" data-bs-backdrop=\"false\" tabindex=\"-1\" id=\"offcanvasScrolling\" aria-labelledby=\"offcanvasScrollingLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasScrollingLabel\">Offcanvas with body scrolling\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cp>Try scrolling the rest of the page to see this option in action.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n### Body scrolling and backdrop\n\nYou can also enable `\u003Cbody>` scrolling with a visible backdrop.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasWithBothOptions\" aria-controls=\"offcanvasWithBothOptions\">Enable both scrolling & backdrop\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-start\" data-bs-scroll=\"true\" tabindex=\"-1\" id=\"offcanvasWithBothOptions\" aria-labelledby=\"offcanvasWithBothOptionsLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasWithBothOptionsLabel\">Backdrop with scrolling\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cp>Try scrolling the rest of the page to see this option in action.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n### Static backdrop\n\nWhen backdrop is set to static, the offcanvas will not close when clicking outside of it.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#staticBackdrop\" aria-controls=\"staticBackdrop\">\n Toggle static offcanvas\n\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-start\" data-bs-backdrop=\"static\" tabindex=\"-1\" id=\"staticBackdrop\" aria-labelledby=\"staticBackdropLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"staticBackdropLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cdiv>\n I will not close if you click outside of me.\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Dark offcanvas\n\n\u003CDeprecatedIn version=\"5.3.0\" /> \u003CAddedIn version=\"5.2.0\" />\n\nChange the appearance of offcanvases with utilities to better match them to different contexts like dark navbars. Here we add `.text-bg-dark` to the `.offcanvas` and `.btn-close-white` to `.btn-close` for proper styling with a dark offcanvas. If you have dropdowns within, consider also adding `.dropdown-menu-dark` to `.dropdown-menu`.\n\n\u003CCallout type=\"warning\">\n**Heads up!** Dark variants for components were deprecated in v5.3.0 with the introduction of color modes. Instead of manually adding classes mentioned above, set `data-bs-theme=\"dark\"` on the root element, a parent wrapper, or the component itself.\n\u003C/Callout>\n\n\u003CExample class=\"bd-example-offcanvas p-0 bg-body-secondary overflow-hidden\" code={`\u003Cdiv class=\"offcanvas offcanvas-start show text-bg-dark\" tabindex=\"-1\" id=\"offcanvasDark\" aria-labelledby=\"offcanvasDarkLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasDarkLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvasDark\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cp>Place offcanvas content here.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n## Responsive\n\n\u003CAddedIn version=\"5.2.0\" />\n\nResponsive offcanvas classes hide content outside the viewport from a specified breakpoint and down. Above that breakpoint, the contents within will behave as usual. For example, `.offcanvas-lg` hides content in an offcanvas below the `lg` breakpoint, but shows the content above the `lg` breakpoint.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary d-lg-none\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasResponsive\" aria-controls=\"offcanvasResponsive\">Toggle offcanvas\u003C/button>\n\n\u003Cdiv class=\"alert alert-info d-none d-lg-block\">Resize your browser to show the responsive offcanvas toggle.\u003C/div>\n\n\u003Cdiv class=\"offcanvas-lg offcanvas-end\" tabindex=\"-1\" id=\"offcanvasResponsive\" aria-labelledby=\"offcanvasResponsiveLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasResponsiveLabel\">Responsive offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" data-bs-target=\"#offcanvasResponsive\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cp class=\"mb-0\">This is content within an \u003Ccode>.offcanvas-lg\u003C/code>.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\nResponsive offcanvas classes are available across for each breakpoint.\n\n- `.offcanvas`\n- `.offcanvas-sm`\n- `.offcanvas-md`\n- `.offcanvas-lg`\n- `.offcanvas-xl`\n- `.offcanvas-xxl`\n\n## Placement\n\nThere's no default placement for offcanvas components, so you must add one of the modifier classes below.\n\n- `.offcanvas-start` places offcanvas on the left of the viewport (shown above)\n- `.offcanvas-end` places offcanvas on the right of the viewport\n- `.offcanvas-top` places offcanvas on the top of the viewport\n- `.offcanvas-bottom` places offcanvas on the bottom of the viewport\n\nTry the top, right, and bottom examples out below.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasTop\" aria-controls=\"offcanvasTop\">Toggle top offcanvas\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-top\" tabindex=\"-1\" id=\"offcanvasTop\" aria-labelledby=\"offcanvasTopLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasTopLabel\">Offcanvas top\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n ...\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\" aria-controls=\"offcanvasRight\">Toggle right offcanvas\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasRightLabel\">Offcanvas right\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n ...\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasBottom\" aria-controls=\"offcanvasBottom\">Toggle bottom offcanvas\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-bottom\" tabindex=\"-1\" id=\"offcanvasBottom\" aria-labelledby=\"offcanvasBottomLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasBottomLabel\">Offcanvas bottom\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body small\">\n ...\n \u003C/div>\n\u003C/div>`} />\n\n## Accessibility\n\nSince the offcanvas panel is conceptually a modal dialog, be sure to add `aria-labelledby=\"...\"`—referencing the offcanvas title—to `.offcanvas`. Note that you don’t need to add `role=\"dialog\"` since we already add it via JavaScript.\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, offcanvas now uses local CSS variables on `.offcanvas` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"offcanvas-css-vars\" file=\"scss/_offcanvas.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"offcanvas-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\nThe offcanvas plugin utilizes a few classes and attributes to handle the heavy lifting:\n\n- `.offcanvas` hides the content\n- `.offcanvas.show` shows the content\n- `.offcanvas-start` hides the offcanvas on the left\n- `.offcanvas-end` hides the offcanvas on the right\n- `.offcanvas-top` hides the offcanvas on the top\n- `.offcanvas-bottom` hides the offcanvas on the bottom\n\nAdd a dismiss button with the `data-bs-dismiss=\"offcanvas\"` attribute, which triggers the JavaScript functionality. Be sure to use the `\u003Cbutton>` element with it for proper behavior across all devices.\n\n### Via data attributes\n\n#### Toggle\n\nAdd `data-bs-toggle=\"offcanvas\"` and a `data-bs-target` or `href` to the element to automatically assign control of one offcanvas element. The `data-bs-target` attribute accepts a CSS selector to apply the offcanvas to. Be sure to add the class `offcanvas` to the offcanvas element. If you'd like it to default open, add the additional class `show`.\n\n#### Dismiss\n\n\u003CJsDismiss name=\"offcanvas\" />\n\n\u003CCallout type=\"warning\">\nWhile both ways to dismiss an offcanvas are supported, keep in mind that dismissing from outside an offcanvas does not match the [ARIA Authoring Practices Guide dialog (modal) pattern](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/). Do this at your own risk.\n\u003C/Callout>\n\n### Via JavaScript\n\nEnable manually with:\n\n```js\nconst offcanvasElementList = document.querySelectorAll('.offcanvas')\nconst offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `backdrop` | boolean or the string `static` | `true` | Apply a backdrop on body while offcanvas is open. Alternatively, specify `static` for a backdrop which doesn't close the offcanvas when clicked. |\n| `keyboard` | boolean | `true` | Closes the offcanvas when escape key is pressed. |\n| `scroll` | boolean | `false` | Allow body scrolling while offcanvas is open. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nActivates your content as an offcanvas element. Accepts an optional options `object`.\n\nYou can create an offcanvas instance with the constructor, for example:\n\n```js\nconst bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's offcanvas. |\n| `getInstance` | *Static* method which allows you to get the offcanvas instance associated with a DOM element. |\n| `getOrCreateInstance` | *Static* method which allows you to get the offcanvas instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `hide` | Hides an offcanvas element. **Returns to the caller before the offcanvas element has actually been hidden** (i.e. before the `hidden.bs.offcanvas` event occurs). |\n| `show` | Shows an offcanvas element. **Returns to the caller before the offcanvas element has actually been shown** (i.e. before the `shown.bs.offcanvas` event occurs). |\n| `toggle` | Toggles an offcanvas element to shown or hidden. **Returns to the caller before the offcanvas element has actually been shown or hidden** (i.e. before the `shown.bs.offcanvas` or `hidden.bs.offcanvas` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nBootstrap's offcanvas class exposes a few events for hooking into offcanvas functionality.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.offcanvas` | This event is fired immediately when the `hide` method has been called. |\n| `hidden.bs.offcanvas` | This event is fired when an offcanvas element has been hidden from the user (will wait for CSS transitions to complete). |\n| `hidePrevented.bs.offcanvas` | This event is fired when the offcanvas is shown, its backdrop is `static` and a click outside of the offcanvas is performed. The event is also fired when the escape key is pressed and the `keyboard` option is set to `false`. |\n| `show.bs.offcanvas` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.offcanvas` | This event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to complete). |\n\u003C/BsTable>\n\n```js\nconst myOffcanvas = document.getElementById('myOffcanvas')\nmyOffcanvas.addEventListener('hidden.bs.offcanvas', event => {\n // do something...\n})\n```","src/content/docs/components/offcanvas.mdx","ef2abe219c2c85c2","components/offcanvas.mdx","components/pagination",{"id":506,"data":508,"body":511,"filePath":512,"digest":513,"legacyId":514,"deferredRender":139},{"description":509,"title":510,"toc":139},"Documentation and examples for showing pagination to indicate a series of related content exists across multiple pages.","Pagination","## Overview\n\nWe use a large block of connected links for our pagination, making links hard to miss and easily scalable—all while providing large hit areas. Pagination is built with list HTML elements so screen readers can announce the number of available links. Use a wrapping `\u003Cnav>` element to identify it as a navigation section to screen readers and other assistive technologies.\n\nIn addition, as pages likely have more than one such navigation section, it's advisable to provide a descriptive `aria-label` for the `\u003Cnav>` to reflect its purpose. For example, if the pagination component is used to navigate between a set of search results, an appropriate label could be `aria-label=\"Search results pages\"`.\n\n\u003CExample code={`\u003Cnav aria-label=\"Page navigation example\">\n \u003Cul class=\"pagination\">\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">Previous\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## Working with icons\n\nLooking to use an icon or symbol in place of text for some pagination links? Be sure to provide proper screen reader support with `aria` attributes.\n\n\u003CExample code={`\u003Cnav aria-label=\"Page navigation example\">\n \u003Cul class=\"pagination\">\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\" aria-label=\"Previous\">\n \u003Cspan aria-hidden=\"true\">«\u003C/span>\n \u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\" aria-label=\"Next\">\n \u003Cspan aria-hidden=\"true\">»\u003C/span>\n \u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## Disabled and active states\n\nPagination links are customizable for different circumstances. Use `.disabled` for links that appear un-clickable and `.active` to indicate the current page.\n\nWhile the `.disabled` class uses `pointer-events: none` to _try_ to disable the link functionality of `\u003Ca>`s, that CSS property is not yet standardized and doesn't account for keyboard navigation. As such, you should always add `tabindex=\"-1\"` on disabled links and use custom JavaScript to fully disable their functionality.\n\n\u003CExample code={`\u003Cnav aria-label=\"...\">\n \u003Cul class=\"pagination\">\n \u003Cli class=\"page-item disabled\">\n \u003Ca class=\"page-link\">Previous\u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item active\" aria-current=\"page\">\n \u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\nYou can optionally swap out active or disabled anchors for `\u003Cspan>`, or omit the anchor in the case of the prev/next arrows, to remove click functionality and prevent keyboard focus while retaining intended styles.\n\n\u003CExample code={`\u003Cnav aria-label=\"...\">\n \u003Cul class=\"pagination\">\n \u003Cli class=\"page-item disabled\">\n \u003Cspan class=\"page-link\">Previous\u003C/span>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item active\" aria-current=\"page\">\n \u003Cspan class=\"page-link\">2\u003C/span>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## Sizing\n\nFancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for additional sizes.\n\n\u003CExample code={`\u003Cnav aria-label=\"...\">\n \u003Cul class=\"pagination pagination-lg\">\n \u003Cli class=\"page-item active\" aria-current=\"page\">\n \u003Cspan class=\"page-link\">1\u003C/span>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav aria-label=\"...\">\n \u003Cul class=\"pagination pagination-sm\">\n \u003Cli class=\"page-item active\" aria-current=\"page\">\n \u003Cspan class=\"page-link\">1\u003C/span>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## Alignment\n\nChange the alignment of pagination components with [flexbox utilities]([[docsref:/utilities/flex]]). For example, with `.justify-content-center`:\n\n\u003CExample code={`\u003Cnav aria-label=\"Page navigation example\">\n \u003Cul class=\"pagination justify-content-center\">\n \u003Cli class=\"page-item disabled\">\n \u003Ca class=\"page-link\">Previous\u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\nOr with `.justify-content-end`:\n\n\u003CExample code={`\u003Cnav aria-label=\"Page navigation example\">\n \u003Cul class=\"pagination justify-content-end\">\n \u003Cli class=\"page-item disabled\">\n \u003Ca class=\"page-link\">Previous\u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, pagination now uses local CSS variables on `.pagination` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"pagination-css-vars\" file=\"scss/_pagination.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"pagination-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\n\u003CScssDocs name=\"pagination-mixin\" file=\"scss/mixins/_pagination.scss\" />","src/content/docs/components/pagination.mdx","4ae6699d1ffa4c25","components/pagination.mdx","components/placeholders",{"id":515,"data":517,"body":522,"filePath":523,"digest":524,"legacyId":525,"deferredRender":139},{"added":518,"description":520,"title":521,"toc":139},{"version":519},"5.1","Use loading placeholders for your components or pages to indicate something may still be loading.","Placeholders","import { getData } from '@libs/data'\n\n## About\n\nPlaceholders can be used to enhance the experience of your application. They're built only with HTML and CSS, meaning you don't need any JavaScript to create them. You will, however, need some custom JavaScript to toggle their visibility. Their appearance, color, and sizing can be easily customized with our utility classes.\n\n## Example\n\nIn the example below, we take a typical card component and recreate it with placeholders applied to create a \"loading card\". Size and proportions are the same between the two.\n\n\u003Cdiv class=\"bd-example bd-example-placeholder-cards d-flex justify-content-around\">\n\u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text={false} background=\"#20c997\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card\" aria-hidden=\"true\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text={false} />\n \u003Cdiv class=\"card-body\">\n \u003Cdiv class=\"h5 card-title placeholder-glow\">\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n \u003C/div>\n \u003Cp class=\"card-text placeholder-glow\">\n \u003Cspan class=\"placeholder col-7\">\u003C/span>\n \u003Cspan class=\"placeholder col-4\">\u003C/span>\n \u003Cspan class=\"placeholder col-4\">\u003C/span>\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n \u003Cspan class=\"placeholder col-8\">\u003C/span>\n \u003C/p>\n \u003Ca class=\"btn btn-primary disabled placeholder col-6\" aria-disabled=\"true\">\u003C/a>\n \u003C/div>\n\u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"card\">\n \u003Cimg src=\"...\" class=\"card-img-top\" alt=\"...\">\n\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card\" aria-hidden=\"true\">\n \u003Cimg src=\"...\" class=\"card-img-top\" alt=\"...\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title placeholder-glow\">\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n \u003C/h5>\n \u003Cp class=\"card-text placeholder-glow\">\n \u003Cspan class=\"placeholder col-7\">\u003C/span>\n \u003Cspan class=\"placeholder col-4\">\u003C/span>\n \u003Cspan class=\"placeholder col-4\">\u003C/span>\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n \u003Cspan class=\"placeholder col-8\">\u003C/span>\n \u003C/p>\n \u003Ca class=\"btn btn-primary disabled placeholder col-6\" aria-disabled=\"true\">\u003C/a>\n \u003C/div>\n\u003C/div>\n```\n\n## How it works\n\nCreate placeholders with the `.placeholder` class and a grid column class (e.g., `.col-6`) to set the `width`. They can replace the text inside an element or be added as a modifier class to an existing component.\n\nWe apply additional styling to `.btn`s via `::before` to ensure the `height` is respected. You may extend this pattern for other situations as needed, or add a ` ` within the element to reflect the height when actual text is rendered in its place.\n\n\u003CExample code={`\u003Cp aria-hidden=\"true\">\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n\u003C/p>\n\n\u003Ca class=\"btn btn-primary disabled placeholder col-4\" aria-disabled=\"true\">\u003C/a>`} />\n\n\u003CCallout>\nThe use of `aria-hidden=\"true\"` only indicates that the element should be hidden to screen readers. The *loading* behavior of the placeholder depends on how authors will actually use the placeholder styles, how they plan to update things, etc. Some JavaScript code may be needed to *swap* the state of the placeholder and inform AT users of the update.\n\u003C/Callout>\n\n### Width\n\nYou can change the `width` through grid column classes, width utilities, or inline styles.\n\n\u003CExample code={`\u003Cspan class=\"placeholder col-6\">\u003C/span>\n\u003Cspan class=\"placeholder w-75\">\u003C/span>\n\u003Cspan class=\"placeholder\" style=\"width: 25%;\">\u003C/span>`} />\n\n### Color\n\nBy default, the `placeholder` uses `currentColor`. This can be overridden with a custom color or utility class.\n\n\u003CExample code={[\n `\u003Cspan class=\"placeholder col-12\">\u003C/span>\n `,\n ...getData('theme-colors').map((themeColor) => `\u003Cspan class=\"placeholder col-12 bg-${themeColor.name}\">\u003C/span>`)\n]} />\n\n### Sizing\n\nThe size of `.placeholder`s are based on the typographic style of the parent element. Customize them with sizing modifiers: `.placeholder-lg`, `.placeholder-sm`, or `.placeholder-xs`.\n\n\u003CExample code={`\u003Cspan class=\"placeholder col-12 placeholder-lg\">\u003C/span>\n\u003Cspan class=\"placeholder col-12\">\u003C/span>\n\u003Cspan class=\"placeholder col-12 placeholder-sm\">\u003C/span>\n\u003Cspan class=\"placeholder col-12 placeholder-xs\">\u003C/span>`} />\n\n### Animation\n\nAnimate placeholders with `.placeholder-glow` or `.placeholder-wave` to better convey the perception of something being *actively* loaded.\n\n\u003CExample code={`\u003Cp class=\"placeholder-glow\">\n \u003Cspan class=\"placeholder col-12\">\u003C/span>\n\u003C/p>\n\n\u003Cp class=\"placeholder-wave\">\n \u003Cspan class=\"placeholder col-12\">\u003C/span>\n\u003C/p>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"placeholders\" file=\"scss/_variables.scss\" />","src/content/docs/components/placeholders.mdx","56d3913eae45f526","components/placeholders.mdx","components/popovers",{"id":526,"data":528,"body":531,"filePath":532,"digest":533,"legacyId":534,"deferredRender":139},{"description":529,"title":530,"toc":139},"Documentation and examples for adding Bootstrap popovers, like those found in iOS, to any element on your site.","Popovers","## Overview\n\nThings to know when using the popover plugin:\n\n- Popovers rely on the third party library [Popper](https://popper.js.org/docs/v2/) for positioning. You must include [popper.min.js]([[config:cdn.popper]]) before `bootstrap.js`, or use one `bootstrap.bundle.min.js` which contains Popper.\n- Popovers require the [popover plugin]([[docsref:/components/popovers]]) as a dependency.\n- Popovers are opt-in for performance reasons, so **you must initialize them yourself**.\n- Zero-length `title` and `content` values will never show a popover.\n- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc).\n- Triggering popovers on hidden elements will not work.\n- Popovers for `.disabled` or `disabled` elements must be triggered on a wrapper element.\n- When triggered from anchors that wrap across multiple lines, popovers will be centered between the anchors' overall width. Use `.text-nowrap` on your `\u003Ca>`s to avoid this behavior.\n- Popovers must be hidden before their corresponding elements have been removed from the DOM.\n- Popovers can be triggered thanks to an element inside a shadow DOM.\n\n\u003CCallout name=\"info-sanitizer\" />\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\nKeep reading to see how popovers work with some examples.\n\n## Examples\n\n### Enable popovers\n\nAs mentioned above, you must initialize popovers before they can be used. One way to initialize all popovers on a page would be to select them by their `data-bs-toggle` attribute, like so:\n\n```js\nconst popoverTriggerList = document.querySelectorAll('[data-bs-toggle=\"popover\"]')\nconst popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))\n```\n\n### Live demo\n\nWe use JavaScript similar to the snippet above to render the following live popover. Titles are set via `data-bs-title` and body content is set via `data-bs-content`.\n\n\u003CCallout name=\"warning-data-bs-title-vs-title\" type=\"warning\" />\n\n\u003CExample addStackblitzJs code={`\u003Cbutton type=\"button\" class=\"btn btn-lg btn-danger\" data-bs-toggle=\"popover\" data-bs-title=\"Popover title\" data-bs-content=\"And here's some amazing content. It's very engaging. Right?\">Click to toggle popover\u003C/button>`} />\n\n### Four directions\n\nFour options are available: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL. Set `data-bs-placement` to change the direction.\n\n\u003CExample addStackblitzJs code={`\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"top\" data-bs-content=\"Top popover\">\n Popover on top\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"right\" data-bs-content=\"Right popover\">\n Popover on right\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"bottom\" data-bs-content=\"Bottom popover\">\n Popover on bottom\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"left\" data-bs-content=\"Left popover\">\n Popover on left\n\u003C/button>`} />\n\n### Custom `container`\n\nWhen you have some styles on a parent element that interfere with a popover, you'll want to specify a custom `container` so that the popover's HTML appears within that element instead. This is common in responsive tables, input groups, and the like.\n\n```js\nconst popover = new bootstrap.Popover('.example-popover', {\n container: 'body'\n})\n```\n\nAnother situation where you'll want to set an explicit custom `container` are popovers inside a [modal dialog]([[docsref:/components/modal]]), to make sure that the popover itself is appended to the modal. This is particularly important for popovers that contain interactive elements – modal dialogs will trap focus, so unless the popover is a child element of the modal, users won't be able to focus or activate these interactive elements.\n\n```js\nconst popover = new bootstrap.Popover('.example-popover', {\n container: '.modal-body'\n})\n```\n\n### Custom popovers\n\n\u003CAddedIn version=\"5.2.0\" />\n\nYou can customize the appearance of popovers using [CSS variables](#variables). We set a custom class with `data-bs-custom-class=\"custom-popover\"` to scope our custom appearance and use it to override some of the local CSS variables.\n\n\u003CScssDocs name=\"custom-popovers\" file=\"site/src/scss/_component-examples.scss\" />\n\n\u003CExample addStackblitzJs class=\"custom-popover-demo\" code={`\u003Cbutton type=\"button\" class=\"btn btn-secondary\"\n data-bs-toggle=\"popover\" data-bs-placement=\"right\"\n data-bs-custom-class=\"custom-popover\"\n data-bs-title=\"Custom popover\"\n data-bs-content=\"This popover is themed via CSS variables.\">\n Custom popover\n\u003C/button>`} />\n\n### Dismiss on next click\n\nUse the `focus` trigger to dismiss popovers on the user's next click of an element other than the toggle element.\n\n\u003CCallout type=\"danger\">\n**Dismissing on next click requires specific HTML for proper cross-browser and cross-platform behavior.** You can only use `\u003Ca>` elements, not `\u003Cbutton>`s, and you must include a [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex).\n\u003C/Callout>\n\n\u003CExample addStackblitzJs code={`\u003Ca tabindex=\"0\" class=\"btn btn-lg btn-danger\" role=\"button\" data-bs-toggle=\"popover\" data-bs-trigger=\"focus\" data-bs-title=\"Dismissible popover\" data-bs-content=\"And here's some amazing content. It's very engaging. Right?\">Dismissible popover\u003C/a>`} />\n\n```js\nconst popover = new bootstrap.Popover('.popover-dismiss', {\n trigger: 'focus'\n})\n```\n\n### Disabled elements\n\nElements with the `disabled` attribute aren't interactive, meaning users cannot hover or click them to trigger a popover (or tooltip). As a workaround, you'll want to trigger the popover from a wrapper `\u003Cdiv>` or `\u003Cspan>`, ideally made keyboard-focusable using `tabindex=\"0\"`.\n\nFor disabled popover triggers, you may also prefer `data-bs-trigger=\"hover focus\"` so that the popover appears as immediate visual feedback to your users as they may not expect to _click_ on a disabled element.\n\n\u003CExample addStackblitzJs code={`\u003Cspan class=\"d-inline-block\" tabindex=\"0\" data-bs-toggle=\"popover\" data-bs-trigger=\"hover focus\" data-bs-content=\"Disabled popover\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>Disabled button\u003C/button>\n\u003C/span>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap’s evolving CSS variables approach, popovers now use local CSS variables on `.popover` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"popover-css-vars\" file=\"scss/_popover.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"popover-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\nEnable popovers via JavaScript:\n\n```js\nconst exampleEl = document.getElementById('example')\nconst popover = new bootstrap.Popover(exampleEl, options)\n```\n\n\u003CCallout type=\"warning\">\n**Keep popovers accessible to keyboard and assistive technology users** by only adding them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). While other HTML elements can be made focusable by adding `tabindex=\"0\"`, this can create annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce popovers in this situation. Additionally, do not rely solely on `hover` as the trigger for your popovers as this will make them impossible to trigger for keyboard users.\n\nAvoid adding an excessive amount of content in popovers with the `html` option. Once popovers are displayed, their content is tied to the trigger element with the `aria-describedby` attribute, causing all of the popover's content to be announced to assistive technology users as one long, uninterrupted stream.\n\nPopovers do not manage keyboard focus order, and their placement can be random in the DOM, so be careful when adding interactive elements (like forms or links), as it may lead to an illogical focus order or make the popover content itself completely unreachable for keyboard users. In cases where you must use these elements, consider using a modal dialog instead.\n\u003C/Callout>\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CCallout type=\"warning\">\nNote that for security reasons the `sanitize`, `sanitizeFn`, and `allowList` options cannot be supplied using data attributes.\n\u003C/Callout>\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `allowList` | object | [Default value]([[docsref:/getting-started/javascript#sanitizer]]) | Object which contains allowed attributes and tags. |\n| `animation` | boolean | `true` | Apply a CSS fade transition to the popover. |\n| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the popover (applies only to Popper's preventOverflow modifier). By default, it's `'clippingParents'` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). |\n| `container` | string, element, false | `false` | Appends the popover to a specific element. Example: `container: 'body'`. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize. |\n| `content` | string, element, function | `''` | The popover's text content. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. |\n| `customClass` | string, function | `''` | Add classes to the popover when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: `'class-1 class-2'`. You can also pass a function that should return a single string containing additional class names. |\n| `delay` | number, object | `0` | Delay showing and hiding the popover (ms)—doesn't apply to manual trigger type. If a number is supplied, delay is applied to both hide/show. Object structure is: `delay: { \"show\": 500, \"hide\": 100 }`. |\n| `fallbackPlacements` | string, array | `['top', 'right', 'bottom', 'left']` | Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to Popper's [behavior docs](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements). |\n| `html` | boolean | `false` | Allow HTML in the popover. If true, HTML tags in the popover's `title` will be rendered in the popover. If false, `innerText` property will be used to insert content into the DOM. Use text if you're worried about XSS attacks. |\n| `offset` | number, string, function | `[0, 8]` | Offset of the popover relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset=\"10,20\"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). |\n| `placement` | string, function | `'right'` | How to position the popover: auto, top, bottom, left, right. When `auto` is specified, it will dynamically reorient the popover. When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The `this` context is set to the popover instance. |\n| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper. |\n| `sanitize` | boolean | `true` | Enable or disable the sanitization. If activated `'template'`, `'content'` and `'title'` options will be sanitized. |\n| `sanitizeFn` | null, function | `null` | Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization. |\n| `selector` | string, false | `false` | If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to also apply popovers to dynamically added DOM elements (`jQuery.on` support). See [this issue]([[config:repo]]/issues/4215) and [an informative example](https://codepen.io/Johann-S/pen/djJYPb). **Note**: `title` attribute must not be used as a selector. |\n| `template` | string | `'\u003Cdiv class=\"popover\" role=\"tooltip\">\u003Cdiv class=\"popover-arrow\">\u003C/div>\u003Ch3 class=\"popover-header\">\u003C/h3>\u003Cdiv class=\"popover-body\">\u003C/div>\u003C/div>'` | Base HTML to use when creating the popover. The popover's `title` will be injected into the `.popover-header`. The popover's `content` will be injected into the `.popover-body`. `.popover-arrow` will become the popover's arrow. The outermost wrapper element should have the `.popover` class and `role=\"tooltip\"`. |\n| `title` | string, element, function | `''` | The popover title. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. |\n| `trigger` | string | `'click'` | How popover is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. `'manual'` indicates that the popover will be triggered programmatically via the `.popover('show')`, `.popover('hide')` and `.popover('toggle')` methods; this value cannot be combined with any other trigger. `'hover'` on its own will result in popovers that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present. |\n\u003C/BsTable>\n\n\u003CCallout>\n#### Data attributes for individual popovers\n\nOptions for individual popovers can alternatively be specified through the use of data attributes, as explained above.\n\u003C/Callout>\n\n#### Using function with `popperConfig`\n\n```js\nconst popover = new bootstrap.Popover(element, {\n popperConfig(defaultBsPopperConfig) {\n // const newPopperConfig = {...}\n // use defaultBsPopperConfig if needed...\n // return newPopperConfig\n }\n})\n```\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `disable` | Removes the ability for an element's popover to be shown. The popover will only be able to be shown if it is re-enabled. |\n| `dispose` | Hides and destroys an element's popover (Removes stored data on the DOM element). Popovers that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. |\n| `enable` | Gives an element's popover the ability to be shown. **Popovers are enabled by default.** |\n| `getInstance` | _Static_ method which allows you to get the popover instance associated with a DOM element. |\n| `getOrCreateInstance` | _Static_ method which allows you to get the popover instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `hide` | Hides an element's popover. **Returns to the caller before the popover has actually been hidden** (i.e. before the `hidden.bs.popover` event occurs). This is considered a \"manual\" triggering of the popover. |\n| `setContent` | Gives a way to change the popover's content after its initialization. |\n| `show` | Reveals an element's popover. **Returns to the caller before the popover has actually been shown** (i.e. before the `shown.bs.popover` event occurs). This is considered a \"manual\" triggering of the popover. Popovers whose title and content are both zero-length are never displayed. |\n| `toggle` | Toggles an element's popover. **Returns to the caller before the popover has actually been shown or hidden** (i.e. before the `shown.bs.popover` or `hidden.bs.popover` event occurs). This is considered a \"manual\" triggering of the popover. |\n| `toggleEnabled` | Toggles the ability for an element's popover to be shown or hidden. |\n| `update` | Updates the position of an element's popover. |\n\u003C/BsTable>\n\n\n```js\n// getOrCreateInstance example\nconst popover = bootstrap.Popover.getOrCreateInstance('#example') // Returns a Bootstrap popover instance\n\n// setContent example\npopover.setContent({\n '.popover-header': 'another title',\n '.popover-body': 'another content'\n})\n\n```\n\n\u003CCallout>\nThe `setContent` method accepts an `object` argument, where each property-key is a valid `string` selector within the popover template, and each related property-value can be `string` | `element` | `function` | `null`\n\u003C/Callout>\n\n### Events\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `hide.bs.popover` | This event is fired immediately when the `hide` instance method has been called. |\n| `hidden.bs.popover` | This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete). |\n| `inserted.bs.popover` | This event is fired after the `show.bs.popover` event when the popover template has been added to the DOM. |\n| `show.bs.popover` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.popover` | This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete). |\n\u003C/BsTable>\n\n```js\nconst myPopoverTrigger = document.getElementById('myPopover')\nmyPopoverTrigger.addEventListener('hidden.bs.popover', () => {\n // do something...\n})\n```","src/content/docs/components/popovers.mdx","9a35f5b7a8d0c3f1","components/popovers.mdx","components/progress",{"id":535,"data":537,"body":540,"filePath":541,"digest":542,"legacyId":543,"deferredRender":139},{"description":538,"title":539,"toc":139},"Documentation and examples for using Bootstrap custom progress bars featuring support for stacked bars, animated backgrounds, and text labels.","Progress","\u003CCallout>\n**New markup in v5.3.0 —** We've deprecated the previous HTML structure for progress bars and replaced it with a more accessible one. The previous structure will continue to work until v6. [See what's changed in our migration guide.]([[docsref:/migration#improved-markup-for-progress-bars]])\n\u003C/Callout>\n\n## How it works\n\nProgress components are built with two HTML elements, some CSS to set the width, and a few attributes. We don't use [the HTML5 `\u003Cprogress>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress), ensuring you can stack progress bars, animate them, and place text labels over them.\n\n- We use the `.progress` as a wrapper to indicate the max value of the progress bar.\n- The `.progress` wrapper also requires a `role=\"progressbar\"` and `aria` attributes to make it accessible, including an accessible name (using `aria-label`, `aria-labelledby`, or similar).\n- We use the inner `.progress-bar` purely for the visual bar and label.\n- The `.progress-bar` requires an inline style, utility class, or custom CSS to set its width.\n- We provide a special `.progress-stacked` class to create multiple/stacked progress bars.\n\nPut that all together, and you have the following examples.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 0%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 50%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 75%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 100%\">\u003C/div>\n\u003C/div>`} />\n\n## Bar sizing\n\n### Width\n\nBootstrap provides a handful of [utilities for setting width]([[docsref:/utilities/sizing]]). Depending on your needs, these may help with quickly configuring the width of the `.progress-bar`.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar w-75\">\u003C/div>\n\u003C/div>`} />\n\n### Height\n\nYou only set a `height` value on the `.progress` container, so if you change that value, the inner `.progress-bar` will automatically resize accordingly.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Example 1px high\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"height: 1px\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Example 20px high\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"height: 20px\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">\u003C/div>\n\u003C/div>`} />\n\n## Labels\n\nAdd labels to your progress bars by placing text within the `.progress-bar`.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Example with label\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">25%\u003C/div>\n\u003C/div>`} />\n\nNote that by default, the content inside the `.progress-bar` is controlled with `overflow: hidden`, so it doesn't bleed out of the bar. If your progress bar is shorter than its label, the content will be capped and may become unreadable. To change this behavior, you can use `.overflow-visible` from the [overflow utilities]([[docsref:/utilities/overflow]]), but make sure to also define an explicit [text color]([[docsref:/utilities/colors#colors]]) so the text remains readable. Be aware though that currently this approach does not take into account [color modes]([[docsref:/customize/color-modes]]).\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Example with label\" aria-valuenow=\"10\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar overflow-visible text-dark\" style=\"width: 10%\">Long label text for the progress bar, set to a dark color\u003C/div>\n\u003C/div>`} />\n\n## Backgrounds\n\nUse background utility classes to change the appearance of individual progress bars.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Success example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-success\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Info example\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-info\" style=\"width: 50%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Warning example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-warning\" style=\"width: 75%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Danger example\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-danger\" style=\"width: 100%\">\u003C/div>\n\u003C/div>`} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\nIf you're adding labels to progress bars with a custom background color, make sure to also set an appropriate [text color]([[docsref:/utilities/colors#colors]]), so the labels remain readable and have sufficient contrast.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Success example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-success\" style=\"width: 25%\">25%\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Info example\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-info text-dark\" style=\"width: 50%\">50%\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Warning example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-warning text-dark\" style=\"width: 75%\">75%\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Danger example\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-danger\" style=\"width: 100%\">100%\u003C/div>\n\u003C/div>`} />\n\nAlternatively, you can use the new combined [color and background]([[docsref:/helpers/color-background]]) helper classes.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Warning example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar text-bg-warning\" style=\"width: 75%\">75%\u003C/div>\n\u003C/div>`} />\n\n## Multiple bars\n\nYou can include multiple progress components inside a container with `.progress-stacked` to create a single stacked progress bar. Note that in this case, the styling to set the visual width of the progress bar *must* be applied to the `.progress` elements, rather than the `.progress-bar`s.\n\n\u003CExample code={`\u003Cdiv class=\"progress-stacked\">\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment one\" aria-valuenow=\"15\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 15%\">\n \u003Cdiv class=\"progress-bar\">\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment two\" aria-valuenow=\"30\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 30%\">\n \u003Cdiv class=\"progress-bar bg-success\">\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment three\" aria-valuenow=\"20\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 20%\">\n \u003Cdiv class=\"progress-bar bg-info\">\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Striped\n\nAdd `.progress-bar-striped` to any `.progress-bar` to apply a stripe via CSS gradient over the progress bar's background color.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Default striped example\" aria-valuenow=\"10\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped\" style=\"width: 10%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Success striped example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped bg-success\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Info striped example\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped bg-info\" style=\"width: 50%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Warning striped example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped bg-warning\" style=\"width: 75%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Danger striped example\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped bg-danger\" style=\"width: 100%\">\u003C/div>\n\u003C/div>`} />\n\n## Animated stripes\n\nThe striped gradient can also be animated. Add `.progress-bar-animated` to `.progress-bar` to animate the stripes right to left via CSS3 animations.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Animated striped example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped progress-bar-animated\" style=\"width: 75%\">\u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, progress bars now use local CSS variables on `.progress` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"progress-css-vars\" file=\"scss/_progress.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"progress-variables\" file=\"scss/_variables.scss\" />\n\n### Keyframes\n\nUsed for creating the CSS animations for `.progress-bar-animated`. Included in `scss/_progress-bar.scss`.\n\n\u003CScssDocs name=\"progress-keyframes\" file=\"scss/_progress.scss\" />","src/content/docs/components/progress.mdx","8b5397342695d8b0","components/progress.mdx","components/scrollspy",{"id":544,"data":546,"body":549,"filePath":550,"digest":551,"legacyId":552,"deferredRender":139},{"description":547,"title":548,"toc":139},"Automatically update Bootstrap navigation or list group components based on scroll position to indicate which link is currently active in the viewport.","Scrollspy","## How it works\n\nScrollspy toggles the `.active` class on anchor (`\u003Ca>`) elements when the element with the `id` referenced by the anchor's `href` is scrolled into view. Scrollspy is best used in conjunction with a Bootstrap [nav component]([[docsref:/components/navs-tabs]]) or [list group]([[docsref:/components/list-group]]), but it will also work with any anchor elements in the current page. Here's how it works.\n\n- To start, scrollspy requires two things: a navigation, list group, or a simple set of links, plus a scrollable container. The scrollable container can be the `\u003Cbody>` or a custom element with a set `height` and `overflow-y: scroll`.\n\n- On the scrollable container, add `data-bs-spy=\"scroll\"` and `data-bs-target=\"#navId\"` where `navId` is the unique `id` of the associated navigation. If there is no focusable element inside the element, be sure to also include a `tabindex=\"0\"` to ensure keyboard access.\n\n- As you scroll the \"spied\" container, an `.active` class is added and removed from anchor links within the associated navigation. Links must have resolvable `id` targets, otherwise they're ignored. For example, a `\u003Ca href=\"#home\">home\u003C/a>` must correspond to something in the DOM like `\u003Cdiv id=\"home\">\u003C/div>`\n\n- Target elements that are not visible will be ignored. See the [Non-visible elements](#non-visible-elements) section below.\n\n## Examples\n\n### Navbar\n\nScroll the area below the navbar and watch the active class change. Open the dropdown menu and watch the dropdown items be highlighted as well.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cnav id=\"navbar-example2\" class=\"navbar bg-body-tertiary px-3 mb-3 rounded-2\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cul class=\"nav nav-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#scrollspyHeading1\">First\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#scrollspyHeading2\">Second\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">Dropdown\u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading3\">Third\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading4\">Fourth\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading5\">Fifth\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003C/nav>\n \u003Cdiv class=\"scrollspy-example bg-body-tertiary p-3 rounded-2\" data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example2\" data-bs-root-margin=\"0px 0px -40%\" data-bs-smooth-scroll=\"true\" tabindex=\"0\">\n \u003Ch4 id=\"scrollspyHeading1\">First heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"scrollspyHeading2\">Second heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"scrollspyHeading3\">Third heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"scrollspyHeading4\">Fourth heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"scrollspyHeading5\">Fifth heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cnav id=\"navbar-example2\" class=\"navbar bg-body-tertiary px-3 mb-3\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cul class=\"nav nav-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#scrollspyHeading1\">First\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#scrollspyHeading2\">Second\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">Dropdown\u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading3\">Third\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading4\">Fourth\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\" />\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading5\">Fifth\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>\n\u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example2\" data-bs-root-margin=\"0px 0px -40%\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example bg-body-tertiary p-3 rounded-2\" tabindex=\"0\">\n \u003Ch4 id=\"scrollspyHeading1\">First heading\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"scrollspyHeading2\">Second heading\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"scrollspyHeading3\">Third heading\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"scrollspyHeading4\">Fourth heading\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"scrollspyHeading5\">Fifth heading\u003C/h4>\n \u003Cp>...\u003C/p>\n\u003C/div>\n```\n\n### Nested nav\n\nScrollspy also works with nested `.nav`s. If a nested `.nav` is `.active`, its parents will also be `.active`. Scroll the area next to the navbar and watch the active class change.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cnav id=\"navbar-example3\" class=\"h-100 flex-column align-items-stretch pe-4 border-end\">\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link\" href=\"#item-1\">Item 1\u003C/a>\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-1-1\">Item 1-1\u003C/a>\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-1-2\">Item 1-2\u003C/a>\n \u003C/nav>\n \u003Ca class=\"nav-link\" href=\"#item-2\">Item 2\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#item-3\">Item 3\u003C/a>\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-3-1\">Item 3-1\u003C/a>\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-3-2\">Item 3-2\u003C/a>\n \u003C/nav>\n \u003C/nav>\n \u003C/nav>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example3\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example-2\" tabindex=\"0\">\n \u003Cdiv id=\"item-1\">\n \u003Ch4>Item 1\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-1-1\">\n \u003Ch5>Item 1-1\u003C/h5>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-1-2\">\n \u003Ch5>Item 1-2\u003C/h5>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-2\">\n \u003Ch4>Item 2\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3\">\n \u003Ch4>Item 3\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3-1\">\n \u003Ch5>Item 3-1\u003C/h5>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3-2\">\n \u003Ch5>Item 3-2\u003C/h5>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cnav id=\"navbar-example3\" class=\"h-100 flex-column align-items-stretch pe-4 border-end\">\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link\" href=\"#item-1\">Item 1\u003C/a>\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-1-1\">Item 1-1\u003C/a>\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-1-2\">Item 1-2\u003C/a>\n \u003C/nav>\n \u003Ca class=\"nav-link\" href=\"#item-2\">Item 2\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#item-3\">Item 3\u003C/a>\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-3-1\">Item 3-1\u003C/a>\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-3-2\">Item 3-2\u003C/a>\n \u003C/nav>\n \u003C/nav>\n \u003C/nav>\n \u003C/div>\n\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example3\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example-2\" tabindex=\"0\">\n \u003Cdiv id=\"item-1\">\n \u003Ch4>Item 1\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-1-1\">\n \u003Ch5>Item 1-1\u003C/h5>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-1-2\">\n \u003Ch5>Item 1-2\u003C/h5>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-2\">\n \u003Ch4>Item 2\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3\">\n \u003Ch4>Item 3\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3-1\">\n \u003Ch5>Item 3-1\u003C/h5>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3-2\">\n \u003Ch5>Item 3-2\u003C/h5>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### List group\n\nScrollspy also works with `.list-group`s. Scroll the area next to the list group and watch the active class change.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv id=\"list-example\" class=\"list-group\">\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-1\">Item 1\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-2\">Item 2\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-3\">Item 3\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-4\">Item 4\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#list-example\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example\" tabindex=\"0\">\n \u003Ch4 id=\"list-item-1\">Item 1\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"list-item-2\">Item 2\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"list-item-3\">Item 3\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"list-item-4\">Item 4\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv id=\"list-example\" class=\"list-group\">\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-1\">Item 1\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-2\">Item 2\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-3\">Item 3\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-4\">Item 4\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#list-example\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example\" tabindex=\"0\">\n \u003Ch4 id=\"list-item-1\">Item 1\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"list-item-2\">Item 2\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"list-item-3\">Item 3\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"list-item-4\">Item 4\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Simple anchors\n\nScrollspy is not limited to nav components and list groups, so it will work on any `\u003Ca>` anchor elements in the current document. Scroll the area and watch the `.active` class change.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv id=\"simple-list-example\" class=\"d-flex flex-column gap-2 simple-list-example-scrollspy text-center\">\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-1\">Item 1\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-2\">Item 2\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-3\">Item 3\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-4\">Item 4\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-5\">Item 5\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#simple-list-example\" data-bs-offset=\"0\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example\" tabindex=\"0\">\n \u003Ch4 id=\"simple-list-item-1\">Item 1\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"simple-list-item-2\">Item 2\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"simple-list-item-3\">Item 3\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"simple-list-item-4\">Item 4\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"simple-list-item-5\">Item 5\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv id=\"simple-list-example\" class=\"d-flex flex-column gap-2 simple-list-example-scrollspy text-center\">\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-1\">Item 1\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-2\">Item 2\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-3\">Item 3\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-4\">Item 4\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-5\">Item 5\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#simple-list-example\" data-bs-offset=\"0\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example\" tabindex=\"0\">\n \u003Ch4 id=\"simple-list-item-1\">Item 1\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"simple-list-item-2\">Item 2\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"simple-list-item-3\">Item 3\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"simple-list-item-4\">Item 4\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"simple-list-item-5\">Item 5\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n## Non-visible elements\n\nTarget elements that aren’t visible will be ignored and their corresponding nav items won't receive an `.active` class. Scrollspy instances initialized in a non-visible wrapper will ignore all target elements. Use the `refresh` method to check for observable elements once the wrapper becomes visible.\n\n```js\ndocument.querySelectorAll('#nav-tab>[data-bs-toggle=\"tab\"]').forEach(el => {\n el.addEventListener('shown.bs.tab', () => {\n const target = el.getAttribute('data-bs-target')\n const scrollElem = document.querySelector(`${target} [data-bs-spy=\"scroll\"]`)\n bootstrap.ScrollSpy.getOrCreateInstance(scrollElem).refresh()\n })\n})\n```\n\n## Usage\n\n### Via data attributes\n\nTo easily add scrollspy behavior to your topbar navigation, add `data-bs-spy=\"scroll\"` to the element you want to spy on (most typically this would be the `\u003Cbody>`). Then add the `data-bs-target` attribute with the `id` or class name of the parent element of any Bootstrap `.nav` component.\n\n```html\n\u003Cbody data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example\">\n ...\n \u003Cdiv id=\"navbar-example\">\n \u003Cul class=\"nav nav-tabs\" role=\"tablist\">\n ...\n \u003C/ul>\n \u003C/div>\n ...\n\u003C/body>\n```\n\n### Via JavaScript\n\n```js\nconst scrollSpy = new bootstrap.ScrollSpy(document.body, {\n target: '#navbar-example'\n})\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `rootMargin` | string | `0px 0px -25%` | Intersection Observer [rootMargin](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/rootMargin) valid units, when calculating scroll position. |\n| `smoothScroll` | boolean | `false` | Enables smooth scrolling when a user clicks on a link that refers to ScrollSpy observables. |\n| `target` | string, DOM element | `null` | Specifies element to apply Scrollspy plugin. |\n| `threshold` | array | `[0.1, 0.5, 1]` | `IntersectionObserver` [threshold](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#threshold) valid input, when calculating scroll position. |\n\n\u003C/BsTable>\n\n\u003CCallout type=\"warning\">\n**Deprecated Options**\n\nUp until v5.1.3 we were using `offset` & `method` options, which are now deprecated and replaced by `rootMargin`.\nTo keep backwards compatibility, we will continue to parse a given `offset` to `rootMargin`, but this feature will be removed in **v6**.\n\u003C/Callout>\n\n### Methods\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's scrollspy. (Removes stored data on the DOM element) |\n| `getInstance` | *Static* method to get the scrollspy instance associated with a DOM element. |\n| `getOrCreateInstance` | *Static* method to get the scrollspy instance associated with a DOM element, or to create a new one in case it wasn't initialized. |\n| `refresh` | When adding or removing elements in the DOM, you'll need to call the refresh method. |\n\u003C/BsTable>\n\nHere's an example using the refresh method:\n\n```js\nconst dataSpyList = document.querySelectorAll('[data-bs-spy=\"scroll\"]')\ndataSpyList.forEach(dataSpyEl => {\n bootstrap.ScrollSpy.getInstance(dataSpyEl).refresh()\n})\n```\n\n### Events\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `activate.bs.scrollspy` | This event fires on the scroll element whenever an anchor is activated by the scrollspy. |\n\u003C/BsTable>\n\n```js\nconst firstScrollSpyEl = document.querySelector('[data-bs-spy=\"scroll\"]')\nfirstScrollSpyEl.addEventListener('activate.bs.scrollspy', () => {\n // do something...\n})\n```","src/content/docs/components/scrollspy.mdx","877b13ef84739927","components/scrollspy.mdx","components/spinners",{"id":553,"data":555,"body":558,"filePath":559,"digest":560,"legacyId":561,"deferredRender":139},{"description":556,"title":557,"toc":139},"Indicate the loading state of a component or page with Bootstrap spinners, built entirely with HTML, CSS, and no JavaScript.","Spinners","import { getData } from '@libs/data'\n\n## About\n\nBootstrap \"spinners\" can be used to show the loading state in your projects. They're built only with HTML and CSS, meaning you don't need any JavaScript to create them. You will, however, need some custom JavaScript to toggle their visibility. Their appearance, alignment, and sizing can be easily customized with our amazing utility classes.\n\nFor accessibility purposes, each loader here includes `role=\"status\"` and a nested `\u003Cspan class=\"visually-hidden\">Loading...\u003C/span>`.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Border spinner\n\nUse the border spinners for a lightweight loading indicator.\n\n\u003CExample code={`\u003Cdiv class=\"spinner-border\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\n### Colors\n\nThe border spinner uses `currentColor` for its `border-color`, meaning you can customize the color with [text color utilities][color]. You can use any of our text color utilities on the standard spinner.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"spinner-border text-${themeColor.name}\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`)} />\n\n\u003CCallout>\n**Why not use `border-color` utilities?** Each border spinner specifies a `transparent` border for at least one side, so `.border-{color}` utilities would override that.\n\u003C/Callout>\n\n## Growing spinner\n\nIf you don't fancy a border spinner, switch to the grow spinner. While it doesn't technically spin, it does repeatedly grow!\n\n\u003CExample code={`\u003Cdiv class=\"spinner-grow\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\nOnce again, this spinner is built with `currentColor`, so you can easily change its appearance with [text color utilities][color]. Here it is in blue, along with the supported variants.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"spinner-grow text-${themeColor.name}\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`)} />\n\n## Alignment\n\nSpinners in Bootstrap are built with `rem`s, `currentColor`, and `display: inline-flex`. This means they can easily be resized, recolored, and quickly aligned.\n\n### Margin\n\nUse [margin utilities][margin] like `.m-5` for easy spacing.\n\n\u003CExample code={`\u003Cdiv class=\"spinner-border m-5\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\n### Placement\n\nUse [flexbox utilities][flex], [float utilities][float], or [text alignment][text] utilities to place spinners exactly where you need them in any situation.\n\n#### Flex\n\n\u003CExample code={`\u003Cdiv class=\"d-flex justify-content-center\">\n \u003Cdiv class=\"spinner-border\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"d-flex align-items-center\">\n \u003Cstrong role=\"status\">Loading...\u003C/strong>\n \u003Cdiv class=\"spinner-border ms-auto\" aria-hidden=\"true\">\u003C/div>\n\u003C/div>`} />\n\n#### Floats\n\n\u003CExample code={`\u003Cdiv class=\"clearfix\">\n \u003Cdiv class=\"spinner-border float-end\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n \u003C/div>\n\u003C/div>`} />\n\n#### Text align\n\n\u003CExample code={`\u003Cdiv class=\"text-center\">\n \u003Cdiv class=\"spinner-border\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n \u003C/div>\n\u003C/div>`} />\n\n## Size\n\nAdd `.spinner-border-sm` and `.spinner-grow-sm` to make a smaller spinner that can quickly be used within other components.\n\n\u003CExample code={`\u003Cdiv class=\"spinner-border spinner-border-sm\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>\n\u003Cdiv class=\"spinner-grow spinner-grow-sm\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\nOr, use custom CSS or inline styles to change the dimensions as needed.\n\n\u003CExample code={`\u003Cdiv class=\"spinner-border\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>\n\u003Cdiv class=\"spinner-grow\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\n## Buttons\n\nUse spinners within buttons to indicate an action is currently processing or taking place. You may also swap the text out of the spinner element and utilize button text as needed.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>\n \u003Cspan class=\"spinner-border spinner-border-sm\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\" role=\"status\">Loading...\u003C/span>\n\u003C/button>\n\u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>\n \u003Cspan class=\"spinner-border spinner-border-sm\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan role=\"status\">Loading...\u003C/span>\n\u003C/button>`} />\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>\n \u003Cspan class=\"spinner-grow spinner-grow-sm\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\" role=\"status\">Loading...\u003C/span>\n\u003C/button>\n\u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>\n \u003Cspan class=\"spinner-grow spinner-grow-sm\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan role=\"status\">Loading...\u003C/span>\n\u003C/button>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, spinners now use local CSS variables on `.spinner-border` and `.spinner-grow` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\nBorder spinner variables:\n\n\u003CScssDocs name=\"spinner-border-css-vars\" file=\"scss/_spinners.scss\" />\n\nGrowing spinner variables:\n\n\u003CScssDocs name=\"spinner-grow-css-vars\" file=\"scss/_spinners.scss\" />\n\nFor both spinners, small spinner modifier classes are used to update the values of these CSS variables as needed. For example, the `.spinner-border-sm` class does the following:\n\n\u003CScssDocs name=\"spinner-border-sm-css-vars\" file=\"scss/_spinners.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"spinner-variables\" file=\"scss/_variables.scss\" />\n\n### Keyframes\n\nUsed for creating the CSS animations for our spinners. Included in `scss/_spinners.scss`.\n\n\u003CScssDocs name=\"spinner-border-keyframes\" file=\"scss/_spinners.scss\" />\n\n\u003CScssDocs name=\"spinner-grow-keyframes\" file=\"scss/_spinners.scss\" />\n\n\n[color]: [[docsref:/utilities/colors]]\n[flex]: [[docsref:/utilities/flex]]\n[float]: [[docsref:/utilities/float]]\n[margin]: [[docsref:/utilities/spacing]]\n[text]: [[docsref:/utilities/text]]","src/content/docs/components/spinners.mdx","7df24573207db855","components/spinners.mdx","components/toasts",{"id":562,"data":564,"body":567,"filePath":568,"digest":569,"legacyId":570,"deferredRender":139},{"description":565,"title":566,"toc":139},"Push notifications to your visitors with a toast, a lightweight and easily customizable alert message.","Toasts","Toasts are lightweight notifications designed to mimic the push notifications that have been popularized by mobile and desktop operating systems. They're built with flexbox, so they're easy to align and position.\n\n## Overview\n\nThings to know when using the toast plugin:\n\n- Toasts are opt-in for performance reasons, so **you must initialize them yourself**.\n- Toasts will automatically hide if you do not specify `autohide: false`.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Examples\n\n### Basic\n\nTo encourage extensible and predictable toasts, we recommend a header and body. Toast headers use `display: flex`, allowing easy alignment of content thanks to our margin and flexbox utilities.\n\nToasts are as flexible as you need and have very little required markup. At a minimum, we require a single element to contain your \"toasted\" content and strongly encourage a dismiss button.\n\n\u003CExample code={`\u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n\u003C/div>`} />\n\n\u003CCallout type=\"warning\">\nPreviously, our scripts dynamically added the `.hide` class to completely hide a toast (with `display:none`, rather than just with `opacity:0`). This is now not necessary anymore. However, for backwards compatibility, our script will continue to toggle the class (even though there is no practical need for it) until the next major version.\n\u003C/Callout>\n\n### Live example\n\nClick the button below to show a toast (positioned with our utilities in the lower right corner) that has been hidden by default.\n\n\u003Cdiv class=\"toast-container position-fixed bottom-0 end-0 p-3\">\n \u003Cdiv id=\"liveToast\" class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" id=\"liveToastBtn\">Show live toast\u003C/button>\n\u003C/div>\n\n```html\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" id=\"liveToastBtn\">Show live toast\u003C/button>\n\n\u003Cdiv class=\"toast-container position-fixed bottom-0 end-0 p-3\">\n \u003Cdiv id=\"liveToast\" class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003Cimg src=\"...\" class=\"rounded me-2\" alt=\"...\">\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\nWe use the following JavaScript to trigger our live toast demo:\n\n\u003CJsDocs name=\"live-toast\" file=\"site/src/assets/partials/snippets.js\" />\n\n### Translucent\n\nToasts are slightly translucent to blend in with what's below them.\n\n\u003CExample class=\"bg-dark\" code={`\u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n\u003C/div>`} />\n\n### Stacking\n\nYou can stack toasts by wrapping them in a toast container, which will vertically add some spacing.\n\n\u003CExample code={`\u003Cdiv class=\"toast-container position-static\">\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">just now\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n See? Just like this.\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">2 seconds ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Heads up, toasts will stack automatically\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Custom content\n\nCustomize your toasts by removing sub-components, tweaking them with [utilities]([[docsref:/utilities/api]]), or by adding your own markup. Here we've created a simpler toast by removing the default `.toast-header`, adding a custom hide icon from [Bootstrap Icons]([[config:icons]]), and using some [flexbox utilities]([[docsref:/utilities/flex]]) to adjust the layout.\n\n\u003CExample code={`\u003Cdiv class=\"toast align-items-center\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003Cbutton type=\"button\" class=\"btn-close me-2 m-auto\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n\u003C/div>`} />\n\nAlternatively, you can also add additional controls and components to toasts.\n\n\u003CExample code={`\u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003Cdiv class=\"mt-2 pt-2 border-top\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary btn-sm\">Take action\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary btn-sm\" data-bs-dismiss=\"toast\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Color schemes\n\nBuilding on the above example, you can create different toast color schemes with our [color]([[docsref:/utilities/colors]]) and [background]([[docsref:/utilities/background]]) utilities. Here we've added `.text-bg-primary` to the `.toast`, and then added `.btn-close-white` to our close button. For a crisp edge, we remove the default border with `.border-0`.\n\n\u003CExample code={`\u003Cdiv class=\"toast align-items-center text-bg-primary border-0\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003Cbutton type=\"button\" class=\"btn-close btn-close-white me-2 m-auto\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n\u003C/div>`} />\n\n## Placement\n\nPlace toasts with custom CSS as you need them. The top right is often used for notifications, as is the top middle. If you're only ever going to show one toast at a time, put the positioning styles right on the `.toast`.\n\n\u003CExample addStackblitzJs code={`\u003Cform>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"selectToastPlacement\">Toast placement\u003C/label>\n \u003Cselect class=\"form-select mt-2\" id=\"selectToastPlacement\">\n \u003Coption value=\"\" selected>Select a position...\u003C/option>\n \u003Coption value=\"top-0 start-0\">Top left\u003C/option>\n \u003Coption value=\"top-0 start-50 translate-middle-x\">Top center\u003C/option>\n \u003Coption value=\"top-0 end-0\">Top right\u003C/option>\n \u003Coption value=\"top-50 start-0 translate-middle-y\">Middle left\u003C/option>\n \u003Coption value=\"top-50 start-50 translate-middle\">Middle center\u003C/option>\n \u003Coption value=\"top-50 end-0 translate-middle-y\">Middle right\u003C/option>\n \u003Coption value=\"bottom-0 start-0\">Bottom left\u003C/option>\n \u003Coption value=\"bottom-0 start-50 translate-middle-x\">Bottom center\u003C/option>\n \u003Coption value=\"bottom-0 end-0\">Bottom right\u003C/option>\n \u003C/select>\n \u003C/div>\n\u003C/form>\n\u003Cdiv aria-live=\"polite\" aria-atomic=\"true\" class=\"bg-body-secondary position-relative bd-example-toasts rounded-3\">\n \u003Cdiv class=\"toast-container p-3\" id=\"toastPlacement\">\n \u003Cdiv class=\"toast\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nFor systems that generate more notifications, consider using a wrapping element so they can easily stack.\n\n\u003CExample class=\"bd-example-toasts p-0\" code={`\u003Cdiv aria-live=\"polite\" aria-atomic=\"true\" class=\"position-relative\">\n \u003C!-- Position it: -->\n \u003C!-- - \\`.toast-container\\` for spacing between toasts -->\n \u003C!-- - \\`top-0\\` & \\`end-0\\` to position the toasts in the upper right corner -->\n \u003C!-- - \\`.p-3\\` to prevent the toasts from sticking to the edge of the container -->\n \u003Cdiv class=\"toast-container top-0 end-0 p-3\">\n\n \u003C!-- Then put toasts within -->\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">just now\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n See? Just like this.\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">2 seconds ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Heads up, toasts will stack automatically\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nYou can also get fancy with flexbox utilities to align toasts horizontally and/or vertically.\n\n\u003CExample class=\"bd-example-toasts d-flex\" code={`\u003C!-- Flexbox container for aligning the toasts -->\n\u003Cdiv aria-live=\"polite\" aria-atomic=\"true\" class=\"d-flex justify-content-center align-items-center w-100\">\n\n \u003C!-- Then put toasts within -->\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Accessibility\n\nToasts are intended to be small interruptions to your visitors or users, so to help those with screen readers and similar assistive technologies, you should wrap your toasts in an [`aria-live` region](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions). Changes to live regions (such as injecting/updating a toast component) are automatically announced by screen readers without needing to move the user's focus or otherwise interrupt the user. Additionally, include `aria-atomic=\"true\"` to ensure that the entire toast is always announced as a single (atomic) unit, rather than just announcing what was changed (which could lead to problems if you only update part of the toast's content, or if displaying the same toast content at a later point in time). If the information needed is important for the process, e.g. for a list of errors in a form, then use the [alert component]([[docsref:/components/alerts]]) instead of toast.\n\nNote that the live region needs to be present in the markup *before* the toast is generated or updated. If you dynamically generate both at the same time and inject them into the page, they will generally not be announced by assistive technologies.\n\nYou also need to adapt the `role` and `aria-live` level depending on the content. If it's an important message like an error, use `role=\"alert\" aria-live=\"assertive\"`, otherwise use `role=\"status\" aria-live=\"polite\"` attributes.\n\nAs the content you're displaying changes, be sure to update the [`delay` timeout](#options) so that users have enough time to read the toast.\n\n```html\n\u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"polite\" aria-atomic=\"true\" data-bs-delay=\"10000\">\n \u003Cdiv role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">...\u003C/div>\n\u003C/div>\n```\n\nWhen using `autohide: false`, you must add a close button to allow users to dismiss the toast.\n\n\u003CExample code={`\u003Cdiv role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\" data-bs-autohide=\"false\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n\u003C/div>`} />\n\nWhile technically it's possible to add focusable/actionable controls (such as additional buttons or links) in your toast, you should avoid doing this for autohiding toasts. Even if you give the toast a long [`delay` timeout](#options), keyboard and assistive technology users may find it difficult to reach the toast in time to take action (since toasts don't receive focus when they are displayed). If you absolutely must have further controls, we recommend using a toast with `autohide: false`.\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, toasts now use local CSS variables on `.toast` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"toast-css-vars\" file=\"scss/_toasts.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"toast-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\nInitialize toasts via JavaScript:\n\n```js\nconst toastElList = document.querySelectorAll('.toast')\nconst toastList = [...toastElList].map(toastEl => new bootstrap.Toast(toastEl, option))\n```\n\n### Triggers\n\n\u003CJsDismiss name=\"toast\" />\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `animation` | boolean | `true` | Apply a CSS fade transition to the toast. |\n| `autohide` | boolean | `true` | Automatically hide the toast after the delay. |\n| `delay` | number | `5000` | Delay in milliseconds before hiding the toast. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Hides an element's toast. Your toast will remain on the DOM but won't show anymore. |\n| `getInstance` | *Static* method which allows you to get the toast instance associated with a DOM element. \u003Cbr/> For example: `const myToastEl = document.getElementById('myToastEl')` `const myToast = bootstrap.Toast.getInstance(myToastEl)` Returns a Bootstrap toast instance. |\n| `getOrCreateInstance` | *Static* method which allows you to get the toast instance associated with a DOM element, or create a new one, in case it wasn't initialized. \u003Cbr/>`const myToastEl = document.getElementById('myToastEl')` `const myToast = bootstrap.Toast.getOrCreateInstance(myToastEl)` Returns a Bootstrap toast instance. |\n| `hide` | Hides an element's toast. **Returns to the caller before the toast has actually been hidden** (i.e. before the `hidden.bs.toast` event occurs). You have to manually call this method if you made `autohide` to `false`. |\n| `isShown` | Returns a boolean according to toast's visibility state. |\n| `show` | Reveals an element's toast. **Returns to the caller before the toast has actually been shown** (i.e. before the `shown.bs.toast` event occurs). You have to manually call this method, instead your toast won't show. |\n\u003C/BsTable>\n\n### Events\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `hide.bs.toast` | This event is fired immediately when the `hide` instance method has been called. |\n| `hidden.bs.toast` | This event is fired when the toast has finished being hidden from the user. |\n| `show.bs.toast` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.toast` | This event is fired when the toast has been made visible to the user. |\n\u003C/BsTable>\n\n```js\nconst myToastEl = document.getElementById('myToast')\nmyToastEl.addEventListener('hidden.bs.toast', () => {\n // do something...\n})\n```","src/content/docs/components/toasts.mdx","9479ecac22525e1c","components/toasts.mdx","components/tooltips",{"id":571,"data":573,"body":576,"filePath":577,"digest":578,"legacyId":579,"deferredRender":139},{"description":574,"title":575,"toc":139},"Documentation and examples for adding custom Bootstrap tooltips with CSS and JavaScript using CSS3 for animations and data-bs-attributes for local title storage.","Tooltips","## Overview\n\nThings to know when using the tooltip plugin:\n\n- Tooltips rely on the third party library [Popper](https://popper.js.org/docs/v2/) for positioning. You must include [popper.min.js]([[config:cdn.popper]]) before `bootstrap.js`, or use one `bootstrap.bundle.min.js` which contains Popper.\n- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**.\n- Tooltips with zero-length titles are never displayed.\n- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc).\n- Triggering tooltips on hidden elements will not work.\n- Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element.\n- When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your `\u003Ca>`s to avoid this behavior.\n- Tooltips must be hidden before their corresponding elements have been removed from the DOM.\n- Tooltips can be triggered thanks to an element inside a shadow DOM.\n\nGot all that? Great, let's see how they work with some examples.\n\n\u003CCallout name=\"info-sanitizer\" />\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Examples\n\n### Enable tooltips\n\nAs mentioned above, you must initialize tooltips before they can be used. One way to initialize all tooltips on a page would be to select them by their `data-bs-toggle` attribute, like so:\n\n```js\nconst tooltipTriggerList = document.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\nconst tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))\n```\n\n### Tooltips on links\n\nHover over the links below to see tooltips:\n\n\u003CExample addStackblitzJs class=\"tooltip-demo\" code={`\u003Cp class=\"muted\">Placeholder text to demonstrate some \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Default tooltip\">inline links\u003C/a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Another tooltip\">real text\u003C/a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Another one here too\">these tooltips on links\u003C/a> can work in practice, once you use them on \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"The last tip!\">your own\u003C/a> site or project.\u003C/p>`} />\n\n\u003CCallout name=\"warning-data-bs-title-vs-title\" type=\"warning\" />\n\n### Custom tooltips\n\n\u003CAddedIn version=\"5.2.0\" />\n\nYou can customize the appearance of tooltips using [CSS variables](#variables). We set a custom class with `data-bs-custom-class=\"custom-tooltip\"` to scope our custom appearance and use it to override a local CSS variable.\n\n\u003CScssDocs name=\"custom-tooltip\" file=\"site/src/scss/_component-examples.scss\" />\n\n\u003CExample addStackblitzJs class=\"tooltip-demo\" code={`\u003Cbutton type=\"button\" class=\"btn btn-secondary\"\n data-bs-toggle=\"tooltip\" data-bs-placement=\"top\"\n data-bs-custom-class=\"custom-tooltip\"\n data-bs-title=\"This top tooltip is themed via CSS variables.\">\n Custom tooltip\n\u003C/button>`} />\n\n### Directions\n\nHover over the buttons below to see the four tooltips directions: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL.\n\n\u003Cdiv class=\"bd-example tooltip-demo\">\n \u003Cdiv class=\"bd-example-tooltips\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" data-bs-title=\"Tooltip on top\">Tooltip on top\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"right\" data-bs-title=\"Tooltip on right\">Tooltip on right\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"bottom\" data-bs-title=\"Tooltip on bottom\">Tooltip on bottom\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"left\" data-bs-title=\"Tooltip on left\">Tooltip on left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-html=\"true\" data-bs-title=\"\u003Cem>Tooltip\u003C/em> \u003Cu>with\u003C/u> \u003Cb>HTML\u003C/b>\">Tooltip with HTML\u003C/button>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" data-bs-title=\"Tooltip on top\">\n Tooltip on top\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"right\" data-bs-title=\"Tooltip on right\">\n Tooltip on right\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"bottom\" data-bs-title=\"Tooltip on bottom\">\n Tooltip on bottom\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"left\" data-bs-title=\"Tooltip on left\">\n Tooltip on left\n\u003C/button>\n```\n\nAnd with custom HTML added:\n\n```html\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-html=\"true\" data-bs-title=\"\u003Cem>Tooltip\u003C/em> \u003Cu>with\u003C/u> \u003Cb>HTML\u003C/b>\">\n Tooltip with HTML\n\u003C/button>\n```\n\nWith an SVG:\n\n\u003Cdiv class=\"bd-example tooltip-demo\">\n \u003Ca href=\"#\" class=\"d-inline-block\" data-bs-toggle=\"tooltip\" data-bs-title=\"Default tooltip\" aria-label=\"Hover or focus to see default tooltip\">\n \u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"50\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">\n \u003Crect width=\"100%\" height=\"100%\" fill=\"#563d7c\"/>\n \u003Ccircle cx=\"50\" cy=\"50\" r=\"30\" fill=\"#007bff\"/>\n \u003C/svg>\n \u003C/a>\n\u003C/div>\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap’s evolving CSS variables approach, tooltips now use local CSS variables on `.tooltip` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"tooltip-css-vars\" file=\"scss/_tooltip.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"tooltip-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\nThe tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element. Trigger the tooltip via JavaScript:\n\n```js\nconst exampleEl = document.getElementById('example')\nconst tooltip = new bootstrap.Tooltip(exampleEl, options)\n```\n\n\u003CCallout type=\"warning\">\nTooltips automatically attempt to change positions when a parent container has `overflow: auto` or `overflow: scroll`, but still keeps the original placement's positioning. Set the [`boundary` option](https://popper.js.org/docs/v2/modifiers/flip/#boundary) (for the flip modifier using the `popperConfig` option) to any HTMLElement to override the default value, `'clippingParents'`, such as `document.body`:\n\n```js\nconst tooltip = new bootstrap.Tooltip('#example', {\n boundary: document.body // or document.querySelector('#boundary')\n})\n```\n\u003C/Callout>\n\n### Markup\n\nThe required markup for a tooltip is only a `data` attribute and `title` on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to `top` by the plugin).\n\n\u003CCallout type=\"warning\">\n**Keep tooltips accessible to keyboard and assistive technology users** by only adding them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). While other HTML elements can be made focusable by adding `tabindex=\"0\"`, this can create annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce tooltips in this situation. Additionally, do not rely solely on `hover` as the trigger for your tooltips as this will make them impossible to trigger for keyboard users.\n\u003C/Callout>\n\n```html\n\u003C!-- HTML to write -->\n\u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Some tooltip text!\">Hover over me\u003C/a>\n\n\u003C!-- Generated markup by the plugin -->\n\u003Cdiv class=\"tooltip bs-tooltip-auto\" role=\"tooltip\">\n \u003Cdiv class=\"tooltip-arrow\">\u003C/div>\n \u003Cdiv class=\"tooltip-inner\">\n Some tooltip text!\n \u003C/div>\n\u003C/div>\n```\n\n### Disabled elements\n\nElements with the `disabled` attribute aren't interactive, meaning users cannot focus, hover, or click them to trigger a tooltip (or popover). As a workaround, you'll want to trigger the tooltip from a wrapper `\u003Cdiv>` or `\u003Cspan>`, ideally made keyboard-focusable using `tabindex=\"0\"`.\n\n\u003CExample class=\"tooltip-demo\" addStackblitzJs code={`\u003Cspan class=\"d-inline-block\" tabindex=\"0\" data-bs-toggle=\"tooltip\" data-bs-title=\"Disabled tooltip\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>Disabled button\u003C/button>\n\u003C/span>`} />\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CCallout type=\"warning\">\nNote that for security reasons the `sanitize`, `sanitizeFn`, and `allowList` options cannot be supplied using data attributes.\n\u003C/Callout>\n\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `allowList` | object | [Default value]([[docsref:/getting-started/javascript#sanitizer]]) | Object which contains allowed attributes and tags. |\n| `animation` | boolean | `true` | Apply a CSS fade transition to the tooltip. |\n| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the tooltip (applies only to Popper's preventOverflow modifier). By default, it's `'clippingParents'` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). |\n| `container` | string, element, false | `false` | Appends the tooltip to a specific element. Example: `container: 'body'`. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize. |\n| `customClass` | string, function | `''` | Add classes to the tooltip when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: `'class-1 class-2'`. You can also pass a function that should return a single string containing additional class names. |\n| `delay` | number, object | `0` | Delay showing and hiding the tooltip (ms)—doesn't apply to manual trigger type. If a number is supplied, delay is applied to both hide/show. Object structure is: `delay: { \"show\": 500, \"hide\": 100 }`. |\n| `fallbackPlacements` | array | `['top', 'right', 'bottom', 'left']` | Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to Popper's [behavior docs](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements). |\n| `html` | boolean | `false` | Allow HTML in the tooltip. If true, HTML tags in the tooltip's `title` will be rendered in the tooltip. If false, `innerText` property will be used to insert content into the DOM. Use text if you're worried about XSS attacks. |\n| `offset` | array, string, function | `[0, 6]` | Offset of the tooltip relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset=\"10,20\"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). |\n| `placement` | string, function | `'top'` | How to position the tooltip: auto, top, bottom, left, right. When `auto` is specified, it will dynamically reorient the tooltip. When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The `this` context is set to the tooltip instance. |\n| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper. |\n| `sanitize` | boolean | `true` | Enable or disable the sanitization. If activated `'template'`, `'content'` and `'title'` options will be sanitized. |\n| `sanitizeFn` | null, function | `null` | Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization. |\n| `selector` | string, false | `false` | If a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to also apply tooltips to dynamically added DOM elements (`jQuery.on` support). See [this issue]([[config:repo]]/issues/4215) and [an informative example](https://codepen.io/Johann-S/pen/djJYPb). **Note**: `title` attribute must not be used as a selector. |\n| `template` | string | `'\u003Cdiv class=\"tooltip\" role=\"tooltip\">\u003Cdiv class=\"tooltip-arrow\">\u003C/div>\u003Cdiv class=\"tooltip-inner\">\u003C/div>\u003C/div>'` | Base HTML to use when creating the tooltip. The tooltip's `title` will be injected into the `.tooltip-inner`. `.tooltip-arrow` will become the tooltip's arrow. The outermost wrapper element should have the `.tooltip` class and `role=\"tooltip\"`. |\n| `title` | string, element, function | `''` | The tooltip title. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. |\n| `trigger` | string | `'hover focus'` | How tooltip is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. `'manual'` indicates that the tooltip will be triggered programmatically via the `.tooltip('show')`, `.tooltip('hide')` and `.tooltip('toggle')` methods; this value cannot be combined with any other trigger. `'hover'` on its own will result in tooltips that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present. |\n\u003C/BsTable>\n\n\u003CCallout>\n#### Data attributes for individual tooltips\n\nOptions for individual tooltips can alternatively be specified through the use of data attributes, as explained above.\n\u003C/Callout>\n\n#### Using function with `popperConfig`\n\n```js\nconst tooltip = new bootstrap.Tooltip(element, {\n popperConfig(defaultBsPopperConfig) {\n // const newPopperConfig = {...}\n // use defaultBsPopperConfig if needed...\n // return newPopperConfig\n }\n})\n```\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `disable` | Removes the ability for an element's tooltip to be shown. The tooltip will only be able to be shown if it is re-enabled. |\n| `dispose` | Hides and destroys an element's tooltip (Removes stored data on the DOM element). Tooltips that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. |\n| `enable` | Gives an element's tooltip the ability to be shown. **Tooltips are enabled by default.** |\n| `getInstance` | *Static* method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `getOrCreateInstance` | *Static* method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `hide` | Hides an element's tooltip. **Returns to the caller before the tooltip has actually been hidden** (i.e. before the `hidden.bs.tooltip` event occurs). This is considered a \"manual\" triggering of the tooltip. |\n| `setContent` | Gives a way to change the tooltip's content after its initialization. |\n| `show` | Reveals an element's tooltip. **Returns to the caller before the tooltip has actually been shown** (i.e. before the `shown.bs.tooltip` event occurs). This is considered a \"manual\" triggering of the tooltip. Tooltips with zero-length titles are never displayed. |\n| `toggle` | Toggles an element's tooltip. **Returns to the caller before the tooltip has actually been shown or hidden** (i.e. before the `shown.bs.tooltip` or `hidden.bs.tooltip` event occurs). This is considered a \"manual\" triggering of the tooltip. |\n| `toggleEnabled` | Toggles the ability for an element's tooltip to be shown or hidden. |\n| `update` | Updates the position of an element's tooltip. |\n\u003C/BsTable>\n\n```js\nconst tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance\n\n// setContent example\ntooltip.setContent({ '.tooltip-inner': 'another title' })\n\n```\n\n\u003CCallout>\nThe `setContent` method accepts an `object` argument, where each property-key is a valid `string` selector within the tooltip template, and each related property-value can be `string` | `element` | `function` | `null`\n\u003C/Callout>\n\n### Events\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `hide.bs.tooltip` | This event is fired immediately when the `hide` instance method has been called. |\n| `hidden.bs.tooltip` | This event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete). |\n| `inserted.bs.tooltip` | This event is fired after the `show.bs.tooltip` event when the tooltip template has been added to the DOM. |\n| `show.bs.tooltip` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.tooltip` | This event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete). |\n\u003C/BsTable>\n\n```js\nconst myTooltipEl = document.getElementById('myTooltip')\nconst tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)\n\nmyTooltipEl.addEventListener('hidden.bs.tooltip', () => {\n // do something...\n})\n\ntooltip.hide()\n```","src/content/docs/components/tooltips.mdx","6f55d82f99b7d9e4","components/tooltips.mdx","forms/checks-radios",{"id":580,"data":582,"body":586,"filePath":587,"digest":588,"legacyId":589,"deferredRender":139},{"aliases":583,"description":584,"title":585,"toc":139},"/docs/[[config:docs_version]]/forms/checks/","Create consistent cross-browser and cross-device checkboxes and radios with our completely rewritten checks component.","Checks and radios","## Approach\n\nBrowser default checkboxes and radios are replaced with the help of `.form-check`, a series of classes for both input types that improves the layout and behavior of their HTML elements, that provide greater customization and cross browser consistency. Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.\n\nStructurally, our `\u003Cinput>`s and `\u003Clabel>`s are sibling elements as opposed to an `\u003Cinput>` within a `\u003Clabel>`. This is slightly more verbose as you must specify `id` and `for` attributes to relate the `\u003Cinput>` and `\u003Clabel>`. We use the sibling selector (`~`) for all our `\u003Cinput>` states, like `:checked` or `:disabled`. When combined with the `.form-check-label` class, we can easily style the text for each item based on the `\u003Cinput>`'s state.\n\nOur checks use custom Bootstrap icons to indicate checked or indeterminate states.\n\n## Checks\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkDefault\">\n \u003Clabel class=\"form-check-label\" for=\"checkDefault\">\n Default checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkChecked\" checked>\n \u003Clabel class=\"form-check-label\" for=\"checkChecked\">\n Checked checkbox\n \u003C/label>\n\u003C/div>`} />\n\n### Indeterminate\n\nCheckboxes can utilize the `:indeterminate` pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it).\n\n\u003CExample addStackblitzJs class=\"bd-example-indeterminate\" code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkIndeterminate\">\n \u003Clabel class=\"form-check-label\" for=\"checkIndeterminate\">\n Indeterminate checkbox\n \u003C/label>\n\u003C/div>`} />\n\n### Disabled\n\nAdd the `disabled` attribute and the associated `\u003Clabel>`s are automatically styled to match with a lighter color to help indicate the input's state.\n\n\u003CExample addStackblitzJs class=\"bd-example-indeterminate\" code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkIndeterminateDisabled\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"checkIndeterminateDisabled\">\n Disabled indeterminate checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkDisabled\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"checkDisabled\">\n Disabled checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkCheckedDisabled\" checked disabled>\n \u003Clabel class=\"form-check-label\" for=\"checkCheckedDisabled\">\n Disabled checked checkbox\n \u003C/label>\n\u003C/div>`} />\n\n## Radios\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioDefault\" id=\"radioDefault1\">\n \u003Clabel class=\"form-check-label\" for=\"radioDefault1\">\n Default radio\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioDefault\" id=\"radioDefault2\" checked>\n \u003Clabel class=\"form-check-label\" for=\"radioDefault2\">\n Default checked radio\n \u003C/label>\n\u003C/div>`} />\n\n### Disabled\n\nAdd the `disabled` attribute and the associated `\u003Clabel>`s are automatically styled to match with a lighter color to help indicate the input's state.\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioDisabled\" id=\"radioDisabled\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"radioDisabled\">\n Disabled radio\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioDisabled\" id=\"radioCheckedDisabled\" checked disabled>\n \u003Clabel class=\"form-check-label\" for=\"radioCheckedDisabled\">\n Disabled checked radio\n \u003C/label>\n\u003C/div>`} />\n\n## Switches\n\nA switch has the markup of a custom checkbox but uses the `.form-switch` class to render a toggle switch. Consider using `role=\"switch\"` to more accurately convey the nature of the control to assistive technologies that support this role. In older assistive technologies, it will simply be announced as a regular checkbox as a fallback. Switches also support the `disabled` attribute.\n\n\u003CExample code={`\u003Cdiv class=\"form-check form-switch\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"switchCheckDefault\">\n \u003Clabel class=\"form-check-label\" for=\"switchCheckDefault\">Default switch checkbox input\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-switch\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"switchCheckChecked\" checked>\n \u003Clabel class=\"form-check-label\" for=\"switchCheckChecked\">Checked switch checkbox input\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-switch\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"switchCheckDisabled\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"switchCheckDisabled\">Disabled switch checkbox input\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-switch\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"switchCheckCheckedDisabled\" checked disabled>\n \u003Clabel class=\"form-check-label\" for=\"switchCheckCheckedDisabled\">Disabled checked switch checkbox input\u003C/label>\n\u003C/div>`} />\n\n## Default (stacked)\n\nBy default, any number of checkboxes and radios that are immediate sibling will be vertically stacked and appropriately spaced with `.form-check`.\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck1\">\n \u003Clabel class=\"form-check-label\" for=\"defaultCheck1\">\n Default checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck2\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"defaultCheck2\">\n Disabled checkbox\n \u003C/label>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"exampleRadios1\" value=\"option1\" checked>\n \u003Clabel class=\"form-check-label\" for=\"exampleRadios1\">\n Default radio\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"exampleRadios2\" value=\"option2\">\n \u003Clabel class=\"form-check-label\" for=\"exampleRadios2\">\n Second default radio\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"exampleRadios3\" value=\"option3\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"exampleRadios3\">\n Disabled radio\n \u003C/label>\n\u003C/div>`} />\n\n## Inline\n\nGroup checkboxes or radios on the same horizontal row by adding `.form-check-inline` to any `.form-check`.\n\n\u003CExample code={`\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"inlineCheckbox1\" value=\"option1\">\n \u003Clabel class=\"form-check-label\" for=\"inlineCheckbox1\">1\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"inlineCheckbox2\" value=\"option2\">\n \u003Clabel class=\"form-check-label\" for=\"inlineCheckbox2\">2\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"inlineCheckbox3\" value=\"option3\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"inlineCheckbox3\">3 (disabled)\u003C/label>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"inlineRadioOptions\" id=\"inlineRadio1\" value=\"option1\">\n \u003Clabel class=\"form-check-label\" for=\"inlineRadio1\">1\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"inlineRadioOptions\" id=\"inlineRadio2\" value=\"option2\">\n \u003Clabel class=\"form-check-label\" for=\"inlineRadio2\">2\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"inlineRadioOptions\" id=\"inlineRadio3\" value=\"option3\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"inlineRadio3\">3 (disabled)\u003C/label>\n\u003C/div>`} />\n\n## Reverse\n\nPut your checkboxes, radios, and switches on the opposite side with the `.form-check-reverse` modifier class.\n\n\u003CExample code={`\u003Cdiv class=\"form-check form-check-reverse\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"reverseCheck1\">\n \u003Clabel class=\"form-check-label\" for=\"reverseCheck1\">\n Reverse checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-reverse\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"reverseCheck2\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"reverseCheck2\">\n Disabled reverse checkbox\n \u003C/label>\n\u003C/div>\n\n\u003Cdiv class=\"form-check form-switch form-check-reverse\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"switchCheckReverse\">\n \u003Clabel class=\"form-check-label\" for=\"switchCheckReverse\">Reverse switch checkbox input\u003C/label>\n\u003C/div>`} />\n\n## Without labels\n\nOmit the wrapping `.form-check` for checkboxes and radios that have no label text. Remember to still provide some form of accessible name for assistive technologies (for instance, using `aria-label`). See the [forms overview accessibility]([[docsref:/forms/overview#accessibility]]) section for details.\n\n\u003CExample code={`\u003Cdiv>\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"checkboxNoLabel\" value=\"\" aria-label=\"...\">\n\u003C/div>\n\n\u003Cdiv>\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioNoLabel\" id=\"radioNoLabel1\" value=\"\" aria-label=\"...\">\n\u003C/div>`} />\n\n## Toggle buttons\n\nCreate button-like checkboxes and radio buttons by using `.btn` styles rather than `.form-check-label` on the `\u003Clabel>` elements. These toggle buttons can further be grouped in a [button group]([[docsref:/components/button-group]]) if needed.\n\n### Checkbox toggle buttons\n\n\u003CExample code={`\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-primary\" for=\"btn-check\">Single toggle\u003C/label>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-2\" checked autocomplete=\"off\">\n\u003Clabel class=\"btn btn-primary\" for=\"btn-check-2\">Checked\u003C/label>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-3\" autocomplete=\"off\" disabled>\n\u003Clabel class=\"btn btn-primary\" for=\"btn-check-3\">Disabled\u003C/label>`} />\n\n\u003CExample code={`\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-4\" autocomplete=\"off\">\n\u003Clabel class=\"btn\" for=\"btn-check-4\">Single toggle\u003C/label>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-5\" checked autocomplete=\"off\">\n\u003Clabel class=\"btn\" for=\"btn-check-5\">Checked\u003C/label>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-6\" autocomplete=\"off\" disabled>\n\u003Clabel class=\"btn\" for=\"btn-check-6\">Disabled\u003C/label>`} />\n\n\u003CCallout>\nVisually, these checkbox toggle buttons are identical to the [button plugin toggle buttons]([[docsref:/components/buttons#button-plugin]]). However, they are conveyed differently by assistive technologies: the checkbox toggles will be announced by screen readers as \"checked\"/\"not checked\" (since, despite their appearance, they are fundamentally still checkboxes), whereas the button plugin toggle buttons will be announced as \"button\"/\"button pressed\". The choice between these two approaches will depend on the type of toggle you are creating, and whether or not the toggle will make sense to users when announced as a checkbox or as an actual button.\n\u003C/Callout>\n\n### Radio toggle buttons\n\n\u003CExample code={`\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options\" id=\"option1\" autocomplete=\"off\" checked>\n\u003Clabel class=\"btn btn-secondary\" for=\"option1\">Checked\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options\" id=\"option2\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-secondary\" for=\"option2\">Radio\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options\" id=\"option3\" autocomplete=\"off\" disabled>\n\u003Clabel class=\"btn btn-secondary\" for=\"option3\">Disabled\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options\" id=\"option4\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-secondary\" for=\"option4\">Radio\u003C/label>`} />\n\n\u003CExample code={`\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-base\" id=\"option5\" autocomplete=\"off\" checked>\n\u003Clabel class=\"btn\" for=\"option5\">Checked\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-base\" id=\"option6\" autocomplete=\"off\">\n\u003Clabel class=\"btn\" for=\"option6\">Radio\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-base\" id=\"option7\" autocomplete=\"off\" disabled>\n\u003Clabel class=\"btn\" for=\"option7\">Disabled\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-base\" id=\"option8\" autocomplete=\"off\">\n\u003Clabel class=\"btn\" for=\"option8\">Radio\u003C/label>`} />\n\n### Outlined styles\n\nDifferent variants of `.btn`, such as the various outlined styles, are supported.\n\n\u003CExample code={`\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-outline-primary\" for=\"btn-check-outlined\">Single toggle\u003C/label>\u003Cbr>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-2-outlined\" checked autocomplete=\"off\">\n\u003Clabel class=\"btn btn-outline-secondary\" for=\"btn-check-2-outlined\">Checked\u003C/label>\u003Cbr>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-outlined\" id=\"success-outlined\" autocomplete=\"off\" checked>\n\u003Clabel class=\"btn btn-outline-success\" for=\"success-outlined\">Checked success radio\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-outlined\" id=\"danger-outlined\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-outline-danger\" for=\"danger-outlined\">Danger radio\u003C/label>`} />\n\n## CSS\n\n### Sass variables\n\nVariables for checks:\n\n\u003CScssDocs name=\"form-check-variables\" file=\"scss/_variables.scss\" />\n\nVariables for switches:\n\n\u003CScssDocs name=\"form-switch-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/checks-radios.mdx","e01cbaf932bc489c","forms/checks-radios.mdx","forms/floating-labels",{"id":590,"data":592,"body":595,"filePath":596,"digest":597,"legacyId":598,"deferredRender":139},{"description":593,"title":594,"toc":139},"Create beautifully simple form labels that float over your input fields.","Floating labels","## Example\n\nWrap a pair of `\u003Cinput class=\"form-control\">` and `\u003Clabel>` elements in `.form-floating` to enable floating labels with Bootstrap's textual form fields. A `placeholder` is required on each `\u003Cinput>` as our method of CSS-only floating labels uses the `:placeholder-shown` pseudo-element. Also note that the `\u003Cinput>` must come first so we can utilize a sibling selector (e.g., `~`).\n\n\u003CExample code={`\u003Cdiv class=\"form-floating mb-3\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\">\n \u003Clabel for=\"floatingInput\">Email address\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating\">\n \u003Cinput type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\">\n \u003Clabel for=\"floatingPassword\">Password\u003C/label>\n\u003C/div>`} />\n\nWhen there's a `value` already defined, `\u003Clabel>`s will automatically adjust to their floated position.\n\n\u003CExample code={`\u003Cform class=\"form-floating\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"floatingInputValue\" placeholder=\"name@example.com\" value=\"test@example.com\">\n \u003Clabel for=\"floatingInputValue\">Input with value\u003C/label>\n\u003C/form>`} />\n\nForm validation styles also work as expected.\n\n\u003CExample code={`\u003Cform class=\"form-floating\">\n \u003Cinput type=\"email\" class=\"form-control is-invalid\" id=\"floatingInputInvalid\" placeholder=\"name@example.com\" value=\"test@example.com\">\n \u003Clabel for=\"floatingInputInvalid\">Invalid input\u003C/label>\n\u003C/form>`} />\n\n## Textareas\n\nBy default, `\u003Ctextarea>`s with `.form-control` will be the same height as `\u003Cinput>`s.\n\n\u003CExample code={`\u003Cdiv class=\"form-floating\">\n \u003Ctextarea class=\"form-control\" placeholder=\"Leave a comment here\" id=\"floatingTextarea\">\u003C/textarea>\n \u003Clabel for=\"floatingTextarea\">Comments\u003C/label>\n\u003C/div>`} />\n\nTo set a custom height on your `\u003Ctextarea>`, do not use the `rows` attribute. Instead, set an explicit `height` (either inline or via custom CSS).\n\n\u003CExample code={`\u003Cdiv class=\"form-floating\">\n \u003Ctextarea class=\"form-control\" placeholder=\"Leave a comment here\" id=\"floatingTextarea2\" style=\"height: 100px\">\u003C/textarea>\n \u003Clabel for=\"floatingTextarea2\">Comments\u003C/label>\n\u003C/div>`} />\n\n## Selects\n\nOther than `.form-control`, floating labels are only available on `.form-select`s. They work in the same way, but unlike `\u003Cinput>`s, they'll always show the `\u003Clabel>` in its floated state. **Selects with `size` and `multiple` are not supported.**\n\n\u003CExample code={`\u003Cdiv class=\"form-floating\">\n \u003Cselect class=\"form-select\" id=\"floatingSelect\" aria-label=\"Floating label select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Clabel for=\"floatingSelect\">Works with selects\u003C/label>\n\u003C/div>`} />\n\n## Disabled\n\nAdd the `disabled` boolean attribute on an input, a textarea or a select to give it a grayed out appearance, remove pointer events, and prevent focusing.\n\n\u003CExample code={`\u003Cdiv class=\"form-floating mb-3\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"floatingInputDisabled\" placeholder=\"name@example.com\" disabled>\n \u003Clabel for=\"floatingInputDisabled\">Email address\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating mb-3\">\n \u003Ctextarea class=\"form-control\" placeholder=\"Leave a comment here\" id=\"floatingTextareaDisabled\" disabled>\u003C/textarea>\n \u003Clabel for=\"floatingTextareaDisabled\">Comments\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating mb-3\">\n \u003Ctextarea class=\"form-control\" placeholder=\"Leave a comment here\" id=\"floatingTextarea2Disabled\" style=\"height: 100px\" disabled>Disabled textarea with some text inside\u003C/textarea>\n \u003Clabel for=\"floatingTextarea2Disabled\">Comments\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating\">\n \u003Cselect class=\"form-select\" id=\"floatingSelectDisabled\" aria-label=\"Floating label disabled select example\" disabled>\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Clabel for=\"floatingSelectDisabled\">Works with selects\u003C/label>\n\u003C/div>`} />\n\n## Readonly plaintext\n\nFloating labels also support `.form-control-plaintext`, which can be helpful for toggling from an editable `\u003Cinput>` to a plaintext value without affecting the page layout.\n\n\u003CExample code={`\u003Cdiv class=\"form-floating mb-3\">\n \u003Cinput type=\"email\" readonly class=\"form-control-plaintext\" id=\"floatingEmptyPlaintextInput\" placeholder=\"name@example.com\">\n \u003Clabel for=\"floatingEmptyPlaintextInput\">Empty input\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating mb-3\">\n \u003Cinput type=\"email\" readonly class=\"form-control-plaintext\" id=\"floatingPlaintextInput\" placeholder=\"name@example.com\" value=\"name@example.com\">\n \u003Clabel for=\"floatingPlaintextInput\">Input with value\u003C/label>\n\u003C/div>`} />\n\n## Input groups\n\nFloating labels also support `.input-group`.\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\">@\u003C/span>\n \u003Cdiv class=\"form-floating\">\n \u003Cinput type=\"text\" class=\"form-control\" id=\"floatingInputGroup1\" placeholder=\"Username\">\n \u003Clabel for=\"floatingInputGroup1\">Username\u003C/label>\n \u003C/div>\n\u003C/div>`} />\n\nWhen using `.input-group` and `.form-floating` along with form validation, the `-feedback` should be placed outside of the `.form-floating`, but inside of the `.input-group`. This means that the feedback will need to be shown using javascript.\n\n\u003CExample code={`\u003Cdiv class=\"input-group has-validation\">\n \u003Cspan class=\"input-group-text\">@\u003C/span>\n \u003Cdiv class=\"form-floating is-invalid\">\n \u003Cinput type=\"text\" class=\"form-control is-invalid\" id=\"floatingInputGroup2\" placeholder=\"Username\" required>\n \u003Clabel for=\"floatingInputGroup2\">Username\u003C/label>\n \u003C/div>\n \u003Cdiv class=\"invalid-feedback\">\n Please choose a username.\n \u003C/div>\n\u003C/div>`} />\n\n## Layout\n\nWhen working with the Bootstrap grid system, be sure to place form elements within column classes.\n\n\u003CExample code={`\u003Cdiv class=\"row g-2\">\n \u003Cdiv class=\"col-md\">\n \u003Cdiv class=\"form-floating\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"floatingInputGrid\" placeholder=\"name@example.com\" value=\"mdo@example.com\">\n \u003Clabel for=\"floatingInputGrid\">Email address\u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md\">\n \u003Cdiv class=\"form-floating\">\n \u003Cselect class=\"form-select\" id=\"floatingSelectGrid\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Clabel for=\"floatingSelectGrid\">Works with selects\u003C/label>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"form-floating-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/floating-labels.mdx","57de08e7722d79e7","forms/floating-labels.mdx","forms/form-control",{"id":599,"data":601,"body":604,"filePath":605,"digest":606,"legacyId":607,"deferredRender":139},{"description":602,"title":603,"toc":139},"Give textual form controls like `\u003Cinput>`s and `\u003Ctextarea>`s an upgrade with custom styles, sizing, focus states, and more.","Form controls","## Example\n\nForm controls are styled with a mix of Sass and CSS variables, allowing them to adapt to color modes and support any customization method.\n\n\u003CExample code={`\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleFormControlInput1\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"exampleFormControlInput1\" placeholder=\"name@example.com\">\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleFormControlTextarea1\" class=\"form-label\">Example textarea\u003C/label>\n \u003Ctextarea class=\"form-control\" id=\"exampleFormControlTextarea1\" rows=\"3\">\u003C/textarea>\n\u003C/div>`} />\n\n## Sizing\n\nSet heights using classes like `.form-control-lg` and `.form-control-sm`.\n\n\u003CExample code={`\u003Cinput class=\"form-control form-control-lg\" type=\"text\" placeholder=\".form-control-lg\" aria-label=\".form-control-lg example\">\n\u003Cinput class=\"form-control\" type=\"text\" placeholder=\"Default input\" aria-label=\"default input example\">\n\u003Cinput class=\"form-control form-control-sm\" type=\"text\" placeholder=\".form-control-sm\" aria-label=\".form-control-sm example\">`} />\n\n## Form text\n\nBlock-level or inline-level form text can be created using `.form-text`.\n\n\u003CCallout type=\"warning\">\nForm text should be explicitly associated with the form control it relates to using the `aria-describedby` attribute. This will ensure that assistive technologies—such as screen readers—will announce this form text when the user focuses or enters the control.\n\u003C/Callout>\n\nForm text below inputs can be styled with `.form-text`. If a block-level element will be used, a top margin is added for easy spacing from the inputs above.\n\n\u003CExample code={`\u003Clabel for=\"inputPassword5\" class=\"form-label\">Password\u003C/label>\n\u003Cinput type=\"password\" id=\"inputPassword5\" class=\"form-control\" aria-describedby=\"passwordHelpBlock\">\n\u003Cdiv id=\"passwordHelpBlock\" class=\"form-text\">\n Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.\n\u003C/div>`} />\n\nInline text can use any typical inline HTML element (be it a `\u003Cspan>`, `\u003Csmall>`, or something else) with nothing more than the `.form-text` class.\n\n\u003CExample code={`\u003Cdiv class=\"row g-3 align-items-center\">\n \u003Cdiv class=\"col-auto\">\n \u003Clabel for=\"inputPassword6\" class=\"col-form-label\">Password\u003C/label>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cinput type=\"password\" id=\"inputPassword6\" class=\"form-control\" aria-describedby=\"passwordHelpInline\">\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cspan id=\"passwordHelpInline\" class=\"form-text\">\n Must be 8-20 characters long.\n \u003C/span>\n \u003C/div>\n\u003C/div>`} />\n\n## Disabled\n\nAdd the `disabled` boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing.\n\n\u003CExample code={`\u003Cinput class=\"form-control\" type=\"text\" placeholder=\"Disabled input\" aria-label=\"Disabled input example\" disabled>\n\u003Cinput class=\"form-control\" type=\"text\" value=\"Disabled readonly input\" aria-label=\"Disabled input example\" disabled readonly>`} />\n\n## Readonly\n\nAdd the `readonly` boolean attribute on an input to prevent modification of the input's value. `readonly` inputs can still be focused and selected, while `disabled` inputs cannot.\n\n\u003CExample code={`\u003Cinput class=\"form-control\" type=\"text\" value=\"Readonly input here...\" aria-label=\"readonly input example\" readonly>`} />\n\n## Readonly plain text\n\nIf you want to have `\u003Cinput readonly>` elements in your form styled as plain text, replace `.form-control` with `.form-control-plaintext` to remove the default form field styling and preserve the correct `margin` and `padding`.\n\n\u003CExample code={` \u003Cdiv class=\"mb-3 row\">\n \u003Clabel for=\"staticEmail\" class=\"col-sm-2 col-form-label\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"text\" readonly class=\"form-control-plaintext\" id=\"staticEmail\" value=\"email@example.com\">\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"mb-3 row\">\n \u003Clabel for=\"inputPassword\" class=\"col-sm-2 col-form-label\">Password\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"password\" class=\"form-control\" id=\"inputPassword\">\n \u003C/div>\n \u003C/div>`} />\n\n\u003CExample code={`\u003Cform class=\"row g-3\">\n \u003Cdiv class=\"col-auto\">\n \u003Clabel for=\"staticEmail2\" class=\"visually-hidden\">Email\u003C/label>\n \u003Cinput type=\"text\" readonly class=\"form-control-plaintext\" id=\"staticEmail2\" value=\"email@example.com\">\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Clabel for=\"inputPassword2\" class=\"visually-hidden\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"inputPassword2\" placeholder=\"Password\">\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary mb-3\">Confirm identity\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## File input\n\n\u003CExample code={`\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formFile\" class=\"form-label\">Default file input example\u003C/label>\n \u003Cinput class=\"form-control\" type=\"file\" id=\"formFile\">\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formFileMultiple\" class=\"form-label\">Multiple files input example\u003C/label>\n \u003Cinput class=\"form-control\" type=\"file\" id=\"formFileMultiple\" multiple>\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formFileDisabled\" class=\"form-label\">Disabled file input example\u003C/label>\n \u003Cinput class=\"form-control\" type=\"file\" id=\"formFileDisabled\" disabled>\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formFileSm\" class=\"form-label\">Small file input example\u003C/label>\n \u003Cinput class=\"form-control form-control-sm\" id=\"formFileSm\" type=\"file\">\n\u003C/div>\n\u003Cdiv>\n \u003Clabel for=\"formFileLg\" class=\"form-label\">Large file input example\u003C/label>\n \u003Cinput class=\"form-control form-control-lg\" id=\"formFileLg\" type=\"file\">\n\u003C/div>`} />\n\n## Color\n\nSet the `type=\"color\"` and add `.form-control-color` to the `\u003Cinput>`. We use the modifier class to set fixed `height`s and override some inconsistencies between browsers.\n\n\u003CExample code={`\u003Clabel for=\"exampleColorInput\" class=\"form-label\">Color picker\u003C/label>\n\u003Cinput type=\"color\" class=\"form-control form-control-color\" id=\"exampleColorInput\" value=\"#563d7c\" title=\"Choose your color\">`} />\n\n## Datalists\n\nDatalists allow you to create a group of `\u003Coption>`s that can be accessed (and autocompleted) from within an `\u003Cinput>`. These are similar to `\u003Cselect>` elements, but come with more menu styling limitations and differences. While most browsers and operating systems include some support for `\u003Cdatalist>` elements, their styling is inconsistent at best.\n\nLearn more about [support for datalist elements](https://caniuse.com/datalist).\n\n\u003CExample code={`\u003Clabel for=\"exampleDataList\" class=\"form-label\">Datalist example\u003C/label>\n\u003Cinput class=\"form-control\" list=\"datalistOptions\" id=\"exampleDataList\" placeholder=\"Type to search...\">\n\u003Cdatalist id=\"datalistOptions\">\n \u003Coption value=\"San Francisco\">\n \u003Coption value=\"New York\">\n \u003Coption value=\"Seattle\">\n \u003Coption value=\"Los Angeles\">\n \u003Coption value=\"Chicago\">\n\u003C/datalist>`} />\n\n## CSS\n\n### Sass variables\n\n`$input-*` are shared across most of our form controls (and not buttons).\n\n\u003CScssDocs name=\"form-input-variables\" file=\"scss/_variables.scss\" />\n\n`$form-label-*` and `$form-text-*` are for our `\u003Clabel>`s and `.form-text` component.\n\n\u003CScssDocs name=\"form-label-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"form-text-variables\" file=\"scss/_variables.scss\" />\n\n`$form-file-*` are for file input.\n\n\u003CScssDocs name=\"form-file-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/form-control.mdx","4987aebc6b778fef","forms/form-control.mdx","forms/input-group",{"id":608,"data":610,"body":613,"filePath":614,"digest":615,"legacyId":616,"deferredRender":139},{"description":611,"title":612,"toc":139},"Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs, custom selects, and custom file inputs.","Input group","## Basic example\n\nPlace one add-on or button on either side of an input. You may also place one on both sides of an input. Remember to place `\u003Clabel>`s outside the input group.\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\" id=\"basic-addon1\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-label=\"Username\" aria-describedby=\"basic-addon1\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-label=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n \u003Cspan class=\"input-group-text\" id=\"basic-addon2\">@example.com\u003C/span>\n\u003C/div>\n\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"basic-url\" class=\"form-label\">Your vanity URL\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\" id=\"basic-addon3\">https://example.com/users/\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"basic-url\" aria-describedby=\"basic-addon3 basic-addon4\">\n \u003C/div>\n \u003Cdiv class=\"form-text\" id=\"basic-addon4\">Example help text goes outside the input group.\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\">$\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n \u003Cspan class=\"input-group-text\">.00\u003C/span>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-label=\"Username\">\n \u003Cspan class=\"input-group-text\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Server\" aria-label=\"Server\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\">With textarea\u003C/span>\n \u003Ctextarea class=\"form-control\" aria-label=\"With textarea\">\u003C/textarea>\n\u003C/div>`} />\n\n## Wrapping\n\nInput groups wrap by default via `flex-wrap: wrap` in order to accommodate custom form field validation within an input group. You may disable this with `.flex-nowrap`.\n\n\u003CExample code={`\u003Cdiv class=\"input-group flex-nowrap\">\n \u003Cspan class=\"input-group-text\" id=\"addon-wrapping\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-label=\"Username\" aria-describedby=\"addon-wrapping\">\n\u003C/div>`} />\n\n## Sizing\n\nAdd the relative form sizing classes to the `.input-group` itself and contents within will automatically resize—no need for repeating the form control size classes on each element.\n\n**Sizing on the individual input group elements isn't supported.**\n\n\u003CExample code={`\u003Cdiv class=\"input-group input-group-sm mb-3\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroup-sizing-sm\">Small\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Sizing example input\" aria-describedby=\"inputGroup-sizing-sm\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroup-sizing-default\">Default\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Sizing example input\" aria-describedby=\"inputGroup-sizing-default\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group input-group-lg\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroup-sizing-lg\">Large\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Sizing example input\" aria-describedby=\"inputGroup-sizing-lg\">\n\u003C/div>`} />\n\n## Checkboxes and radios\n\nPlace any checkbox or radio option within an input group's addon instead of text. We recommend adding `.mt-0` to the `.form-check-input` when there's no visible text next to the input.\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cdiv class=\"input-group-text\">\n \u003Cinput class=\"form-check-input mt-0\" type=\"checkbox\" value=\"\" aria-label=\"Checkbox for following text input\">\n \u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with checkbox\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\">\n \u003Cinput class=\"form-check-input mt-0\" type=\"radio\" value=\"\" aria-label=\"Radio button for following text input\">\n \u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with radio button\">\n\u003C/div>`} />\n\n## Multiple inputs\n\nWhile multiple `\u003Cinput>`s are supported visually, validation styles are only available for input groups with a single `\u003Cinput>`.\n\n\u003CExample code={`\u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\">First and last name\u003C/span>\n \u003Cinput type=\"text\" aria-label=\"First name\" class=\"form-control\">\n \u003Cinput type=\"text\" aria-label=\"Last name\" class=\"form-control\">\n\u003C/div>`} />\n\n## Multiple addons\n\nMultiple add-ons are supported and can be mixed with checkbox and radio input versions.\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\">$\u003C/span>\n \u003Cspan class=\"input-group-text\">0.00\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Dollar amount (with dot and two decimal places)\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Dollar amount (with dot and two decimal places)\">\n \u003Cspan class=\"input-group-text\">$\u003C/span>\n \u003Cspan class=\"input-group-text\">0.00\u003C/span>\n\u003C/div>`} />\n\n## Button addons\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\" id=\"button-addon1\">Button\u003C/button>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"\" aria-label=\"Example text with button addon\" aria-describedby=\"button-addon1\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-label=\"Recipient's username\" aria-describedby=\"button-addon2\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\" id=\"button-addon2\">Button\u003C/button>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"\" aria-label=\"Example text with two button addons\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-label=\"Recipient's username with two button addons\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\n## Buttons with dropdowns\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with dropdown button\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with dropdown button\">\n \u003Cbutton class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown\u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cbutton class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action before\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action before\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with 2 dropdown buttons\">\n \u003Cbutton class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown\u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## Segmented buttons\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">Action\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with segmented dropdown button\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with segmented dropdown button\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">Action\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## Custom forms\n\nInput groups include support for custom selects and custom file inputs. Browser default versions of these are not supported.\n\n### Custom select\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Clabel class=\"input-group-text\" for=\"inputGroupSelect01\">Options\u003C/label>\n \u003Cselect class=\"form-select\" id=\"inputGroupSelect01\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cselect class=\"form-select\" id=\"inputGroupSelect02\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Clabel class=\"input-group-text\" for=\"inputGroupSelect02\">Options\u003C/label>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n \u003Cselect class=\"form-select\" id=\"inputGroupSelect03\" aria-label=\"Example select with button addon\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cselect class=\"form-select\" id=\"inputGroupSelect04\" aria-label=\"Example select with button addon\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\n### Custom file input\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Clabel class=\"input-group-text\" for=\"inputGroupFile01\">Upload\u003C/label>\n \u003Cinput type=\"file\" class=\"form-control\" id=\"inputGroupFile01\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"file\" class=\"form-control\" id=\"inputGroupFile02\">\n \u003Clabel class=\"input-group-text\" for=\"inputGroupFile02\">Upload\u003C/label>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\" id=\"inputGroupFileAddon03\">Button\u003C/button>\n \u003Cinput type=\"file\" class=\"form-control\" id=\"inputGroupFile03\" aria-describedby=\"inputGroupFileAddon03\" aria-label=\"Upload\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cinput type=\"file\" class=\"form-control\" id=\"inputGroupFile04\" aria-describedby=\"inputGroupFileAddon04\" aria-label=\"Upload\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\" id=\"inputGroupFileAddon04\">Button\u003C/button>\n\u003C/div>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"input-group-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/input-group.mdx","a1c2e0335046e722","forms/input-group.mdx","forms/layout",{"id":617,"data":619,"body":622,"filePath":623,"digest":624,"legacyId":625,"deferredRender":139},{"description":620,"title":621,"toc":139},"Give your forms some structure—from inline to horizontal to custom grid implementations—with our form layout options.","Layout","## Forms\n\nEvery group of form fields should reside in a `\u003Cform>` element. Bootstrap provides no default styling for the `\u003Cform>` element, but there are some powerful browser features that are provided by default.\n\n- New to browser forms? Consider reviewing [the MDN form docs](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) for an overview and complete list of available attributes.\n- `\u003Cbutton>`s within a `\u003Cform>` default to `type=\"submit\"`, so strive to be specific and always include a `type`.\n\nSince Bootstrap applies `display: block` and `width: 100%` to almost all our form controls, forms will by default stack vertically. Additional classes can be used to vary this layout on a per-form basis.\n\n## Utilities\n\n[Margin utilities]([[docsref:/utilities/spacing]]) are the easiest way to add some structure to forms. They provide basic grouping of labels, controls, optional form text, and form validation messaging. We recommend sticking to `margin-bottom` utilities, and using a single direction throughout the form for consistency.\n\nFeel free to build your forms however you like, with `\u003Cfieldset>`s, `\u003Cdiv>`s, or nearly any other element.\n\n\u003CExample code={`\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formGroupExampleInput\" class=\"form-label\">Example label\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"formGroupExampleInput\" placeholder=\"Example input placeholder\">\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formGroupExampleInput2\" class=\"form-label\">Another label\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"formGroupExampleInput2\" placeholder=\"Another input placeholder\">\n\u003C/div>`} />\n\n## Form grid\n\nMore complex forms can be built using our grid classes. Use these for form layouts that require multiple columns, varied widths, and additional alignment options. **Requires the `$enable-grid-classes` Sass variable to be enabled** (on by default).\n\n\u003CExample code={`\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"First name\" aria-label=\"First name\">\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Last name\" aria-label=\"Last name\">\n \u003C/div>\n\u003C/div>`} />\n\n## Gutters\n\nBy adding [gutter modifier classes]([[docsref:/layout/gutters]]), you can have control over the gutter width in as well the inline as block direction. **Also requires the `$enable-grid-classes` Sass variable to be enabled** (on by default).\n\n\u003CExample code={`\u003Cdiv class=\"row g-3\">\n \u003Cdiv class=\"col\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"First name\" aria-label=\"First name\">\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Last name\" aria-label=\"Last name\">\n \u003C/div>\n\u003C/div>`} />\n\nMore complex layouts can also be created with the grid system.\n\n\u003CExample code={`\u003Cform class=\"row g-3\">\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"inputEmail4\" class=\"form-label\">Email\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"inputEmail4\">\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"inputPassword4\" class=\"form-label\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"inputPassword4\">\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Clabel for=\"inputAddress\" class=\"form-label\">Address\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inputAddress\" placeholder=\"1234 Main St\">\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Clabel for=\"inputAddress2\" class=\"form-label\">Address 2\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inputAddress2\" placeholder=\"Apartment, studio, or floor\">\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"inputCity\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inputCity\">\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"inputState\" class=\"form-label\">State\u003C/label>\n \u003Cselect id=\"inputState\" class=\"form-select\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"col-md-2\">\n \u003Clabel for=\"inputZip\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inputZip\">\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"gridCheck\">\n \u003Clabel class=\"form-check-label\" for=\"gridCheck\">\n Check me out\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Sign in\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Horizontal form\n\nCreate horizontal forms with the grid by adding the `.row` class to form groups and using the `.col-*-*` classes to specify the width of your labels and controls. Be sure to add `.col-form-label` to your `\u003Clabel>`s as well so they're vertically centered with their associated form controls.\n\nAt times, you maybe need to use margin or padding utilities to create that perfect alignment you need. For example, we've removed the `padding-top` on our stacked radio inputs label to better align the text baseline.\n\n\u003CExample code={`\u003Cform>\n \u003Cdiv class=\"row mb-3\">\n \u003Clabel for=\"inputEmail3\" class=\"col-sm-2 col-form-label\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"inputEmail3\">\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row mb-3\">\n \u003Clabel for=\"inputPassword3\" class=\"col-sm-2 col-form-label\">Password\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"password\" class=\"form-control\" id=\"inputPassword3\">\n \u003C/div>\n \u003C/div>\n \u003Cfieldset class=\"row mb-3\">\n \u003Clegend class=\"col-form-label col-sm-2 pt-0\">Radios\u003C/legend>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios1\" value=\"option1\" checked>\n \u003Clabel class=\"form-check-label\" for=\"gridRadios1\">\n First radio\n \u003C/label>\n \u003C/div>\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios2\" value=\"option2\">\n \u003Clabel class=\"form-check-label\" for=\"gridRadios2\">\n Second radio\n \u003C/label>\n \u003C/div>\n \u003Cdiv class=\"form-check disabled\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios3\" value=\"option3\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"gridRadios3\">\n Third disabled radio\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003C/fieldset>\n \u003Cdiv class=\"row mb-3\">\n \u003Cdiv class=\"col-sm-10 offset-sm-2\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"gridCheck1\">\n \u003Clabel class=\"form-check-label\" for=\"gridCheck1\">\n Example checkbox\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Sign in\u003C/button>\n\u003C/form>`} />\n\n### Horizontal form label sizing\n\nBe sure to use `.col-form-label-sm` or `.col-form-label-lg` to your `\u003Clabel>`s or `\u003Clegend>`s to correctly follow the size of `.form-control-lg` and `.form-control-sm`.\n\n\u003CExample code={`\u003Cdiv class=\"row mb-3\">\n \u003Clabel for=\"colFormLabelSm\" class=\"col-sm-2 col-form-label col-form-label-sm\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"email\" class=\"form-control form-control-sm\" id=\"colFormLabelSm\" placeholder=\"col-form-label-sm\">\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"row mb-3\">\n \u003Clabel for=\"colFormLabel\" class=\"col-sm-2 col-form-label\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"colFormLabel\" placeholder=\"col-form-label\">\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"row\">\n \u003Clabel for=\"colFormLabelLg\" class=\"col-sm-2 col-form-label col-form-label-lg\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"email\" class=\"form-control form-control-lg\" id=\"colFormLabelLg\" placeholder=\"col-form-label-lg\">\n \u003C/div>\n\u003C/div>`} />\n\n## Column sizing\n\nAs shown in the previous examples, our grid system allows you to place any number of `.col`s within a `.row`. They'll split the available width equally between them. You may also pick a subset of your columns to take up more or less space, while the remaining `.col`s equally split the rest, with specific column classes like `.col-sm-7`.\n\n\u003CExample code={`\u003Cdiv class=\"row g-3\">\n \u003Cdiv class=\"col-sm-7\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"City\" aria-label=\"City\">\n \u003C/div>\n \u003Cdiv class=\"col-sm\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"State\" aria-label=\"State\">\n \u003C/div>\n \u003Cdiv class=\"col-sm\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Zip\" aria-label=\"Zip\">\n \u003C/div>\n\u003C/div>`} />\n\n## Auto-sizing\n\nThe example below uses a flexbox utility to vertically center the contents and changes `.col` to `.col-auto` so that your columns only take up as much space as needed. Put another way, the column sizes itself based on the contents.\n\n\u003CExample code={`\u003Cform class=\"row gy-2 gx-3 align-items-center\">\n \u003Cdiv class=\"col-auto\">\n \u003Clabel class=\"visually-hidden\" for=\"autoSizingInput\">Name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"autoSizingInput\" placeholder=\"Jane Doe\">\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Clabel class=\"visually-hidden\" for=\"autoSizingInputGroup\">Username\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"autoSizingInputGroup\" placeholder=\"Username\">\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Clabel class=\"visually-hidden\" for=\"autoSizingSelect\">Preference\u003C/label>\n \u003Cselect class=\"form-select\" id=\"autoSizingSelect\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"autoSizingCheck\">\n \u003Clabel class=\"form-check-label\" for=\"autoSizingCheck\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\nYou can then remix that once again with size-specific column classes.\n\n\u003CExample code={`\u003Cform class=\"row gx-3 gy-2 align-items-center\">\n \u003Cdiv class=\"col-sm-3\">\n \u003Clabel class=\"visually-hidden\" for=\"specificSizeInputName\">Name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"specificSizeInputName\" placeholder=\"Jane Doe\">\n \u003C/div>\n \u003Cdiv class=\"col-sm-3\">\n \u003Clabel class=\"visually-hidden\" for=\"specificSizeInputGroupUsername\">Username\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"specificSizeInputGroupUsername\" placeholder=\"Username\">\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-sm-3\">\n \u003Clabel class=\"visually-hidden\" for=\"specificSizeSelect\">Preference\u003C/label>\n \u003Cselect class=\"form-select\" id=\"specificSizeSelect\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"autoSizingCheck2\">\n \u003Clabel class=\"form-check-label\" for=\"autoSizingCheck2\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Inline forms\n\nUse the `.row-cols-*` classes to create responsive horizontal layouts. By adding [gutter modifier classes]([[docsref:/layout/gutters]]), we'll have gutters in horizontal and vertical directions. On narrow mobile viewports, the `.col-12` helps stack the form controls and more. The `.align-items-center` aligns the form elements to the middle, making the `.form-check` align properly.\n\n\u003CExample code={`\u003Cform class=\"row row-cols-lg-auto g-3 align-items-center\">\n \u003Cdiv class=\"col-12\">\n \u003Clabel class=\"visually-hidden\" for=\"inlineFormInputGroupUsername\">Username\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inlineFormInputGroupUsername\" placeholder=\"Username\">\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"col-12\">\n \u003Clabel class=\"visually-hidden\" for=\"inlineFormSelectPref\">Preference\u003C/label>\n \u003Cselect class=\"form-select\" id=\"inlineFormSelectPref\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003C/div>\n\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"inlineFormCheck\">\n \u003Clabel class=\"form-check-label\" for=\"inlineFormCheck\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"col-12\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n \u003C/div>\n\u003C/form>`} />","src/content/docs/forms/layout.mdx","99ba926149fa95d8","forms/layout.mdx","forms/overview",{"id":626,"data":628,"body":653,"filePath":654,"digest":655,"legacyId":656,"deferredRender":139},{"aliases":629,"description":630,"sections":631,"title":652,"toc":139},"/docs/[[config:docs_version]]/forms/","Examples and usage guidelines for form control styles, layout options, and custom components for creating a wide variety of forms.",[632,635,638,641,644,646,647,649],{"description":633,"title":634},"Style textual inputs and textareas with support for multiple states.","Form control",{"description":636,"title":637},"Improve browser default select elements with a custom initial appearance.","Select",{"description":639,"title":640},"Use our custom radio buttons and checkboxes in forms for selecting input options.","Checks & radios",{"description":642,"title":643},"Replace browser default range inputs with our custom version.","Range",{"description":645,"title":612},"Attach labels and buttons to your inputs for increased semantic value.",{"description":593,"title":594},{"description":648,"title":621},"Create inline, horizontal, or complex grid-based layouts with your forms.",{"description":650,"title":651},"Validate your forms with custom or native validation behaviors and styles.","Validation","Forms","## Overview\n\nBootstrap's form controls expand on [our Rebooted form styles]([[docsref:/content/reboot#forms]]) with classes. Use these classes to opt into their customized displays for a more consistent rendering across browsers and devices.\n\nBe sure to use an appropriate `type` attribute on all inputs (e.g., `email` for email address or `number` for numerical information) to take advantage of newer input controls like email verification, number selection, and more.\n\nHere's a quick example to demonstrate Bootstrap's form styles. Keep reading for documentation on required classes, form layout, and more.\n\n\u003CExample code={`\u003Cform>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleInputEmail1\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"exampleInputEmail1\" aria-describedby=\"emailHelp\">\n \u003Cdiv id=\"emailHelp\" class=\"form-text\">We'll never share your email with anyone else.\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleInputPassword1\" class=\"form-label\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"exampleInputPassword1\">\n \u003C/div>\n \u003Cdiv class=\"mb-3 form-check\">\n \u003Cinput type=\"checkbox\" class=\"form-check-input\" id=\"exampleCheck1\">\n \u003Clabel class=\"form-check-label\" for=\"exampleCheck1\">Check me out\u003C/label>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n\u003C/form>`} />\n\n## Disabled forms\n\nAdd the `disabled` boolean attribute on an input to prevent user interactions and make it appear lighter.\n\n```html\n\u003Cinput class=\"form-control\" id=\"disabledInput\" type=\"text\" placeholder=\"Disabled input here...\" disabled>\n```\n\nAdd the `disabled` attribute to a `\u003Cfieldset>` to disable all the controls within. Browsers treat all native form controls (`\u003Cinput>`, `\u003Cselect>`, and `\u003Cbutton>` elements) inside a `\u003Cfieldset disabled>` as disabled, preventing both keyboard and mouse interactions on them.\n\nHowever, if your form also includes custom button-like elements such as `\u003Ca class=\"btn btn-*\">...\u003C/a>`, these will only be given a style of `pointer-events: none`, meaning they are still focusable and operable using the keyboard. In this case, you must manually modify these controls by adding `tabindex=\"-1\"` to prevent them from receiving focus and `aria-disabled=\"disabled\"` to signal their state to assistive technologies.\n\n\u003CExample code={`\u003Cform>\n \u003Cfieldset disabled>\n \u003Clegend>Disabled fieldset example\u003C/legend>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"disabledTextInput\" class=\"form-label\">Disabled input\u003C/label>\n \u003Cinput type=\"text\" id=\"disabledTextInput\" class=\"form-control\" placeholder=\"Disabled input\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"disabledSelect\" class=\"form-label\">Disabled select menu\u003C/label>\n \u003Cselect id=\"disabledSelect\" class=\"form-select\">\n \u003Coption>Disabled select\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"disabledFieldsetCheck\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"disabledFieldsetCheck\">\n Can't check this\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n \u003C/fieldset>\n\u003C/form>`} />\n\n## Accessibility\n\nEnsure that all form controls have an appropriate accessible name so that their purpose can be conveyed to users of assistive technologies. The simplest way to achieve this is to use a `\u003Clabel>` element, or—in the case of buttons—to include sufficiently descriptive text as part of the `\u003Cbutton>...\u003C/button>` content.\n\nFor situations where it's not possible to include a visible `\u003Clabel>` or appropriate text content, there are alternative ways of still providing an accessible name, such as:\n\n- `\u003Clabel>` elements hidden using the `.visually-hidden` class\n- Pointing to an existing element that can act as a label using `aria-labelledby`\n- Providing a `title` attribute\n- Explicitly setting the accessible name on an element using `aria-label`\n\nIf none of these are present, assistive technologies may resort to using the `placeholder` attribute as a fallback for the accessible name on `\u003Cinput>` and `\u003Ctextarea>` elements. The examples in this section provide a few suggested, case-specific approaches.\n\nWhile using visually hidden content (`.visually-hidden`, `aria-label`, and even `placeholder` content, which disappears once a form field has content) will benefit assistive technology users, a lack of visible label text may still be problematic for certain users. Some form of visible label is generally the best approach, both for accessibility and usability.\n\n## CSS\n\nMany form variables are set at a general level to be re-used and extended by individual form components. You'll see these most often as `$input-btn-*` and `$input-*` variables.\n\n### Sass variables\n\n`$input-btn-*` variables are shared global variables between our [buttons]([[docsref:/components/buttons]]) and our form components. You'll find these frequently reassigned as values to other component-specific variables.\n\n\u003CScssDocs name=\"input-btn-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/overview.mdx","85fcf727e9350191","forms/overview.mdx","forms/range",{"id":657,"data":659,"body":661,"filePath":662,"digest":663,"legacyId":664,"deferredRender":139},{"description":660,"title":643,"toc":139},"Use our custom range inputs for consistent cross-browser styling and built-in customization.","## Overview\n\nCreate custom `\u003Cinput type=\"range\">` controls with `.form-range`. The track (the background) and thumb (the value) are both styled to appear the same across browsers. As only Firefox supports \"filling\" their track from the left or right of the thumb as a means to visually indicate progress, we do not currently support it.\n\n\u003CExample code={`\u003Clabel for=\"customRange1\" class=\"form-label\">Example range\u003C/label>\n\u003Cinput type=\"range\" class=\"form-range\" id=\"customRange1\">`} />\n\n## Disabled\n\nAdd the `disabled` boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing.\n\n\u003CExample code={`\u003Clabel for=\"disabledRange\" class=\"form-label\">Disabled range\u003C/label>\n\u003Cinput type=\"range\" class=\"form-range\" id=\"disabledRange\" disabled>`} />\n\n## Min and max\n\nRange inputs have implicit values for `min` and `max`—`0` and `100`, respectively. You may specify new values for those using the `min` and `max` attributes.\n\n\u003CExample code={`\u003Clabel for=\"customRange2\" class=\"form-label\">Example range\u003C/label>\n\u003Cinput type=\"range\" class=\"form-range\" min=\"0\" max=\"5\" id=\"customRange2\">`} />\n\n## Steps\n\nBy default, range inputs \"snap\" to integer values. To change this, you can specify a `step` value. In the example below, we double the number of steps by using `step=\"0.5\"`.\n\n\u003CExample code={`\u003Clabel for=\"customRange3\" class=\"form-label\">Example range\u003C/label>\n\u003Cinput type=\"range\" class=\"form-range\" min=\"0\" max=\"5\" step=\"0.5\" id=\"customRange3\">`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"form-range-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/range.mdx","b9f76cb9529cddf9","forms/range.mdx","forms/select",{"id":665,"data":667,"body":669,"filePath":670,"digest":671,"legacyId":672,"deferredRender":139},{"description":668,"title":637,"toc":139},"Customize the native `\u003Cselect>`s with custom CSS that changes the element's initial appearance.","## Default\n\nCustom `\u003Cselect>` menus need only a custom class, `.form-select` to trigger the custom styles. Custom styles are limited to the `\u003Cselect>`'s initial appearance and cannot modify the `\u003Coption>`s due to browser limitations.\n\n\u003CExample code={`\u003Cselect class=\"form-select\" aria-label=\"Default select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\n## Sizing\n\nYou may also choose from small and large custom selects to match our similarly sized text inputs.\n\n\u003CExample code={`\u003Cselect class=\"form-select form-select-lg mb-3\" aria-label=\"Large select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>\n\n\u003Cselect class=\"form-select form-select-sm\" aria-label=\"Small select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\nThe `multiple` attribute is also supported:\n\n\u003CExample code={`\u003Cselect class=\"form-select\" multiple aria-label=\"Multiple select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\nAs is the `size` attribute:\n\n\u003CExample code={`\u003Cselect class=\"form-select\" size=\"3\" aria-label=\"Size 3 select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\n## Disabled\n\nAdd the `disabled` boolean attribute on a select to give it a grayed out appearance and remove pointer events.\n\n\u003CExample code={`\u003Cselect class=\"form-select\" aria-label=\"Disabled select example\" disabled>\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"form-select-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/select.mdx","b86bc209d7512ae1","forms/select.mdx","forms/validation",{"id":673,"data":675,"body":680,"filePath":681,"digest":682,"legacyId":683,"deferredRender":139},{"description":676,"extra_js":677,"title":651,"toc":139},"Provide valuable, actionable feedback to your users with HTML5 form validation, via browser default behaviors or custom styles and JavaScript.",[678],{"async":139,"src":679},"[[docsref:/assets/js/validate-forms.js]]","import { getDocsRelativePath } from '@libs/path'\n\n\u003CCallout type=\"warning\">\nWe are aware that currently the client-side custom validation styles and tooltips are not accessible, since they are not exposed to assistive technologies. While we work on a solution, we'd recommend either using the server-side option or the default browser validation method.\n\u003C/Callout>\n\n## How it works\n\nHere's how form validation works with Bootstrap:\n\n- HTML form validation is applied via CSS's two pseudo-classes, `:invalid` and `:valid`. It applies to `\u003Cinput>`, `\u003Cselect>`, and `\u003Ctextarea>` elements.\n- Bootstrap scopes the `:invalid` and `:valid` styles to parent `.was-validated` class, usually applied to the `\u003Cform>`. Otherwise, any required field without a value shows up as invalid on page load. This way, you may choose when to activate them (typically after form submission is attempted).\n- To reset the appearance of the form (for instance, in the case of dynamic form submissions using Ajax), remove the `.was-validated` class from the `\u003Cform>` again after submission.\n- As a fallback, `.is-invalid` and `.is-valid` classes may be used instead of the pseudo-classes for [server-side validation](#server-side). They do not require a `.was-validated` parent class.\n- Due to constraints in how CSS works, we cannot (at present) apply styles to a `\u003Clabel>` that comes before a form control in the DOM without the help of custom JavaScript.\n- All modern browsers support the [constraint validation API](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-constraint-validation-api), a series of JavaScript methods for validating form controls.\n- Feedback messages may utilize the [browser defaults](#browser-defaults) (different for each browser, and unstylable via CSS) or our custom feedback styles with additional HTML and CSS.\n- You may provide custom validity messages with `setCustomValidity` in JavaScript.\n\nWith that in mind, consider the following demos for our custom form validation styles, optional server-side classes, and browser defaults.\n\n## Custom styles\n\nFor custom Bootstrap form validation messages, you'll need to add the `novalidate` boolean attribute to your `\u003Cform>`. This disables the browser default feedback tooltips, but still provides access to the form validation APIs in JavaScript. Try to submit the form below; our JavaScript will intercept the submit button and relay feedback to you. When attempting to submit, you'll see the `:invalid` and `:valid` styles applied to your form controls.\n\nCustom feedback styles apply custom colors, borders, focus styles, and background icons to better communicate feedback. Background icons for `\u003Cselect>`s are only available with `.form-select`, and not `.form-control`.\n\n\u003CExample code={`\u003Cform class=\"row g-3 needs-validation\" novalidate>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationCustom01\" class=\"form-label\">First name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustom01\" value=\"Mark\" required>\n \u003Cdiv class=\"valid-feedback\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationCustom02\" class=\"form-label\">Last name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustom02\" value=\"Otto\" required>\n \u003Cdiv class=\"valid-feedback\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationCustomUsername\" class=\"form-label\">Username\u003C/label>\n \u003Cdiv class=\"input-group has-validation\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroupPrepend\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustomUsername\" aria-describedby=\"inputGroupPrepend\" required>\n \u003Cdiv class=\"invalid-feedback\">\n Please choose a username.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"validationCustom03\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustom03\" required>\n \u003Cdiv class=\"invalid-feedback\">\n Please provide a valid city.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationCustom04\" class=\"form-label\">State\u003C/label>\n \u003Cselect class=\"form-select\" id=\"validationCustom04\" required>\n \u003Coption selected disabled value=\"\">Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003Cdiv class=\"invalid-feedback\">\n Please select a valid state.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationCustom05\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustom05\" required>\n \u003Cdiv class=\"invalid-feedback\">\n Please provide a valid zip.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"invalidCheck\" required>\n \u003Clabel class=\"form-check-label\" for=\"invalidCheck\">\n Agree to terms and conditions\n \u003C/label>\n \u003Cdiv class=\"invalid-feedback\">\n You must agree before submitting.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\">Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n\u003CCode containerClass=\"bd-example-snippet\" lang=\"js\" filePath={getDocsRelativePath('/static/docs/[version]/assets/js/validate-forms.js')} />\n\n## Browser defaults\n\nNot interested in custom validation feedback messages or writing JavaScript to change form behaviors? All good, you can use the browser defaults. Try submitting the form below. Depending on your browser and OS, you'll see a slightly different style of feedback.\n\nWhile these feedback styles cannot be styled with CSS, you can still customize the feedback text through JavaScript.\n\n\u003CExample code={`\u003Cform class=\"row g-3\">\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationDefault01\" class=\"form-label\">First name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefault01\" value=\"Mark\" required>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationDefault02\" class=\"form-label\">Last name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefault02\" value=\"Otto\" required>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationDefaultUsername\" class=\"form-label\">Username\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroupPrepend2\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefaultUsername\" aria-describedby=\"inputGroupPrepend2\" required>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"validationDefault03\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefault03\" required>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationDefault04\" class=\"form-label\">State\u003C/label>\n \u003Cselect class=\"form-select\" id=\"validationDefault04\" required>\n \u003Coption selected disabled value=\"\">Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationDefault05\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefault05\" required>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"invalidCheck2\" required>\n \u003Clabel class=\"form-check-label\" for=\"invalidCheck2\">\n Agree to terms and conditions\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\">Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Server-side\n\nWe recommend using client-side validation, but in case you require server-side validation, you can indicate invalid and valid form fields with `.is-invalid` and `.is-valid`. Note that `.invalid-feedback` is also supported with these classes.\n\nFor invalid fields, ensure that the invalid feedback/error message is associated with the relevant form field using `aria-describedby` (noting that this attribute allows more than one `id` to be referenced, in case the field already points to additional form text).\n\nTo fix [issues with border radius](https://github.com/twbs/bootstrap/issues/25110), input groups require an additional `.has-validation` class.\n\n\u003CExample code={`\u003Cform class=\"row g-3\">\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationServer01\" class=\"form-label\">First name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control is-valid\" id=\"validationServer01\" value=\"Mark\" required>\n \u003Cdiv class=\"valid-feedback\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationServer02\" class=\"form-label\">Last name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control is-valid\" id=\"validationServer02\" value=\"Otto\" required>\n \u003Cdiv class=\"valid-feedback\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationServerUsername\" class=\"form-label\">Username\u003C/label>\n \u003Cdiv class=\"input-group has-validation\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroupPrepend3\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control is-invalid\" id=\"validationServerUsername\" aria-describedby=\"inputGroupPrepend3 validationServerUsernameFeedback\" required>\n \u003Cdiv id=\"validationServerUsernameFeedback\" class=\"invalid-feedback\">\n Please choose a username.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"validationServer03\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control is-invalid\" id=\"validationServer03\" aria-describedby=\"validationServer03Feedback\" required>\n \u003Cdiv id=\"validationServer03Feedback\" class=\"invalid-feedback\">\n Please provide a valid city.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationServer04\" class=\"form-label\">State\u003C/label>\n \u003Cselect class=\"form-select is-invalid\" id=\"validationServer04\" aria-describedby=\"validationServer04Feedback\" required>\n \u003Coption selected disabled value=\"\">Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003Cdiv id=\"validationServer04Feedback\" class=\"invalid-feedback\">\n Please select a valid state.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationServer05\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control is-invalid\" id=\"validationServer05\" aria-describedby=\"validationServer05Feedback\" required>\n \u003Cdiv id=\"validationServer05Feedback\" class=\"invalid-feedback\">\n Please provide a valid zip.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input is-invalid\" type=\"checkbox\" value=\"\" id=\"invalidCheck3\" aria-describedby=\"invalidCheck3Feedback\" required>\n \u003Clabel class=\"form-check-label\" for=\"invalidCheck3\">\n Agree to terms and conditions\n \u003C/label>\n \u003Cdiv id=\"invalidCheck3Feedback\" class=\"invalid-feedback\">\n You must agree before submitting.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\">Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Supported elements\n\nValidation styles are available for the following form controls and components:\n\n- `\u003Cinput>`s and `\u003Ctextarea>`s with `.form-control` (including up to one `.form-control` in input groups)\n- `\u003Cselect>`s with `.form-select`\n- `.form-check`s\n\n\u003CExample code={`\u003Cform class=\"was-validated\">\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"validationTextarea\" class=\"form-label\">Textarea\u003C/label>\n \u003Ctextarea class=\"form-control\" id=\"validationTextarea\" placeholder=\"Required example textarea\" required>\u003C/textarea>\n \u003Cdiv class=\"invalid-feedback\">\n Please enter a message in the textarea.\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"form-check mb-3\">\n \u003Cinput type=\"checkbox\" class=\"form-check-input\" id=\"validationFormCheck1\" required>\n \u003Clabel class=\"form-check-label\" for=\"validationFormCheck1\">Check this checkbox\u003C/label>\n \u003Cdiv class=\"invalid-feedback\">Example invalid feedback text\u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"form-check\">\n \u003Cinput type=\"radio\" class=\"form-check-input\" id=\"validationFormCheck2\" name=\"radio-stacked\" required>\n \u003Clabel class=\"form-check-label\" for=\"validationFormCheck2\">Toggle this radio\u003C/label>\n \u003C/div>\n \u003Cdiv class=\"form-check mb-3\">\n \u003Cinput type=\"radio\" class=\"form-check-input\" id=\"validationFormCheck3\" name=\"radio-stacked\" required>\n \u003Clabel class=\"form-check-label\" for=\"validationFormCheck3\">Or toggle this other radio\u003C/label>\n \u003Cdiv class=\"invalid-feedback\">More example invalid feedback text\u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"mb-3\">\n \u003Cselect class=\"form-select\" required aria-label=\"select example\">\n \u003Coption value=\"\">Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Cdiv class=\"invalid-feedback\">Example invalid select feedback\u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"mb-3\">\n \u003Cinput type=\"file\" class=\"form-control\" aria-label=\"file example\" required>\n \u003Cdiv class=\"invalid-feedback\">Example invalid form file feedback\u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"mb-3\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\" disabled>Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Tooltips\n\nIf your form layout allows it, you can swap the `.{valid|invalid}-feedback` classes for `.{valid|invalid}-tooltip` classes to display validation feedback in a styled tooltip. Be sure to have a parent with `position: relative` on it for tooltip positioning. In the example below, our column classes have this already, but your project may require an alternative setup.\n\n\u003CExample code={`\u003Cform class=\"row g-3 needs-validation\" novalidate>\n \u003Cdiv class=\"col-md-4 position-relative\">\n \u003Clabel for=\"validationTooltip01\" class=\"form-label\">First name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltip01\" value=\"Mark\" required>\n \u003Cdiv class=\"valid-tooltip\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4 position-relative\">\n \u003Clabel for=\"validationTooltip02\" class=\"form-label\">Last name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltip02\" value=\"Otto\" required>\n \u003Cdiv class=\"valid-tooltip\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4 position-relative\">\n \u003Clabel for=\"validationTooltipUsername\" class=\"form-label\">Username\u003C/label>\n \u003Cdiv class=\"input-group has-validation\">\n \u003Cspan class=\"input-group-text\" id=\"validationTooltipUsernamePrepend\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltipUsername\" aria-describedby=\"validationTooltipUsernamePrepend\" required>\n \u003Cdiv class=\"invalid-tooltip\">\n Please choose a unique and valid username.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-6 position-relative\">\n \u003Clabel for=\"validationTooltip03\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltip03\" required>\n \u003Cdiv class=\"invalid-tooltip\">\n Please provide a valid city.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3 position-relative\">\n \u003Clabel for=\"validationTooltip04\" class=\"form-label\">State\u003C/label>\n \u003Cselect class=\"form-select\" id=\"validationTooltip04\" required>\n \u003Coption selected disabled value=\"\">Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003Cdiv class=\"invalid-tooltip\">\n Please select a valid state.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3 position-relative\">\n \u003Clabel for=\"validationTooltip05\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltip05\" required>\n \u003Cdiv class=\"invalid-tooltip\">\n Please provide a valid zip.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\">Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.3.0\"/>\n\nAs part of Bootstrap's evolving CSS variables approach, forms now use local CSS variables for validation for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"root-form-validation-variables\" file=\"scss/_root.scss\" />\n\nThese variables are also color mode adaptive, meaning they change color while in dark mode.\n\n### Sass variables\n\n\u003CScssDocs name=\"form-feedback-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"form-validation-colors\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"form-validation-colors-dark\" file=\"scss/_variables-dark.scss\" />\n\n### Sass mixins\n\nTwo mixins are combined, through our [loop](#sass-loops), to generate our form validation feedback styles.\n\n\u003CScssDocs name=\"form-validation-mixins\" file=\"scss/mixins/_forms.scss\" />\n\n### Sass maps\n\nThis is the validation Sass map from `_variables.scss`. Override or extend this to generate different or additional states.\n\n\u003CScssDocs name=\"form-validation-states\" file=\"scss/_variables.scss\" />\n\nMaps of `$form-validation-states` can contain three optional parameters to override tooltips and focus styles.\n\n### Sass loops\n\nUsed to iterate over `$form-validation-states` map values to generate our validation styles. Any modifications to the above Sass map will be reflected in your compiled CSS via this loop.\n\n\u003CScssDocs name=\"form-validation-states-loop\" file=\"scss/forms/_validation.scss\" />\n\n### Customizing\n\nValidation states can be customized via Sass with the `$form-validation-states` map. Located in our `_variables.scss` file, this Sass map is how we generate the default `valid`/`invalid` validation states. Included is a nested map for customizing each state's color, icon, tooltip color, and focus shadow. While no other states are supported by browsers, those using custom styles can easily add more complex form feedback.","src/content/docs/forms/validation.mdx","44adadb296886ccc","forms/validation.mdx","getting-started/accessibility",{"id":684,"data":686,"body":689,"filePath":690,"digest":691,"legacyId":692,"deferredRender":139},{"description":687,"title":688,"toc":139},"A brief overview of Bootstrap's features and limitations for the creation of accessible content.","Accessibility","Bootstrap provides an easy-to-use framework of ready-made styles, layout tools, and interactive components, allowing developers to create websites and applications that are visually appealing, functionally rich, and accessible out of the box.\n\n## Overview and limitations\n\nThe overall accessibility of any project built with Bootstrap depends in large part on the author's markup, additional styling, and scripting they've included. However, provided that these have been implemented correctly, it should be perfectly possible to create websites and applications with Bootstrap that fulfill [\u003Cabbr title=\"Web Content Accessibility Guidelines\">WCAG\u003C/abbr> 2.2](https://www.w3.org/TR/WCAG/) (A/AA/AAA), [Section 508](https://www.section508.gov/), and similar accessibility standards and requirements.\n\n### Structural markup\n\nBootstrap's styling and layout can be applied to a wide range of markup structures. This documentation aims to provide developers with best practice examples to demonstrate the use of Bootstrap itself and illustrate appropriate semantic markup, including ways in which potential accessibility concerns can be addressed.\n\n### Interactive components\n\nBootstrap's interactive components—such as modal dialogs, dropdown menus, and custom tooltips—are designed to work for touch, mouse, and keyboard users. Through the use of relevant [\u003Cabbr title=\"Web Accessibility Initiative\">WAI\u003C/abbr>-\u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr>](https://www.w3.org/WAI/standards-guidelines/aria/) roles and attributes, these components should also be understandable and operable using assistive technologies (such as screen readers).\n\nBecause Bootstrap's components are purposely designed to be fairly generic, authors may need to include further \u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr> roles and attributes, as well as JavaScript behavior, to more accurately convey the precise nature and functionality of their component. This is usually noted in the documentation.\n\n### Color contrast\n\nSome combinations of colors that currently make up Bootstrap's default palette—used throughout the framework for things such as button variations, alert variations, form validation indicators—may lead to *insufficient* color contrast (below the recommended [WCAG 2.2 text color contrast ratio of 4.5:1](https://www.w3.org/TR/WCAG/#contrast-minimum) and the [WCAG 2.2 non-text color contrast ratio of 3:1](https://www.w3.org/TR/WCAG/#non-text-contrast)), particularly when used against a light background. Authors are encouraged to test their specific uses of color and, where necessary, manually modify/extend these default colors to ensure adequate color contrast ratios.\n\n### Visually hidden content\n\nContent which should be visually hidden, but remain accessible to assistive technologies such as screen readers, can be styled using the `.visually-hidden` class. This can be useful in situations where additional visual information or cues (such as meaning denoted through the use of color) need to also be conveyed to non-visual users.\n\n```html\n\u003Cp class=\"text-danger\">\n \u003Cspan class=\"visually-hidden\">Danger: \u003C/span>\n This action is not reversible\n\u003C/p>\n```\n\nFor visually hidden interactive controls, such as traditional \"skip\" links, use the `.visually-hidden-focusable` class. This will ensure that the control becomes visible once focused (for sighted keyboard users). **Watch out, compared to the equivalent `.sr-only` and `.sr-only-focusable` classes in past versions, Bootstrap 5's `.visually-hidden-focusable` is a standalone class, and must not be used in combination with the `.visually-hidden` class.**\n\n```html\n\u003Ca class=\"visually-hidden-focusable\" href=\"#content\">Skip to main content\u003C/a>\n```\n\n### Reduced motion\n\nBootstrap includes support for the [`prefers-reduced-motion` media feature](https://www.w3.org/TR/mediaqueries-5/#prefers-reduced-motion). In browsers/environments that allow the user to specify their preference for reduced motion, most CSS transition effects in Bootstrap (for instance, when a modal dialog is opened or closed, or the sliding animation in carousels) will be disabled, and meaningful animations (such as spinners) will be slowed down.\n\nOn browsers that support `prefers-reduced-motion`, and where the user has *not* explicitly signaled that they'd prefer reduced motion (i.e. where `prefers-reduced-motion: no-preference`), Bootstrap enables smooth scrolling using the `scroll-behavior` property.\n\n## Additional resources\n\n- [Web Content Accessibility Guidelines (WCAG) 2.2](https://www.w3.org/TR/WCAG/)\n- [The A11Y Project](https://www.a11yproject.com/)\n- [MDN accessibility documentation](https://developer.mozilla.org/en-US/docs/Web/Accessibility)\n- [Tenon.io Accessibility Checker](https://tenon.io/)\n- [Color Contrast Analyser (CCA)](https://www.tpgi.com/color-contrast-checker/)\n- [\"HTML Codesniffer\" bookmarklet for identifying accessibility issues](https://github.com/squizlabs/HTML_CodeSniffer)\n- [Microsoft Accessibility Insights](https://accessibilityinsights.io/)\n- [Deque Axe testing tools](https://www.deque.com/axe/)\n- [Introduction to Web Accessibility](https://www.w3.org/WAI/fundamentals/accessibility-intro/)","src/content/docs/getting-started/accessibility.mdx","7297ba669fe1faac","getting-started/accessibility.mdx","getting-started/best-practices",{"id":693,"data":695,"body":698,"filePath":699,"digest":700,"legacyId":701,"deferredRender":139},{"description":696,"title":697},"Learn about some of the best practices we've gathered from years of working on and using Bootstrap.","Best practices","We've designed and developed Bootstrap to work in a number of environments. Here are some of the best practices we've gathered from years of working on and using it ourselves.\n\n\u003CCallout>\n**Heads up!** This copy is a work in progress.\n\u003C/Callout>\n\n### General outline\n\n- Working with CSS\n- Working with Sass files\n- Building new CSS components\n- Working with flexbox\n- Ask in [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions)","src/content/docs/getting-started/best-practices.mdx","9554737dfd91abde","getting-started/best-practices.mdx","getting-started/browsers-devices",{"id":702,"data":704,"body":707,"filePath":708,"digest":709,"legacyId":710,"deferredRender":139},{"description":705,"title":706,"toc":139},"Learn about the browsers and devices, from modern to old, that are supported by Bootstrap, including known quirks and bugs for each.","Browsers and devices","## Supported browsers\n\nBootstrap supports the **latest, stable releases** of all major browsers and platforms.\n\nAlternative browsers which use the latest version of WebKit, Blink, or Gecko, whether directly or via the platform's web view API, are not explicitly supported. However, Bootstrap should (in most cases) display and function correctly in these browsers as well. More specific support information is provided below.\n\nYou can find our supported range of browsers and their versions [in our `.browserslistrc file`]([[config:repo]]/blob/v[[config:current_version]]/.browserslistrc):\n\n\u003CCode lang=\"plaintext\" filePath=\".browserslistrc\" />\n\nWe use [Autoprefixer](https://github.com/postcss/autoprefixer) to handle intended browser support via CSS prefixes, which uses [Browserslist](https://github.com/browserslist/browserslist) to manage these browser versions. Consult their documentation for how to integrate these tools into your projects.\n\n### Mobile devices\n\nGenerally speaking, Bootstrap supports the latest versions of each major platform's default browsers. Note that proxy browsers (such as Opera Mini, Opera Mobile's Turbo mode, UC Browser Mini, Amazon Silk) are not supported.\n\n\u003CBsTable class=\"table\">\n| | Chrome | Firefox | Safari | Android Browser & WebView |\n| --- | --- | --- | --- | --- |\n| **Android** | Supported | Supported | \u003Cspan class=\"text-body-secondary\">—\u003C/span> | v6.0+ |\n| **iOS** | Supported | Supported | Supported | \u003Cspan class=\"text-body-secondary\">—\u003C/span> |\n\u003C/BsTable>\n\n### Desktop browsers\n\nSimilarly, the latest versions of most desktop browsers are supported.\n\n\u003CBsTable class=\"table\">\n| | Chrome | Firefox | Microsoft Edge | Opera | Safari |\n| --- | --- | --- | --- | --- | --- |\n| **Mac** | Supported | Supported | Supported | Supported | Supported |\n| **Windows** | Supported | Supported | Supported | Supported | \u003Cspan class=\"text-body-secondary\">—\u003C/span> |\n\u003C/BsTable>\n\nFor Firefox, in addition to the latest normal stable release, we also support the latest [Extended Support Release (ESR)](https://www.mozilla.org/en-US/firefox/enterprise/) version of Firefox.\n\nUnofficially, Bootstrap should look and behave well enough in Chromium and Chrome for Linux, and Firefox for Linux, though they are not officially supported.\n\n## Internet Explorer\n\nInternet Explorer is not supported. **If you require Internet Explorer support, please use Bootstrap v4.**\n\n## Modals and dropdowns on mobile\n\n### Overflow and scrolling\n\nSupport for `overflow: hidden;` on the `\u003Cbody>` element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices' browsers, the `\u003Cbody>` content will begin to scroll. See [Chrome bug #175502](https://issues.chromium.org/issues/40301599) (fixed in Chrome v40) and [WebKit bug #153852](https://bugs.webkit.org/show_bug.cgi?id=153852).\n\n### iOS text fields and scrolling\n\nAs of iOS 9.2, while a modal is open, if the initial touch of a scroll gesture is within the boundary of a textual `\u003Cinput>` or a `\u003Ctextarea>`, the `\u003Cbody>` content underneath the modal will be scrolled instead of the modal itself. See [WebKit bug #153856](https://bugs.webkit.org/show_bug.cgi?id=153856).\n\n### Navbar Dropdowns\n\nThe `.dropdown-backdrop` element isn't used on iOS in the nav because of the complexity of z-indexing. Thus, to close dropdowns in navbars, you must directly click the dropdown element (or [any other element which will fire a click event in iOS](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile)).\n\n## Browser zooming\n\nPage zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.\n\n## Validators\n\nIn order to provide the best possible experience to old and buggy browsers, Bootstrap uses [CSS browser hacks](http://browserhacks.com/) in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.\n\nThese validation warnings don't matter in practice since the non-hacky portion of our CSS does fully validate and the hacky portions don't interfere with the proper functioning of the non-hacky portion, hence why we deliberately ignore these particular warnings.\n\nOur HTML docs likewise have some trivial and inconsequential HTML validation warnings due to our inclusion of a workaround for [a certain Firefox bug](https://bugzilla.mozilla.org/show_bug.cgi?id=654072).","src/content/docs/getting-started/browsers-devices.mdx","9d81f7891458ea64","getting-started/browsers-devices.mdx","getting-started/contents",{"id":711,"data":713,"body":716,"filePath":717,"digest":718,"legacyId":719,"deferredRender":139},{"description":714,"title":715,"toc":139},"Discover what's included in Bootstrap, including our compiled and source code flavors.","Contents","## Compiled Bootstrap\n\nOnce downloaded, unzip the compressed folder and you'll see something like this:\n\n{/* NOTE: This info is intentionally duplicated in the README. Copy any changes made here over to the README too, but be sure to keep in mind to add the `dist` folder. */}\n\n```text\nbootstrap/\n├── css/\n│ ├── bootstrap-grid.css\n│ ├── bootstrap-grid.css.map\n│ ├── bootstrap-grid.min.css\n│ ├── bootstrap-grid.min.css.map\n│ ├── bootstrap-grid.rtl.css\n│ ├── bootstrap-grid.rtl.css.map\n│ ├── bootstrap-grid.rtl.min.css\n│ ├── bootstrap-grid.rtl.min.css.map\n│ ├── bootstrap-reboot.css\n│ ├── bootstrap-reboot.css.map\n│ ├── bootstrap-reboot.min.css\n│ ├── bootstrap-reboot.min.css.map\n│ ├── bootstrap-reboot.rtl.css\n│ ├── bootstrap-reboot.rtl.css.map\n│ ├── bootstrap-reboot.rtl.min.css\n│ ├── bootstrap-reboot.rtl.min.css.map\n│ ├── bootstrap-utilities.css\n│ ├── bootstrap-utilities.css.map\n│ ├── bootstrap-utilities.min.css\n│ ├── bootstrap-utilities.min.css.map\n│ ├── bootstrap-utilities.rtl.css\n│ ├── bootstrap-utilities.rtl.css.map\n│ ├── bootstrap-utilities.rtl.min.css\n│ ├── bootstrap-utilities.rtl.min.css.map\n│ ├── bootstrap.css\n│ ├── bootstrap.css.map\n│ ├── bootstrap.min.css\n│ ├── bootstrap.min.css.map\n│ ├── bootstrap.rtl.css\n│ ├── bootstrap.rtl.css.map\n│ ├── bootstrap.rtl.min.css\n│ └── bootstrap.rtl.min.css.map\n└── js/\n ├── bootstrap.bundle.js\n ├── bootstrap.bundle.js.map\n ├── bootstrap.bundle.min.js\n ├── bootstrap.bundle.min.js.map\n ├── bootstrap.esm.js\n ├── bootstrap.esm.js.map\n ├── bootstrap.esm.min.js\n ├── bootstrap.esm.min.js.map\n ├── bootstrap.js\n ├── bootstrap.js.map\n ├── bootstrap.min.js\n └── bootstrap.min.js.map\n```\n\nThis is the most basic form of Bootstrap: compiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). Source maps](https://web.dev/articles/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/docs/v2/).\n\n### CSS files\n\nBootstrap includes a handful of options for including some or all of our compiled CSS.\n\n\u003CBsTable class=\"table\">\n| CSS files | Layout | Content | Components | Utilities |\n| --- | --- | --- | --- | --- |\n| `bootstrap.css`\u003Cbr/> `bootstrap.min.css`\u003Cbr/> `bootstrap.rtl.css`\u003Cbr/> `bootstrap.rtl.min.css` | Included | Included | Included | Included |\n| `bootstrap-grid.css`\u003Cbr/> `bootstrap-grid.rtl.css`\u003Cbr/> `bootstrap-grid.min.css`\u003Cbr/> `bootstrap-grid.rtl.min.css` | [Only grid system]([[docsref:/layout/grid]]) | — | — | [Only flex utilities]([[docsref:/utilities/flex]]) |\n| `bootstrap-utilities.css`\u003Cbr/> `bootstrap-utilities.rtl.css`\u003Cbr/> `bootstrap-utilities.min.css`\u003Cbr/> `bootstrap-utilities.rtl.min.css` | — | — | — | Included |\n| `bootstrap-reboot.css`\u003Cbr/> `bootstrap-reboot.rtl.css`\u003Cbr/> `bootstrap-reboot.min.css`\u003Cbr/> `bootstrap-reboot.rtl.min.css` | — | [Only Reboot]([[docsref:/content/reboot]]) | — | — |\n\u003C/BsTable>\n\n### JS files\n\nSimilarly, we have options for including some or all of our compiled JavaScript.\n\n\u003CBsTable class=\"table\">\n| JS Files | Popper |\n| --- | --- |\n| `bootstrap.bundle.js`\u003Cbr/> `bootstrap.bundle.min.js`\u003Cbr/> | Included |\n| `bootstrap.js`\u003Cbr/> `bootstrap.min.js`\u003Cbr/> | – |\n\u003C/BsTable>\n\n## Bootstrap source code\n\nThe Bootstrap source code download includes the compiled CSS and JavaScript assets, along with source Sass, JavaScript, and documentation. More specifically, it includes the following and more:\n\n```text\nbootstrap/\n├── dist/\n│ ├── css/\n│ └── js/\n├── site/\n│ └──content/\n│ └── docs/\n│ └── [[config:docs_version]]/\n│ └── examples/\n├── js/\n└── scss/\n```\n\nThe `scss/` and `js/` are the source code for our CSS and JavaScript. The `dist/` folder includes everything listed in the compiled download section above. The `site/content/docs/` folder includes the source code for our hosted documentation, including our live examples of Bootstrap usage.\n\nBeyond that, any other included file provides support for packages, license information, and development.","src/content/docs/getting-started/contents.mdx","89c302ad293a57d7","getting-started/contents.mdx","getting-started/contribute",{"id":720,"data":722,"body":727,"filePath":728,"digest":729,"legacyId":730,"deferredRender":139},{"added":723,"aliases":724,"description":725,"title":726,"toc":139},{"show_badge":345,"version":519},"/docs/[[config:docs_version]]/getting-started/build-tools/","Help develop Bootstrap with our documentation build scripts and tests.","Contribute","## Tooling setup\n\nBootstrap uses [npm scripts](https://docs.npmjs.com/misc/scripts/) to build the documentation and compile source files. Our [package.json]([[config:repo]]/blob/v[[config:current_version]]/package.json) houses these scripts for compiling code, running tests, and more. These aren't intended for use outside our repository and documentation.\n\nTo use our build system and run our documentation locally, you'll need a copy of Bootstrap's source files and Node. Follow these steps and you should be ready to rock:\n\n1. [Download and install Node.js](https://nodejs.org/en/download/), which we use to manage our dependencies.\n2. Either [download Bootstrap's sources]([[config:download.source]]) or fork and clone [Bootstrap's repository]([[config:repo]]).\n3. Navigate to the root `/bootstrap` directory and run `npm install` to install our local dependencies listed in [package.json]([[config:repo]]/blob/v[[config:current_version]]/package.json).\n\nWhen completed, you'll be able to run the various commands provided from the command line.\n\n## Using npm scripts\n\nOur [package.json]([[config:repo]]/blob/v[[config:current_version]]/package.json) includes numerous tasks for developing the project. Run `npm run` to see all the npm scripts in your terminal. **Primary tasks include:**\n\n\u003CBsTable>\n| Task | Description |\n| --- | --- |\n| `npm start` | Compiles CSS and JavaScript, builds the documentation, and starts a local server. |\n| `npm run dist` | Creates the `dist/` directory with compiled files. Uses [Sass](https://sass-lang.com/), [Autoprefixer](https://github.com/postcss/autoprefixer), and [terser](https://github.com/terser/terser). |\n| `npm test` | Runs tests locally after running `npm run dist` |\n| `npm run docs-serve` | Builds and runs the documentation locally. |\n\u003C/BsTable>\n\n\u003CCallout name=\"info-npm-starter\" />\n\n## Sass\n\nBootstrap uses [Dart Sass](https://sass-lang.com/dart-sass/) for compiling our Sass source files into CSS files (included in our build process), and we recommend you do the same if you're compiling Sass using your own asset pipeline. We previously used Node Sass for Bootstrap v4, but LibSass and packages built on top of it, including Node Sass, are now [deprecated](https://sass-lang.com/blog/libsass-is-deprecated/).\n\nDart Sass uses a rounding precision of 10 and for efficiency reasons does not allow adjustment of this value. We don't lower this precision during further processing of our generated CSS, such as during minification, but if you chose to do so we recommend maintaining a precision of at least 6 to prevent issues with browser rounding.\n\n## Autoprefixer\n\nBootstrap uses [Autoprefixer](https://github.com/postcss/autoprefixer) (included in our build process) to automatically add vendor prefixes to some CSS properties at build time. Doing so saves us time and code by allowing us to write key parts of our CSS a single time while eliminating the need for vendor mixins like those found in v3.\n\nWe maintain the list of browsers supported through Autoprefixer in a separate file within our GitHub repository. See [.browserslistrc]([[config:repo]]/blob/v[[config:current_version]]/.browserslistrc) for details.\n\n## RTLCSS\n\nBootstrap uses [RTLCSS](https://rtlcss.com/) to process compiled CSS and convert them to RTL – basically replacing horizontal direction aware properties (e.g. `padding-left`) with their opposite. It allows us only write our CSS a single time and make minor tweaks using RTLCSS [control](https://rtlcss.com/learn/usage-guide/control-directives/) and [value](https://rtlcss.com/learn/usage-guide/value-directives/) directives.\n\n## Local documentation\n\nRunning our documentation locally requires the use of Astro. Astro is a modern static site generator that allows us to build our documentation with a combination of Markdown and React components. Here's how to get it started:\n\n1. Run through the [tooling setup](#tooling-setup) above to install all dependencies.\n2. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line.\n3. Open `http://localhost:4321/` in your browser, and voilà.\n\nLearn more about using Astro by reading its [documentation](https://docs.astro.build/en/getting-started/).\n\n## Troubleshooting\n\nShould you encounter problems with installing dependencies, uninstall all previous dependency versions (global and local). Then, rerun `npm install`.","src/content/docs/getting-started/contribute.mdx","8bc124b03a3fa880","getting-started/contribute.mdx","getting-started/download",{"id":731,"data":733,"body":736,"filePath":737,"digest":738,"legacyId":739,"deferredRender":139},{"description":734,"title":735,"toc":139},"Download Bootstrap to get the compiled CSS and JavaScript, source code, or include it with your favorite package managers like npm, RubyGems, and more.","Download","## Compiled CSS and JS\n\nDownload ready-to-use compiled code for **Bootstrap v[[config:current_version]]** to easily drop into your project, which includes:\n\n- Compiled and minified CSS bundles (see [CSS files comparison]([[docsref:/getting-started/contents#css-files]]))\n- Compiled and minified JavaScript plugins (see [JS files comparison]([[docsref:/getting-started/contents#js-files]]))\n\nThis doesn't include documentation, source files, or any optional JavaScript dependencies like Popper.\n\n\u003Ca href=\"[[config:download.dist]]\" class=\"btn btn-bd-primary\">Download\u003C/a>\n\n## Source files\n\nCompile Bootstrap with your own asset pipeline by downloading our source Sass, JavaScript, and documentation files. This option requires some additional tooling:\n\n- [Sass compiler]([[docsref:/getting-started/contribute#sass]]) for compiling Sass source files into CSS files\n- [Autoprefixer](https://github.com/postcss/autoprefixer) for CSS vendor prefixing\n\nShould you require our full set of [build tools]([[docsref:/getting-started/contribute#tooling-setup]]), they are included for developing Bootstrap and its docs, but they're likely unsuitable for your own purposes.\n\n\u003Ca href=\"[[config:download.source]]\" class=\"btn btn-bd-primary\">Download source\u003C/a>\n\n## Examples\n\nIf you want to download and examine our [examples]([[docsref:/examples]]), you can grab the already built examples:\n\n\u003Ca href=\"[[config:download.dist_examples]]\" class=\"btn btn-bd-primary\">Download Examples\u003C/a>\n\n## CDN via jsDelivr\n\nSkip the download with [jsDelivr](https://www.jsdelivr.com/) to deliver cached version of Bootstrap's compiled CSS and JS to your project.\n\n```html\n\u003Clink href=\"[[config:cdn.css]]\" rel=\"stylesheet\" integrity=\"[[config:cdn.css_hash]]\" crossorigin=\"anonymous\">\n\u003Cscript src=\"[[config:cdn.js_bundle]]\" integrity=\"[[config:cdn.js_bundle_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n```\n\nIf you're using our compiled JavaScript and prefer to include Popper separately, add Popper before our JS, via a CDN preferably.\n\n```html\n\u003Cscript src=\"[[config:cdn.popper]]\" integrity=\"[[config:cdn.popper_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n\u003Cscript src=\"[[config:cdn.js]]\" integrity=\"[[config:cdn.js_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n```\n\n### Alternative CDNs\n\nWe recommend [jsDelivr](https://www.jsdelivr.com/) and use it ourselves in our documentation. However, in some cases—like in some specific countries or environments—you may need to use other CDN providers like [cdnjs](https://cdnjs.com/) or [unpkg](https://unpkg.com/).\n\nYou'll find the same files on these CDN providers, albeit with different URLs. With cdnjs, you can [use this direct Bootstrap package link](https://cdnjs.com/libraries/bootstrap) to copy and paste ready-to-use HTML snippets for each dist file from any version of Bootstrap.\n\n\u003CCallout type=\"warning\">\n**If the SRI hashes differ for a given file, you shouldn't use the files from that CDN, because it means that the file was modified by someone else.**\n\u003C/Callout>\n\nNote that you should compare same length hashes, e.g. `sha384` with `sha384`, otherwise it's expected for them to be different.\nAs such, you can use an online tool like [SRI Hash Generator](https://www.srihash.org/) to make sure that the hashes are the same for a given file.\nAlternatively, assuming you have OpenSSL installed, you can achieve the same from the CLI, for example:\n\n```sh\nopenssl dgst -sha384 -binary bootstrap.min.js | openssl base64 -A\n```\n\n## Package managers\n\nPull in Bootstrap's **source files** into nearly any project with some of the most popular package managers. No matter the package manager, Bootstrap will **require a [Sass compiler]([[docsref:/getting-started/contribute#sass]]) and [Autoprefixer](https://github.com/postcss/autoprefixer)** for a setup that matches our official compiled versions.\n\n### npm\n\nInstall Bootstrap in your Node.js powered apps with [the npm package](https://www.npmjs.com/package/bootstrap):\n\n```sh\nnpm install bootstrap@[[config:current_version]]\n```\n\n`const bootstrap = require('bootstrap')` or `import bootstrap from 'bootstrap'` will load all of Bootstrap's plugins onto a `bootstrap` object.\nThe `bootstrap` module itself exports all of our plugins. You can manually load Bootstrap's plugins individually by loading the `/js/dist/*.js` files under the package's top-level directory.\n\nBootstrap's `package.json` contains some additional metadata under the following keys:\n\n- `sass` - path to Bootstrap's main [Sass](https://sass-lang.com/) source file\n- `style` - path to Bootstrap's non-minified CSS that's been compiled using the default settings (no customization)\n\n\u003CCallout name=\"info-npm-starter\" />\n\n### yarn\n\nInstall Bootstrap in your Node.js powered apps with [the yarn package](https://yarnpkg.com/en/package/bootstrap):\n\n```sh\nyarn add bootstrap@[[config:current_version]]\n```\n\n\u003CCallout type=\"warning\">\n**Yarn 2+ (aka Yarn Berry) doesn't support the `node_modules` directory by default**: using our [Sass & JS example](https://github.com/twbs/examples/tree/main/sass-js) needs some adjustments:\n\n```sh\nyarn config set nodeLinker node-modules # Use the node_modules linker\ntouch yarn.lock # Create an empty yarn.lock file\nyarn install # Install the dependencies\nyarn start # Start the project\n```\n\u003C/Callout>\n\n### RubyGems\n\nInstall Bootstrap in your Ruby apps using [Bundler](https://bundler.io/) (**recommended**) and [RubyGems](https://rubygems.org/) by adding the following line to your [`Gemfile`](https://bundler.io/guides/gemfile.html):\n\n```ruby\ngem 'bootstrap', '~> [[config:current_ruby_version]]'\n```\n\nAlternatively, if you're not using Bundler, you can install the gem by running this command:\n\n```sh\ngem install bootstrap -v [[config:current_ruby_version]]\n```\n\n[See the gem's README](https://github.com/twbs/bootstrap-rubygem/blob/main/README.md) for further details.\n\n### Composer\n\nYou can also install and manage Bootstrap's Sass and JavaScript using [Composer](https://getcomposer.org/):\n\n```sh\ncomposer require twbs/bootstrap:[[config:current_version]]\n```\n\n### NuGet\n\nIf you develop in .NET Framework, you can also install and manage Bootstrap's [CSS](https://www.nuget.org/packages/bootstrap/) or [Sass](https://www.nuget.org/packages/bootstrap.sass/) and JavaScript using [NuGet](https://www.nuget.org/). Newer projects should use [libman](https://learn.microsoft.com/en-us/aspnet/core/client-side/libman/) or another method as NuGet is designed for compiled code, not frontend assets.\n\n```powershell\nInstall-Package bootstrap\n```\n\n```powershell\nInstall-Package bootstrap.sass\n```","src/content/docs/getting-started/download.mdx","4b42e9d2b86449f9","getting-started/download.mdx","getting-started/introduction",{"id":740,"data":742,"body":749,"filePath":750,"digest":751,"legacyId":752,"deferredRender":139},{"aliases":743,"description":747,"title":748,"toc":139},[744,745,746],"/docs/[[config:docs_version]]/getting-started/","/docs/getting-started/","/getting-started/","Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in minutes.","Get started with Bootstrap","## Quick start\n\nGet started by including Bootstrap's production-ready CSS and JavaScript via CDN without the need for any build steps. See it in practice with this [Bootstrap CodePen demo](https://codepen.io/team/bootstrap/pen/qBamdLj).\n\n\u003Cbr/>\n\n1. **Create a new `index.html` file in your project root.** Include the `\u003Cmeta name=\"viewport\">` tag as well for [proper responsive behavior](https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag) in mobile devices.\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap demo\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, world!\u003C/h1>\n \u003C/body>\n \u003C/html>\n ```\n\n2. **Include Bootstrap's CSS and JS.** Place the `\u003Clink>` tag in the `\u003Chead>` for our CSS, and the `\u003Cscript>` tag for our JavaScript bundle (including Popper for positioning dropdowns, popovers, and tooltips) before the closing `\u003C/body>`. Learn more about our [CDN links](#cdn-links).\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap demo\u003C/title>\n \u003Clink href=\"[[config:cdn.css]]\" rel=\"stylesheet\" integrity=\"[[config:cdn.css_hash]]\" crossorigin=\"anonymous\">\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, world!\u003C/h1>\n \u003Cscript src=\"[[config:cdn.js_bundle]]\" integrity=\"[[config:cdn.js_bundle_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n \u003C/body>\n \u003C/html>\n ```\n\n You can also include [Popper](https://popper.js.org/docs/v2/) and our JS separately. If you don't plan to use dropdowns, popovers, or tooltips, save some kilobytes by not including Popper.\n\n ```html\n \u003Cscript src=\"[[config:cdn.popper]]\" integrity=\"[[config:cdn.popper_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n \u003Cscript src=\"[[config:cdn.js]]\" integrity=\"[[config:cdn.js_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n ```\n\n3. **Hello, world!** Open the page in your browser of choice to see your Bootstrapped page. Now you can start building with Bootstrap by creating your own [layout]([[docsref:/layout/grid]]), adding dozens of [components]([[docsref:/components/buttons]]), and utilizing [our official examples]([[docsref:/examples]]).\n\n## CDN links\n\nAs reference, here are our primary CDN links.\n\n\u003CBsTable>\n| Description | URL |\n| --- | --- |\n| CSS | `[[config:cdn.css]]` |\n| JS | `[[config:cdn.js_bundle]]` |\n\u003C/BsTable>\n\nYou can also use the CDN to fetch any of our [additional builds listed in the Contents page]([[docsref:/getting-started/contents]]).\n\n## Next steps\n\n- Read a bit more about some [important global environment settings](#important-globals) that Bootstrap utilizes.\n- Read about what's included in Bootstrap in our [contents section]([[docsref:/getting-started/contents/]]) and the list of [components that require JavaScript](#js-components) below.\n- Need a little more power? Consider building with Bootstrap by [including the source files via package manager]([[docsref:/getting-started/download#package-managers]]).\n- Looking to use Bootstrap as a module with `\u003Cscript type=\"module\">`? Please refer to our [using Bootstrap as a module]([[docsref:/getting-started/javascript#using-bootstrap-as-a-module]]) section.\n\n## JS components\n\nCurious which components explicitly require our JavaScript and Popper? If you're at all unsure about the general page structure, keep reading for an example page template.\n\n- Accordions for extending our Collapse plugin\n- Alerts for dismissing\n- Buttons for toggling states and checkbox/radio functionality\n- Carousel for all slide behaviors, controls, and indicators\n- Collapse for toggling visibility of content\n- Dropdowns for displaying and positioning (also requires [Popper](https://popper.js.org/docs/v2/))\n- Modals for displaying, positioning, and scroll behavior\n- Navbar for extending our Collapse and Offcanvas plugins to implement responsive behaviors\n- Navs with the Tab plugin for toggling content panes\n- Offcanvases for displaying, positioning, and scroll behavior\n- Scrollspy for scroll behavior and navigation updates\n- Toasts for displaying and dismissing\n- Tooltips and popovers for displaying and positioning (also requires [Popper](https://popper.js.org/docs/v2/))\n\n## Important globals\n\nBootstrap employs a handful of important global styles and settings, all of which are almost exclusively geared towards the *normalization* of cross browser styles. Let's dive in.\n\n### HTML5 doctype\n\nBootstrap requires the use of the HTML5 doctype. Without it, you'll see some funky and incomplete styling.\n\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"en\">\n ...\n\u003C/html>\n```\n\n### Viewport meta\n\nBootstrap is developed *mobile first*, a strategy in which we optimize code for mobile devices first and then scale up components as necessary using CSS media queries. To ensure proper rendering and touch zooming for all devices, add the responsive viewport meta tag to your `\u003Chead>`.\n\n```html\n\u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n```\n\nYou can see an example of this in action in the [quick start](#quick-start).\n\n### Box-sizing\n\nFor more straightforward sizing in CSS, we switch the global `box-sizing` value from `content-box` to `border-box`. This ensures `padding` does not affect the final computed width of an element, but it can cause problems with some third-party software like Google Maps and Google Custom Search Engine.\n\nOn the rare occasion you need to override it, use something like the following:\n\n```css\n.selector-for-some-widget {\n box-sizing: content-box;\n}\n```\n\nWith the above snippet, nested elements—including generated content via `::before` and `::after`—will all inherit the specified `box-sizing` for that `.selector-for-some-widget`.\n\nLearn more about [box model and sizing at CSS Tricks](https://css-tricks.com/box-sizing/).\n\n### Reboot\n\nFor improved cross-browser rendering, we use [Reboot]([[docsref:/content/reboot]]) to correct inconsistencies across browsers and devices while providing slightly more opinionated resets to common HTML elements.\n\n## Community\n\nStay up-to-date on the development of Bootstrap and reach out to the community with these helpful resources.\n\n- Read and subscribe to [The Official Bootstrap Blog]([[config:blog]]).\n- Ask questions and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).\n- Discuss, ask questions, and more on [the community Discord](https://discord.gg/bZUvakRU3M) or [Bootstrap subreddit](https://www.reddit.com/r/bootstrap/).\n- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.\n- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)).\n- Developers should use the keyword `bootstrap` on packages that modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/search?q=keywords:bootstrap) or similar delivery mechanisms for maximum discoverability.\n\nYou can also follow [@getbootstrap on Twitter](https://twitter.com/[[config:twitter]]) for the latest gossip and awesome music videos.","src/content/docs/getting-started/introduction.mdx","76999280ffc14984","getting-started/introduction.mdx","getting-started/javascript",{"id":753,"data":755,"body":758,"filePath":759,"digest":760,"legacyId":761,"deferredRender":139},{"description":756,"title":757,"toc":139},"Bring Bootstrap to life with our optional JavaScript plugins. Learn about each plugin, our data and programmatic API options, and more.","JavaScript","## Individual or compiled\n\nPlugins can be included individually (using Bootstrap's individual `js/dist/*.js`), or all at once using `bootstrap.js` or the minified `bootstrap.min.js` (don't include both).\n\nIf you use a bundler (Webpack, Parcel, Vite...), you can use `/js/dist/*.js` files which are UMD ready.\n\n## Usage with JavaScript frameworks\n\nWhile the Bootstrap CSS can be used with any framework, **the Bootstrap JavaScript is not fully compatible with JavaScript frameworks like React, Vue, and Angular** which assume full knowledge of the DOM. Both Bootstrap and the framework may attempt to mutate the same DOM element, resulting in bugs like dropdowns that are stuck in the \"open\" position.\n\nA better alternative for those using this type of frameworks is to use a framework-specific package **instead of** the Bootstrap JavaScript. Here are some of the most popular options:\n\n- React: [React Bootstrap](https://react-bootstrap.github.io/)\n \u003CCallout>\n **Try it yourself!** Download the source code and working demo for using Bootstrap with React, Next.js, and React Bootstrap from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/react-nextjs). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/react-nextjs?file=src%2Fpages%2Findex.tsx).\n \u003C/Callout>\n- Vue: [BootstrapVue](https://bootstrap-vue.org/) (Bootstrap 4)\n- Vue 3: [BootstrapVueNext](https://bootstrap-vue-next.github.io/bootstrap-vue-next/) (Bootstrap 5, currently in alpha)\n- Angular: [ng-bootstrap](https://ng-bootstrap.github.io/) or [ngx-bootstrap](https://valor-software.com/ngx-bootstrap)\n\n## Using Bootstrap as a module\n\n\u003CCallout>\n**Try it yourself!** Download the source code and working demo for using Bootstrap as an ES module from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/sass-js-esm). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/sass-js-esm?file=index.html).\n\u003C/Callout>\n\nWe provide a version of Bootstrap built as `ESM` (`bootstrap.esm.js` and `bootstrap.esm.min.js`) which allows you to use Bootstrap as a module in the browser, if your [targeted browsers support it](https://caniuse.com/es6-module).\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```html\n\u003Cscript type=\"module\">\n import { Toast } from 'bootstrap.esm.min.js'\n\n Array.from(document.querySelectorAll('.toast'))\n .forEach(toastNode => new Toast(toastNode))\n\u003C/script>\n```\n\nCompared to JS bundlers, using ESM in the browser requires you to use the full path and filename instead of the module name. [Read more about JS modules in the browser.](https://v8.dev/features/modules#specifiers) That's why we use `'bootstrap.esm.min.js'` instead of `'bootstrap'` above. However, this is further complicated by our Popper dependency, which imports Popper into our JavaScript like so:\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```js\nimport * as Popper from \"@popperjs/core\"\n```\n\nIf you try this as-is, you'll see an error in the console like the following:\n\n```text\nUncaught TypeError: Failed to resolve module specifier \"@popperjs/core\". Relative references must start with either \"/\", \"./\", or \"../\".\n```\n\nTo fix this, you can use an `importmap` to resolve the arbitrary module names to complete paths. If your [targeted browsers](https://caniuse.com/?search=importmap) do not support `importmap`, you'll need to use the [es-module-shims](https://github.com/guybedford/es-module-shims) project. Here's how it works for Bootstrap and Popper:\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Clink href=\"[[config:cdn.css]]\" rel=\"stylesheet\" integrity=\"[[config:cdn.css_hash]]\" crossorigin=\"anonymous\">\n \u003Ctitle>Hello, modularity!\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, modularity!\u003C/h1>\n \u003Cbutton id=\"popoverButton\" type=\"button\" class=\"btn btn-primary btn-lg\" data-bs-toggle=\"popover\" title=\"ESM in Browser\" data-bs-content=\"Bang!\">Custom popover\u003C/button>\n\n \u003Cscript async src=\"https://cdn.jsdelivr.net/npm/es-module-shims@1/dist/es-module-shims.min.js\" crossorigin=\"anonymous\">\u003C/script>\n \u003Cscript type=\"importmap\">\n {\n \"imports\": {\n \"@popperjs/core\": \"[[config:cdn.popper_esm]]\",\n \"bootstrap\": \"https://cdn.jsdelivr.net/npm/bootstrap@[[config:current_version]]/dist/js/bootstrap.esm.min.js\"\n }\n }\n \u003C/script>\n \u003Cscript type=\"module\">\n import * as bootstrap from 'bootstrap'\n\n new bootstrap.Popover(document.getElementById('popoverButton'))\n \u003C/script>\n \u003C/body>\n\u003C/html>\n```\n\n## Dependencies\n\nSome plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs.\n\nOur dropdowns, popovers, and tooltips also depend on [Popper](https://popper.js.org/docs/v2/).\n\n## Data attributes\n\nNearly all Bootstrap plugins can be enabled and configured through HTML alone with data attributes (our preferred way of using JavaScript functionality). Be sure to **only use one set of data attributes on a single element** (e.g., you cannot trigger a tooltip and modal from the same button.)\n\n\u003CJsDataAttributes />\n\n## Selectors\n\nWe use the native `querySelector` and `querySelectorAll` methods to query DOM elements for performance reasons, so you must use [valid selectors](https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier). If you use special selectors like `collapse:Example`, be sure to escape them.\n\n## Events\n\nBootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. `show`) is triggered at the start of an event, and its past participle form (ex. `shown`) is triggered on the completion of an action.\n\nAll infinitive events provide [`preventDefault()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) functionality. This provides the ability to stop the execution of an action before it starts. Returning false from an event handler will also automatically call `preventDefault()`.\n\n```js\nconst myModal = document.querySelector('#myModal')\n\nmyModal.addEventListener('show.bs.modal', event => {\n return event.preventDefault() // stops modal from being shown\n})\n```\n\n## Programmatic API\n\nAll constructors accept an optional options object or nothing (which initiates a plugin with its default behavior):\n\n```js\nconst myModalEl = document.querySelector('#myModal')\nconst modal = new bootstrap.Modal(myModalEl) // initialized with defaults\n\nconst configObject = { keyboard: false }\nconst modal1 = new bootstrap.Modal(myModalEl, configObject) // initialized with no keyboard\n```\n\nIf you'd like to get a particular plugin instance, each plugin exposes a `getInstance` method. For example, to retrieve an instance directly from an element:\n\n```js\nbootstrap.Popover.getInstance(myPopoverEl)\n```\n\nThis method will return `null` if an instance is not initiated over the requested element.\n\nAlternatively, `getOrCreateInstance` can be used to get the instance associated with a DOM element, or create a new one in case it wasn't initialized.\n\n```js\nbootstrap.Popover.getOrCreateInstance(myPopoverEl, configObject)\n```\n\nIn case an instance wasn't initialized, it may accept and use an optional configuration object as second argument.\n\n### CSS selectors in constructors\n\nIn addition to the `getInstance` and `getOrCreateInstance` methods, all plugin constructors can accept a DOM element or a valid [CSS selector](#selectors) as the first argument. Plugin elements are found with the `querySelector` method since our plugins only support a single element.\n\n```js\nconst modal = new bootstrap.Modal('#myModal')\nconst dropdown = new bootstrap.Dropdown('[data-bs-toggle=\"dropdown\"]')\nconst offcanvas = bootstrap.Offcanvas.getInstance('#myOffcanvas')\nconst alert = bootstrap.Alert.getOrCreateInstance('#myAlert')\n```\n\n### Asynchronous functions and transitions\n\nAll programmatic API methods are **asynchronous** and return to the caller once the transition is started, but **before it ends**. In order to execute an action once the transition is complete, you can listen to the corresponding event.\n\n```js\nconst myCollapseEl = document.querySelector('#myCollapse')\n\nmyCollapseEl.addEventListener('shown.bs.collapse', event => {\n // Action to execute once the collapsible area is expanded\n})\n```\n\nIn addition, a method call on a **transitioning component will be ignored**.\n\n```js\nconst myCarouselEl = document.querySelector('#myCarousel')\nconst carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance\n\nmyCarouselEl.addEventListener('slid.bs.carousel', event => {\n carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished\n})\n\ncarousel.to('1') // Will start sliding to the slide 1 and returns to the caller\ncarousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!\n```\n\n#### `dispose` method\n\nWhile it may seem correct to use the `dispose` method immediately after `hide()`, it will lead to incorrect results. Here's an example of the problem use:\n\n```js\nconst myModal = document.querySelector('#myModal')\nmyModal.hide() // it is asynchronous\n\nmyModal.addEventListener('shown.bs.hidden', event => {\n myModal.dispose()\n})\n```\n\n### Default settings\n\nYou can change the default settings for a plugin by modifying the plugin's `Constructor.Default` object:\n\n```js\n// changes default for the modal plugin's `keyboard` option to false\nbootstrap.Modal.Default.keyboard = false\n```\n\n## Methods and properties\n\nEvery Bootstrap plugin exposes the following methods and static properties.\n\n\u003CBsTable class=\"table\">\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's modal. (Removes stored data on the DOM element) |\n| `getInstance` | *Static* method which allows you to get the modal instance associated with a DOM element. |\n| `getOrCreateInstance` | *Static* method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n\u003C/BsTable>\n\n\u003CBsTable class=\"table\">\n| Static property | Description |\n| --- | --- |\n| `NAME` | Returns the plugin name. (Example: `bootstrap.Tooltip.NAME`) |\n| `VERSION` | The version of each of Bootstrap's plugins can be accessed via the `VERSION` property of the plugin's constructor (Example: `bootstrap.Tooltip.VERSION`) |\n\u003C/BsTable>\n\n## Sanitizer\n\nTooltips and Popovers use our built-in sanitizer to sanitize options which accept HTML.\n\nThe default `allowList` value is the following:\n\n\u003CJsDocs name=\"allow-list\" file=\"js/src/util/sanitizer.js\" />\n\nIf you want to add new values to this default `allowList` you can do the following:\n\n```js\nconst myDefaultAllowList = bootstrap.Tooltip.Default.allowList\n\n// To allow table elements\nmyDefaultAllowList.table = []\n\n// To allow td elements and data-bs-option attributes on td elements\nmyDefaultAllowList.td = ['data-bs-option']\n\n// You can push your custom regex to validate your attributes.\n// Be careful about your regular expressions being too lax\nconst myCustomRegex = /^data-my-app-[\\w-]+/\nmyDefaultAllowList['*'].push(myCustomRegex)\n```\n\nIf you want to bypass our sanitizer because you prefer to use a dedicated library, for example [DOMPurify](https://www.npmjs.com/package/dompurify), you should do the following:\n\n```js\nconst yourTooltipEl = document.querySelector('#yourTooltip')\nconst tooltip = new bootstrap.Tooltip(yourTooltipEl, {\n sanitizeFn(content) {\n return DOMPurify.sanitize(content)\n }\n})\n```\n\n## Optionally using jQuery\n\n**You don't need jQuery in Bootstrap 5**, but it's still possible to use our components with jQuery. If Bootstrap detects `jQuery` in the `window` object, it'll add all of our components in jQuery's plugin system. This allows you to do the following:\n\n```js\n// to enable tooltips with the default configuration\n$('[data-bs-toggle=\"tooltip\"]').tooltip()\n\n// to initialize tooltips with given configuration\n$('[data-bs-toggle=\"tooltip\"]').tooltip({\n boundary: 'clippingParents',\n customClass: 'myClass'\n})\n\n// to trigger the `show` method\n$('#myTooltip').tooltip('show')\n```\n\nThe same goes for our other components.\n\n### No conflict\n\nSometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call `.noConflict` on the plugin you wish to revert the value of.\n\n```js\nconst bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value\n$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality\n```\n\nBootstrap does not officially support third-party JavaScript libraries like Prototype or jQuery UI. Despite `.noConflict` and namespaced events, there may be compatibility problems that you need to fix on your own.\n\n### jQuery events\n\nBootstrap will detect jQuery if `jQuery` is present in the `window` object and there is no `data-bs-no-jquery` attribute set on `\u003Cbody>`. If jQuery is found, Bootstrap will emit events thanks to jQuery's event system. So if you want to listen to Bootstrap's events, you'll have to use the jQuery methods (`.on`, `.one`) instead of `addEventListener`.\n\n```js\n$('#myTab a').on('shown.bs.tab', () => {\n // do something...\n})\n```\n\n## Disabled JavaScript\n\nBootstrap's plugins have no special fallback when JavaScript is disabled. If you care about the user experience in this case, use [`\u003Cnoscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript) to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks.","src/content/docs/getting-started/javascript.mdx","d34e7c86e8f62107","getting-started/javascript.mdx","getting-started/parcel",{"id":762,"data":764,"body":768,"filePath":769,"digest":770,"legacyId":771,"deferredRender":139},{"description":765,"thumbnail":766,"title":767,"toc":139},"The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Parcel.","guides/bootstrap-parcel@2x.png","Bootstrap and Parcel","\u003Cimg class=\"d-block mx-auto mb-4 img-fluid rounded-3\" srcset=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-parcel.png, /docs/[[config:docs_version]]/assets/img/guides/bootstrap-parcel@2x.png 2x\" src=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-parcel.png\" width=\"800\" height=\"400\" alt=\"\"/>\n\n\u003CCallout>\n**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/parcel). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/parcel?file=index.html) but not run it because Parcel isn't currently supported there.\n\u003C/Callout>\n\n## What is Parcel?\n\n[Parcel](https://parceljs.org/) is a web application bundler designed to simplify the development process with a zero-configuration setup out of the box. It offers features found in more advanced bundlers while focusing on ease of use, making it ideal for developers seeking a quick start.\n\n## Setup\n\nWe're building a Parcel project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.\n\n1. **Create a project folder and set up npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions.\n\n ```sh\n mkdir my-project && cd my-project\n npm init -y\n ```\n\n2. **Install Parcel.** Unlike our Webpack guide, there's only a single build tool dependency here. Parcel will automatically install language transformers (like Sass) as it detects them. We use `--save-dev` to signal that this dependency is only for development use and not for production.\n\n ```sh\n npm i --save-dev parcel\n ```\n\n3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.\n\n ```sh\n npm i --save bootstrap @popperjs/core\n ```\n\nNow that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap.\n\n## Project structure\n\nWe've already created the `my-project` folder and initialized npm. Now we'll also create our `src` folder, stylesheet, and JavaScript file to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below.\n\n```sh\nmkdir {src,src/js,src/scss}\ntouch src/index.html src/js/main.js src/scss/styles.scss\n```\n\nWhen you're done, your complete project should look like this:\n\n```text\nmy-project/\n├── src/\n│ ├── js/\n│ │ └── main.js\n│ ├── scss/\n│ │ └── styles.scss\n│ └── index.html\n├── package-lock.json\n└── package.json\n```\n\nAt this point, everything is in the right place, but Parcel needs an HTML page and npm script to start our server.\n\n## Configure Parcel\n\nWith dependencies installed and our project folder ready for us to start coding, we can now configure Parcel and run our project locally. Parcel itself requires no configuration file by design, but we do need an npm script and an HTML file to start our server.\n\n1. **Fill in the `src/index.html` file.** Parcel needs a page to render, so we use our `index.html` page to set up some basic HTML, including our CSS and JavaScript files.\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap w/ Parcel\u003C/title>\n \u003Clink rel=\"stylesheet\" href=\"scss/styles.scss\">\n \u003Cscript type=\"module\" src=\"js/main.js\">\u003C/script>\n \u003C/head>\n \u003Cbody>\n \u003Cdiv class=\"container py-4 px-3 mx-auto\">\n \u003Ch1>Hello, Bootstrap and Parcel!\u003C/h1>\n \u003Cbutton class=\"btn btn-primary\">Primary button\u003C/button>\n \u003C/div>\n \u003C/body>\n \u003C/html>\n ```\n\n We're including a little bit of Bootstrap styling here with the `div class=\"container\"` and `\u003Cbutton>` so that we see when Bootstrap's CSS is loaded by Parcel.\n\n Parcel will automatically detect we're using Sass and install the [Sass Parcel plugin](https://parceljs.org/languages/sass/) to support it. However, if you wish, you can also manually run `npm i --save-dev @parcel/transformer-sass`.\n\n2. **Add the Parcel npm scripts.** Open the `package.json` and add the following `start` script to the `scripts` object. We'll use this script to start our Parcel development server and render the HTML file we created after it's compiled into the `dist` directory.\n\n ```json\n {\n // ...\n \"scripts\": {\n \"start\": \"parcel serve src/index.html --public-url / --dist-dir dist\",\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n // ...\n }\n ```\n\n3. **And finally, we can start Parcel.** From the `my-project` folder in your terminal, run that newly added npm script:\n\n ```sh\n npm start\n ```\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/parcel-dev-server.png\" alt=\"Parcel dev server running\" />\n\nIn the next and final section to this guide, we'll import all of Bootstrap's CSS and JavaScript.\n\n## Import Bootstrap\n\nImporting Bootstrap into Parcel requires two imports, one into our `styles.scss` and one into our `main.js`.\n\n1. **Import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass.\n\n ```scss\n // Import all of Bootstrap's CSS\n @import \"bootstrap/scss/bootstrap\";\n ```\n\n *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*\n\n2. **Import Bootstrap's JS.** Add the following to `src/js/main.js` to import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n // Import all of Bootstrap's JS\n import * as bootstrap from 'bootstrap'\n ```\n\n You can also import JavaScript plugins individually as needed to keep bundle sizes down:\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n import Alert from 'bootstrap/js/dist/alert'\n\n // or, specify which plugins you need:\n import { Tooltip, Toast, Popover } from 'bootstrap'\n ```\n\n *[Read our JavaScript docs]([[docsref:/getting-started/javascript/]]) for more information on how to use Bootstrap's plugins.*\n\n3. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/parcel-dev-server-bootstrap.png\" alt=\"Parcel dev server running with Bootstrap\" />\n\n Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Parcel example project](https://github.com/twbs/examples/tree/main/parcel) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.\n\n\u003CGuideFooter />","src/content/docs/getting-started/parcel.mdx","e03bf37ddb4c933c","getting-started/parcel.mdx","getting-started/rfs",{"id":772,"data":774,"body":777,"filePath":778,"digest":779,"legacyId":780,"deferredRender":139},{"description":775,"title":776,"toc":139},"Bootstrap's resizing engine responsively scales common CSS properties to better utilize available space across viewports and devices.","RFS","## What is RFS?\n\nBootstrap's side project [RFS](https://github.com/twbs/rfs/tree/[[config:rfs_version]]) is a unit resizing engine which was initially developed to resize font sizes (hence its abbreviation for Responsive Font Sizes). Nowadays RFS is capable of rescaling most CSS properties with unit values like `margin`, `padding`, `border-radius`, or even `box-shadow`.\n\nThe mechanism automatically calculates the appropriate values based on the dimensions of the browser viewport. It will be compiled into `calc()` functions with a mix of `rem` and viewport units to enable the responsive scaling behavior.\n\n## Using RFS\n\nThe mixins are included in Bootstrap and are available once you include Bootstrap's `scss`. RFS can also be [installed standalone](https://github.com/twbs/rfs/tree/[[config:rfs_version]]#installation) if needed.\n\n### Using the mixins\n\nThe `rfs()` mixin has shorthands for `font-size`, `margin`, `margin-top`, `margin-right`, `margin-bottom`, `margin-left`, `padding`, `padding-top`, `padding-right`, `padding-bottom`, and `padding-left`. See the example below for source Sass and compiled CSS.\n\n```scss\n.title {\n @include font-size(4rem);\n}\n```\n\n```css\n.title {\n font-size: calc(1.525rem + 3.3vw);\n}\n\n@media (min-width: 1200px) {\n .title {\n font-size: 4rem;\n }\n}\n```\n\nAny other property can be passed to the `rfs()` mixin like this:\n\n```scss\n.selector {\n @include rfs(4rem, border-radius);\n}\n```\n\n`!important` can also just be added to whatever value you want:\n\n```scss\n.selector {\n @include padding(2.5rem !important);\n}\n```\n\n### Using the functions\n\nWhen you don't want to use the includes, there are also two functions:\n\n- `rfs-value()` converts a value into a `rem` value if a `px` value is passed, in other cases it returns the same result.\n- `rfs-fluid-value()` returns the fluid version of a value if the property needs rescaling.\n\nIn this example, we use one of Bootstrap's built-in [responsive breakpoint mixins]([[docsref:/layout/breakpoints]]) to only apply styling below the `lg` breakpoint.\n\n```scss\n.selector {\n @include media-breakpoint-down(lg) {\n padding: rfs-fluid-value(2rem);\n font-size: rfs-fluid-value(1.125rem);\n }\n}\n```\n\n```css\n@media (max-width: 991.98px) {\n .selector {\n padding: calc(1.325rem + 0.9vw);\n font-size: 1.125rem; /* 1.125rem is small enough, so RFS won't rescale this */\n }\n}\n```\n\n## Extended documentation\n\nRFS is a separate project under the Bootstrap organization. More about RFS and its configuration can be found on its [GitHub repository](https://github.com/twbs/rfs/tree/[[config:rfs_version]]).","src/content/docs/getting-started/rfs.mdx","50fcab42d402abc9","getting-started/rfs.mdx","getting-started/rtl",{"id":781,"data":783,"body":786,"filePath":787,"digest":788,"legacyId":789,"deferredRender":139},{"description":784,"title":785,"toc":139},"Learn how to enable support for right-to-left text in Bootstrap across our layout, components, and utilities.","RTL","## Get familiar\n\nWe recommend getting familiar with Bootstrap first by reading through our [Getting Started Introduction page]([[docsref:/getting-started/introduction]]). Once you've run through it, continue reading here for how to enable RTL.\n\nYou may also want to read up on [the RTLCSS project](https://rtlcss.com/), as it powers our approach to RTL.\n\n\u003CCallout type=\"warning\">\n**Bootstrap's RTL feature is still experimental** and will evolve based on user feedback. Spotted something or have an improvement to suggest? [Open an issue]([[config:repo]]/issues/new/choose), we'd love to get your insights.\n\u003C/Callout>\n\n## Required HTML\n\nThere are two strict requirements for enabling RTL in Bootstrap-powered pages.\n\n1. Set `dir=\"rtl\"` on the `\u003Chtml>` element.\n2. Add an appropriate `lang` attribute, like `lang=\"ar\"`, on the `\u003Chtml>` element.\n\nFrom there, you'll need to include an RTL version of our CSS. For example, here's the stylesheet for our compiled and minified CSS with RTL enabled:\n\n```html\n\u003Clink rel=\"stylesheet\" href=\"[[config:cdn.css_rtl]]\" integrity=\"[[config:cdn.css_rtl_hash]]\" crossorigin=\"anonymous\">\n```\n\n### Starter template\n\nYou can see the above requirements reflected in this modified RTL starter template.\n\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"ar\" dir=\"rtl\">\n \u003Chead>\n \u003C!-- Required meta tags -->\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n \u003C!-- Bootstrap CSS -->\n \u003Clink rel=\"stylesheet\" href=\"[[config:cdn.css_rtl]]\" integrity=\"[[config:cdn.css_rtl_hash]]\" crossorigin=\"anonymous\">\n\n \u003Ctitle>مرحبًا بالعالم!\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Ch1>مرحبًا بالعالم!\u003C/h1>\n\n \u003C!-- Optional JavaScript; choose one of the two! -->\n\n \u003C!-- Option 1: Bootstrap Bundle with Popper -->\n \u003Cscript src=\"[[config:cdn.js_bundle]]\" integrity=\"[[config:cdn.js_bundle_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n\n \u003C!-- Option 2: Separate Popper and Bootstrap JS -->\n \u003C!--\n \u003Cscript src=\"[[config:cdn.popper]]\" integrity=\"[[config:cdn.popper_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n \u003Cscript src=\"[[config:cdn.js]]\" integrity=\"[[config:cdn.js_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n -->\n \u003C/body>\n\u003C/html>\n```\n\n### RTL examples\n\nGet started with one of our several [RTL examples]([[docsref:/examples/#rtl]]).\n\n## Approach\n\nOur approach to building RTL support into Bootstrap comes with two important decisions that impact how we write and use our CSS:\n\n1. **First, we decided to build it with the [RTLCSS](https://rtlcss.com/) project.** This gives us some powerful features for managing changes and overrides when moving from LTR to RTL. It also allows us to build two versions of Bootstrap from one codebase.\n\n2. **Second, we've renamed a handful of directional classes to adopt a logical properties approach.** Most of you have already interacted with logical properties thanks to our flex utilities—they replace direction properties like `left` and `right` in favor `start` and `end`. That makes the class names and values appropriate for LTR and RTL without any overhead.\n\n For example, instead of `.ml-3` for `margin-left`, use `.ms-3`.\n\nWorking with RTL, through our source Sass or compiled CSS, shouldn't be much different from our default LTR though.\n\n## Customize from source\n\nWhen it comes to [customization]([[docsref:/customize/sass]]), the preferred way is to take advantage of variables, maps, and mixins. This approach works the same for RTL, even if it's post-processed from the compiled files, thanks to [how RTLCSS works](https://rtlcss.com/learn/getting-started/why-rtlcss/).\n\n### Custom RTL values\n\nUsing [RTLCSS value directives](https://rtlcss.com/learn/usage-guide/value-directives/), you can make a variable output a different value for RTL. For example, to decrease the weight for `$font-weight-bold` throughout the codebase, you may use the `/*rtl: {value}*/` syntax:\n\n```scss\n$font-weight-bold: 700 #{/* rtl:600 */} !default;\n```\n\nWhich would output to the following for our default CSS and RTL CSS:\n\n```css\n/* bootstrap.css */\ndt {\n font-weight: 700 /* rtl:600 */;\n}\n\n/* bootstrap.rtl.css */\ndt {\n font-weight: 600;\n}\n```\n\n### Alternative font stack\n\nIn the case you're using a custom font, be aware that not all fonts support the non-Latin alphabet. To switch from Pan-European to Arabic family, you may need to use `/*rtl:insert: {value}*/` in your font stack to modify the names of font families.\n\nFor example, to switch from `Helvetica Neue` font for LTR to `Helvetica Neue Arabic` for RTL, your Sass code could look like this:\n\n```scss\n$font-family-sans-serif:\n Helvetica Neue #{\"/* rtl:insert:Arabic */\"},\n // Cross-platform generic font family (default user interface font)\n system-ui,\n // Safari for macOS and iOS (San Francisco)\n -apple-system,\n // Chrome \u003C 56 for macOS (San Francisco)\n BlinkMacSystemFont,\n // Windows\n \"Segoe UI\",\n // Android\n Roboto,\n // Basic web fallback\n Arial,\n // Linux\n \"Noto Sans\",\n // Sans serif fallback\n sans-serif,\n // Emoji fonts\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n```\n\n### LTR and RTL at the same time\n\nNeed both LTR and RTL on the same page? Thanks to [RTLCSS String Maps](https://rtlcss.com/learn/usage-guide/string-map/), this is pretty straightforward. Wrap your `@import`s with a class, and set a custom rename rule for RTLCSS:\n\n```scss\n/* rtl:begin:options: {\n \"autoRename\": true,\n \"stringMap\":[ {\n \"name\": \"ltr-rtl\",\n \"priority\": 100,\n \"search\": [\"ltr\"],\n \"replace\": [\"rtl\"],\n \"options\": {\n \"scope\": \"*\",\n \"ignoreCase\": false\n }\n } ]\n} */\n.ltr {\n @import \"../node_modules/bootstrap/scss/bootstrap\";\n}\n/*rtl:end:options*/\n```\n\nAfter running Sass then RTLCSS, each selector in your CSS files will be prepended by `.ltr`, and `.rtl` for RTL files. Now you're able to use both files on the same page, and simply use `.ltr` or `.rtl` on your components wrappers to use one or the other direction.\n\n\u003CCallout type=\"warning\">\n**Edge cases and known limitations** to consider when working with a combined LTR and RTL implementation:\n\n1. When switching `.ltr` and `.rtl`, make sure you add `dir` and `lang` attributes accordingly.\n2. Loading both files can be a real performance bottleneck: consider some [optimization]([[docsref:/customize/optimize]]), and maybe try to [load one of those files asynchronously](https://www.filamentgroup.com/lab/load-css-simpler/).\n3. Nesting styles this way will prevent our `form-validation-state()` mixin from working as intended, thus require you tweak it a bit by yourself. [See #31223](https://github.com/twbs/bootstrap/issues/31223).\n\u003C/Callout>\n\nDo you want to automate this process and address several edge cases involving both directions within a single stylesheet? Then, consider using [PostCSS RTLCSS](https://github.com/elchininet/postcss-rtlcss) as a [PostCSS](https://github.com/postcss/postcss) plugin to process your source files. PostCSS RTLCSS uses [RTLCSS](https://rtlcss.com) behind the scenes to manage the direction flipping process, but it separates the flipped declarations into rules with a different prefix for LTR and RTL, something that allows you to have both directions within the same stylesheet file. By doing this, you can switch between LTR and RTL orientations by simply changing the `dir` of the page (or even by modifying a specific class if you configure the plugin accordingly).\n\n\u003CCallout type=\"warning\">\n**Important things to take into account** when using PostCSS RTLCSS to build a combined LTR and RTL implementation:\n\n1. It is recommended that you add the `dir` attribute to the `html` element. This way, the entire page will be affected when you change the direction. Also, make sure you add the `lang` attribute accordingly.\n2. Having a single bundle with both directions will increase the size of the final stylesheet (on average, by 20%-30%): consider some [optimization]([[docsref:/customize/optimize]]).\n3. Take into account that PostCSS RTLCSS is not compatible with `/* rtl:remove */` directives because it doesn't remove any CSS rule. You should replace your `/* rtl:remove */`, `/* rtl:begin:remove */` and `/* rtl:end:remove */` directives with `/* rtl:freeze */`, `/* rtl:begin:freeze */` and `/* rtl:end:freeze */` directives respectively. These directives will prefix the targeted rules or declarations with the current direction but will not create an RTL counterpart (same result as the `remove` ones in RTLCSS).\n\u003C/Callout>\n\n## The breadcrumb case\n\nThe [breadcrumb separator]([[docsref:/components/breadcrumb]]#dividers) is the only case requiring its own brand-new variable— namely `$breadcrumb-divider-flipped` —defaulting to `$breadcrumb-divider`.\n\n## Additional resources\n\n- [RTLCSS](https://rtlcss.com/)\n- [RTL Styling 101](https://rtlstyling.com/posts/rtl-styling)","src/content/docs/getting-started/rtl.mdx","17b1bab3d6c46a1a","getting-started/rtl.mdx","getting-started/vite",{"id":790,"data":792,"body":798,"filePath":799,"digest":800,"legacyId":801,"deferredRender":139},{"added":793,"description":795,"thumbnail":796,"title":797,"toc":139},{"show_badge":345,"version":794},"5.2","The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Vite.","guides/bootstrap-vite@2x.png","Bootstrap and Vite","\u003Cimg class=\"d-block mx-auto mb-4 img-fluid rounded-3\" srcset=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-vite.png, /docs/[[config:docs_version]]/assets/img/guides/bootstrap-vite@2x.png 2x\" src=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-vite.png\" width=\"800\" height=\"400\" alt=\"\" />\n\n\u003CCallout>\n**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/vite). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/vite?file=index.html) for live editing.\n\u003C/Callout>\n\n## What is Vite?\n\n[Vite](https://vite.dev/) is a modern frontend build tool designed for speed and simplicity. It provides an efficient and streamlined development experience, especially for modern JavaScript frameworks.\n\n## Setup\n\nWe're building a Vite project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.\n\n1. **Create a project folder and set up npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions.\n\n ```sh\n mkdir my-project && cd my-project\n npm init -y\n ```\n\n2. **Install Vite.** Unlike our Webpack guide, there’s only a single build tool dependency here. We use `--save-dev` to signal that this dependency is only for development use and not for production.\n\n ```sh\n npm i --save-dev vite\n ```\n\n3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.\n\n ```sh\n npm i --save bootstrap @popperjs/core\n ```\n\n4. **Install additional dependency.** In addition to Vite and Bootstrap, we need another dependency (Sass) to properly import and bundle Bootstrap's CSS.\n\n ```sh\n npm i --save-dev sass\n ```\n\nNow that we have all the necessary dependencies installed and set up, we can get to work creating the project files and importing Bootstrap.\n\n## Project structure\n\nWe've already created the `my-project` folder and initialized npm. Now we'll also create our `src` folder, stylesheet, and JavaScript file to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below.\n\n```sh\nmkdir {src,src/js,src/scss}\ntouch src/index.html src/js/main.js src/scss/styles.scss vite.config.js\n```\n\nWhen you're done, your complete project should look like this:\n\n```text\nmy-project/\n├── src/\n│ ├── js/\n│ │ └── main.js\n│ └── scss/\n│ | └── styles.scss\n| └── index.html\n├── package-lock.json\n├── package.json\n└── vite.config.js\n```\n\nAt this point, everything is in the right place, but Vite won't work because we haven't filled in our `vite.config.js` yet.\n\n## Configure Vite\n\nWith dependencies installed and our project folder ready for us to start coding, we can now configure Vite and run our project locally.\n\n1. **Open `vite.config.js` in your editor.** Since it's blank, we'll need to add some boilerplate config to it so we can start our server. This part of the config tells Vite where to look for our project's JavaScript and how the development server should behave (pulling from the `src` folder with hot reload).\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n import { resolve } from 'path'\n\n export default {\n root: resolve(__dirname, 'src'),\n build: {\n outDir: '../dist'\n },\n server: {\n port: 8080\n }\n }\n ```\n\n2. **Next we fill in `src/index.html`.** This is the HTML page Vite will load in the browser to utilize the bundled CSS and JS we'll add to it in later steps.\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap w/ Vite\u003C/title>\n \u003Cscript type=\"module\" src=\"./js/main.js\">\u003C/script>\n \u003C/head>\n \u003Cbody>\n \u003Cdiv class=\"container py-4 px-3 mx-auto\">\n \u003Ch1>Hello, Bootstrap and Vite!\u003C/h1>\n \u003Cbutton class=\"btn btn-primary\">Primary button\u003C/button>\n \u003C/div>\n \u003C/body>\n \u003C/html>\n ```\n\n We're including a little bit of Bootstrap styling here with the `div class=\"container\"` and `\u003Cbutton>` so that we see when Bootstrap's CSS is loaded by Vite.\n\n3. **Now we need an npm script to run Vite.** Open `package.json` and add the `start` script shown below (you should already have the test script). We'll use this script to start our local Vite dev server.\n\n ```json\n {\n // ...\n \"scripts\": {\n \"start\": \"vite\",\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n // ...\n }\n ```\n\n4. **And finally, we can start Vite.** From the `my-project` folder in your terminal, run that newly added npm script:\n\n ```sh\n npm start\n ```\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/vite-dev-server.png\" alt=\"Vite dev server running\" />\n\nIn the next and final section to this guide, we’ll import all of Bootstrap’s CSS and JavaScript.\n\n## Import Bootstrap\n\n1. **Import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass.\n\n ```scss\n // Import all of Bootstrap's CSS\n @import \"bootstrap/scss/bootstrap\";\n ```\n\n *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*\n\n3. **Next we load the CSS and import Bootstrap's JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n // Import our custom CSS\n import '../scss/styles.scss'\n\n // Import all of Bootstrap's JS\n import * as bootstrap from 'bootstrap'\n ```\n\n You can also import JavaScript plugins individually as needed to keep bundle sizes down:\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n import Alert from 'bootstrap/js/dist/alert';\n\n // or, specify which plugins you need:\n import { Tooltip, Toast, Popover } from 'bootstrap';\n ```\n\n *[Read our JavaScript docs]([[docsref:/getting-started/javascript/]]) for more information on how to use Bootstrap's plugins.*\n\n4. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/vite-dev-server-bootstrap.png\" alt=\"Vite dev server running with Bootstrap\" />\n\n Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Vite example project](https://github.com/twbs/examples/tree/main/vite) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.\n\n\u003CGuideFooter />","src/content/docs/getting-started/vite.mdx","0823f7675719deb1","getting-started/vite.mdx","getting-started/webpack",{"id":802,"data":804,"body":808,"filePath":809,"digest":810,"legacyId":811,"deferredRender":139},{"description":805,"thumbnail":806,"title":807,"toc":139},"The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Webpack.","guides/bootstrap-webpack@2x.png","Bootstrap and Webpack","\u003Cimg class=\"d-block mx-auto mb-4 img-fluid rounded-3\" srcset=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-webpack.png, /docs/[[config:docs_version]]/assets/img/guides/bootstrap-webpack@2x.png 2x\" src=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-webpack.png\" width=\"800\" height=\"400\" alt=\"\"/>\n\n\u003CCallout>\n**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/webpack). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/webpack?file=index.html) for live editing.\n\u003C/Callout>\n\n## What is Webpack?\n\n[Webpack](https://webpack.js.org/) is a JavaScript module bundler that processes modules and their dependencies to generate static assets. It simplifies managing complex web applications with multiple files and dependencies.\n\n## Setup\n\nWe're building a Webpack project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.\n\n1. **Create a project folder and set up npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions.\n\n ```sh\n mkdir my-project && cd my-project\n npm init -y\n ```\n\n2. **Install Webpack.** Next we need to install our Webpack development dependencies: `webpack` for the core of Webpack, `webpack-cli` so we can run Webpack commands from the terminal, and `webpack-dev-server` so we can run a local development server. Additionally, we'll install `html-webpack-plugin` to be able to store our `index.html` in `src` directory instead of the default `dist` one. We use `--save-dev` to signal that these dependencies are only for development use and not for production.\n\n ```sh\n npm i --save-dev webpack webpack-cli webpack-dev-server html-webpack-plugin\n ```\n\n3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.\n\n ```sh\n npm i --save bootstrap @popperjs/core\n ```\n\n4. **Install additional dependencies.** In addition to Webpack and Bootstrap, we need a few more dependencies to properly import and bundle Bootstrap's CSS and JS with Webpack. These include Sass, some loaders, and Autoprefixer.\n\n ```sh\n npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader\n ```\n\nNow that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap.\n\n## Project structure\n\nWe've already created the `my-project` folder and initialized npm. Now we'll also create our `src` and `dist` folders to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below.\n\n```sh\nmkdir {src,src/js,src/scss}\ntouch src/index.html src/js/main.js src/scss/styles.scss webpack.config.js\n```\n\nWhen you're done, your complete project should look like this:\n\n```text\nmy-project/\n├── src/\n│ ├── js/\n│ │ └── main.js\n│ ├── scss/\n│ │ └── styles.scss\n│ └── index.html\n├── package-lock.json\n├── package.json\n└── webpack.config.js\n```\n\nAt this point, everything is in the right place, but Webpack won't work because we haven't filled in our `webpack.config.js` yet.\n\n## Configure Webpack\n\nWith dependencies installed and our project folder ready for us to start coding, we can now configure Webpack and run our project locally.\n\n1. **Open `webpack.config.js` in your editor.** Since it's blank, we'll need to add some boilerplate config to it so we can start our server. This part of the config tells Webpack where to look for our project's JavaScript, where to output the compiled code to (`dist`), and how the development server should behave (pulling from the `dist` folder with hot reload).\n\n ```js\n 'use strict'\n const path = require('path')\n const HtmlWebpackPlugin = require('html-webpack-plugin')\n\n module.exports = {\n mode: 'development',\n entry: './src/js/main.js',\n output: {\n filename: 'main.js',\n path: path.resolve(__dirname, 'dist')\n },\n devServer: {\n static: path.resolve(__dirname, 'dist'),\n port: 8080,\n hot: true\n },\n plugins: [\n new HtmlWebpackPlugin({ template: './src/index.html' })\n ]\n }\n ```\n\n2. **Next we fill in our `src/index.html`.** This is the HTML page Webpack will load in the browser to utilize the bundled CSS and JS we'll add to it in later steps. Before we can do that, we have to give it something to render and include the `output` JS from the previous step.\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap w/ Webpack\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Cdiv class=\"container py-4 px-3 mx-auto\">\n \u003Ch1>Hello, Bootstrap and Webpack!\u003C/h1>\n \u003Cbutton class=\"btn btn-primary\">Primary button\u003C/button>\n \u003C/div>\n \u003C/body>\n \u003C/html>\n ```\n\n We're including a little bit of Bootstrap styling here with the `div class=\"container\"` and `\u003Cbutton>` so that we see when Bootstrap's CSS is loaded by Webpack.\n\n3. **Now we need an npm script to run Webpack.** Open `package.json` and add the `start` script shown below (you should already have the test script). We'll use this script to start our local Webpack dev server. You can also add a `build` script shown below to build your project.\n\n ```json\n {\n // ...\n \"scripts\": {\n \"start\": \"webpack serve\",\n \"build\": \"webpack build --mode=production\",\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n // ...\n }\n ```\n\n4. **And finally, we can start Webpack.** From the `my-project` folder in your terminal, run that newly added npm script:\n\n ```sh\n npm start\n ```\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/webpack-dev-server.png\" alt=\"Webpack dev server running\"/>\n\nIn the next and final section to this guide, we'll set up the Webpack loaders and import all of Bootstrap's CSS and JavaScript.\n\n## Import Bootstrap\n\nImporting Bootstrap into Webpack requires the loaders we installed in the first section. We've installed them with npm, but now Webpack needs to be configured to use them.\n\n1. **Set up the loaders in `webpack.config.js`.** Your configuration file is now complete and should match the snippet below. The only new part here is the `module` section.\n\n ```js\n 'use strict'\n const path = require('path')\n const autoprefixer = require('autoprefixer')\n const HtmlWebpackPlugin = require('html-webpack-plugin')\n\n module.exports = {\n mode: 'development',\n entry: './src/js/main.js',\n output: {\n filename: 'main.js',\n path: path.resolve(__dirname, 'dist')\n },\n devServer: {\n static: path.resolve(__dirname, 'dist'),\n port: 8080,\n hot: true\n },\n plugins: [\n new HtmlWebpackPlugin({ template: './src/index.html' })\n ],\n module: {\n rules: [\n {\n test: /\\.(scss)$/,\n use: [\n {\n // Adds CSS to the DOM by injecting a `\u003Cstyle>` tag\n loader: 'style-loader'\n },\n {\n // Interprets `@import` and `url()` like `import/require()` and will resolve them\n loader: 'css-loader'\n },\n {\n // Loader for webpack to process CSS with PostCSS\n loader: 'postcss-loader',\n options: {\n postcssOptions: {\n plugins: [\n autoprefixer\n ]\n }\n }\n },\n {\n // Loads a SASS/SCSS file and compiles it to CSS\n loader: 'sass-loader'\n }\n ]\n }\n ]\n }\n }\n ```\n\n Here's a recap of why we need all these loaders. `style-loader` injects the CSS into a `\u003Cstyle>` element in the `\u003Chead>` of the HTML page, `css-loader` helps with using `@import` and `url()`, `postcss-loader` is required for Autoprefixer, and `sass-loader` allows us to use Sass.\n\n2. **Now, let's import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass.\n\n ```scss\n // Import all of Bootstrap's CSS\n @import \"bootstrap/scss/bootstrap\";\n ```\n\n *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*\n\n3. **Next we load the CSS and import Bootstrap's JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n // Import our custom CSS\n import '../scss/styles.scss'\n\n // Import all of Bootstrap's JS\n import * as bootstrap from 'bootstrap'\n ```\n\n You can also import JavaScript plugins individually as needed to keep bundle sizes down:\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n import Alert from 'bootstrap/js/dist/alert'\n\n // or, specify which plugins you need:\n import { Tooltip, Toast, Popover } from 'bootstrap'\n ```\n\n *[Read our JavaScript docs]([[docsref:/getting-started/javascript/]]) for more information on how to use Bootstrap's plugins.*\n\n4. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/webpack-dev-server-bootstrap.png\" alt=\"Webpack dev server running with Bootstrap\"/>\n\n Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Webpack example project](https://github.com/twbs/examples/tree/main/webpack) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.\n\n## Production optimizations\n\nDepending on your setup, you may want to implement some additional security and speed optimizations useful for running the project in production. Note that these optimizations are not applied on [the Webpack example project](https://github.com/twbs/examples/tree/main/webpack) and are up to you to implement.\n\n### Extracting CSS\n\nThe `style-loader` we configured above conveniently emits CSS into the bundle so that manually loading a CSS file in `dist/index.html` isn't necessary. This approach may not work with a strict Content Security Policy, however, and it may become a bottleneck in your application due to the large bundle size.\n\nTo separate the CSS so that we can load it directly from `dist/index.html`, use the `mini-css-extract-loader` Webpack plugin.\n\nFirst, install the plugin:\n\n```sh\nnpm install --save-dev mini-css-extract-plugin\n```\n\nThen instantiate and use the plugin in the Webpack configuration:\n\n```diff\n--- a/webpack.config.js\n+++ b/webpack.config.js\n@@ -3,6 +3,7 @@\n const path = require('path')\n const autoprefixer = require('autoprefixer')\n const HtmlWebpackPlugin = require('html-webpack-plugin')\n+const miniCssExtractPlugin = require('mini-css-extract-plugin')\n\n module.exports = {\n mode: 'development',\n@@ -17,7 +18,8 @@ module.exports = {\n hot: true\n },\n plugins: [\n- new HtmlWebpackPlugin({ template: './src/index.html' })\n+ new HtmlWebpackPlugin({ template: './src/index.html' }),\n+ new miniCssExtractPlugin()\n ],\n module: {\n rules: [\n@@ -25,8 +27,8 @@ module.exports = {\n test: /\\.(scss)$/,\n use: [\n {\n- // Adds CSS to the DOM by injecting a `\u003Cstyle>` tag\n- loader: 'style-loader'\n+ // Extracts CSS for each JS file that includes CSS\n+ loader: miniCssExtractPlugin.loader\n },\n {\n```\n\nAfter running `npm run build` again, there will be a new file `dist/main.css`, which will contain all of the CSS imported by `src/js/main.js`. If you view `dist/index.html` in your browser now, the style will be missing, as it is now in `dist/main.css`. You can include the generated CSS in `dist/index.html` like this:\n\n```diff\n--- a/dist/index.html\n+++ b/dist/index.html\n@@ -3,6 +3,7 @@\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ \u003Clink rel=\"stylesheet\" href=\"./main.css\">\n \u003Ctitle>Bootstrap w/ Webpack\u003C/title>\n \u003C/head>\n \u003Cbody>\n```\n\n### Extracting SVG files\n\nBootstrap's CSS includes multiple references to SVG files via inline `data:` URIs. If you define a Content Security Policy for your project that blocks `data:` URIs for images, then these SVG files will not load. You can get around this problem by extracting the inline SVG files using Webpack's asset modules feature.\n\nConfigure Webpack to extract inline SVG files like this:\n\n```diff\n--- a/webpack.config.js\n+++ b/webpack.config.js\n@@ -23,6 +23,14 @@ module.exports = {\n },\n module: {\n rules: [\n+ {\n+ mimetype: 'image/svg+xml',\n+ scheme: 'data',\n+ type: 'asset/resource',\n+ generator: {\n+ filename: 'icons/[hash].svg'\n+ }\n+ },\n {\n test: /\\.(scss)$/,\n use: [\n```\n\nAfter running `npm run build` again, you'll find the SVG files extracted into `dist/icons` and properly referenced from CSS.\n\n\u003CGuideFooter />","src/content/docs/getting-started/webpack.mdx","5f3e7e8daa0c2838","getting-started/webpack.mdx","helpers/clearfix",{"id":812,"data":814,"body":818,"filePath":819,"digest":820,"legacyId":821,"deferredRender":139},{"aliases":815,"description":816,"title":817},"/docs/[[config:docs_version]]/helpers/","Quickly and easily clear floated content within a container by adding a clearfix utility.","Clearfix","Easily clear `float`s by adding `.clearfix` **to the parent element**. Can also be used as a mixin.\n\nUse in HTML:\n\n```html\n\u003Cdiv class=\"clearfix\">...\u003C/div>\n```\n\nThe mixin source code:\n\n\u003CScssDocs name=\"clearfix\" file=\"scss/mixins/_clearfix.scss\" />\n\nUse the mixin in SCSS:\n\n```scss\n.element {\n @include clearfix;\n}\n```\n\nThe following example shows how the clearfix can be used. Without the clearfix the wrapping div would not span around the buttons which would cause a broken layout.\n\n\u003CExample code={`\u003Cdiv class=\"bg-info clearfix\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary float-start\">Example Button floated left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary float-end\">Example Button floated right\u003C/button>\n\u003C/div>`} />","src/content/docs/helpers/clearfix.mdx","3f1c961cb85d0fcb","helpers/clearfix.mdx","helpers/color-background",{"id":822,"data":824,"body":828,"filePath":829,"digest":830,"legacyId":831,"deferredRender":139},{"added":825,"description":826,"title":827,"toc":139},{"version":794},"Set a background color with contrasting foreground color.","Color and background","import { getData } from '@libs/data'\n\n## Overview\n\nColor and background helpers combine the power of our [`.text-*` utilities]([[docsref:/utilities/colors]]) and [`.bg-*` utilities]([[docsref:/utilities/background]]) in one class. Using our Sass `color-contrast()` function, we automatically determine a contrasting `color` for a particular `background-color`.\n\n\u003CCallout type=\"warning\">\n**Heads up!** There's currently no support for a CSS-native `color-contrast` function, so we use our own via Sass. This means that customizing our theme colors via CSS variables may cause color contrast issues with these utilities.\n\u003C/Callout>\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"text-bg-${themeColor.name} p-3\">${themeColor.title} with contrasting color\u003C/div>`)} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## With components\n\nUse them in place of combined `.text-*` and `.bg-*` classes, like on [badges]([[docsref:/components/badge#background-colors]]):\n\n\u003CExample code={`\u003Cspan class=\"badge text-bg-primary\">Primary\u003C/span>\n\u003Cspan class=\"badge text-bg-info\">Info\u003C/span>`} />\n\nOr on [cards]([[docsref:/components/card#background-and-color]]):\n\n\u003CExample code={`\u003Cdiv class=\"card text-bg-primary mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header\">Header\u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"card text-bg-info mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header\">Header\u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>`} />","src/content/docs/helpers/color-background.mdx","d2735557bf0a602c","helpers/color-background.mdx","helpers/colored-links",{"id":832,"data":834,"body":837,"filePath":838,"digest":839,"legacyId":840,"deferredRender":139},{"description":835,"title":836,"toc":139},"Colored links with hover states","Colored links","import { getData } from '@libs/data'\n\n## Link colors\n\nYou can use the `.link-*` classes to colorize links. Unlike the [`.text-*` classes]([[docsref:/utilities/colors]]), these classes have a `:hover` and `:focus` state. Some of the link styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast.\n\n\u003CCallout>\n**Heads up!** `.link-body-emphasis` is currently the only colored link that adapts to color modes. It's treated as a special case until v6 arrives and we can more thoroughly rebuild our theme colors for color modes. Until then, it's a unique, high-contrast link color with custom `:hover` and `:focus` styles. However, it still responds to the new link utilities.\n\u003C/Callout>\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"link-${themeColor.name}\">${themeColor.title} link\u003C/a>\u003C/p>`),\n `\u003Cp>\u003Ca href=\"#\" class=\"link-body-emphasis\">Emphasis link\u003C/a>\u003C/p>`\n]} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Link utilities\n\n\u003CAddedIn version=\"5.3.0\"/>\n\nColored links can also be modified by our [link utilities]([[docsref:/utilities/link/]]).\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"link-${themeColor.name} link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover\">${themeColor.title} link\u003C/a>\u003C/p>`),\n `\u003Cp>\u003Ca href=\"#\" class=\"link-body-emphasis link-offset-2 link-underline-opacity-25 link-underline-opacity-75-hover\">Emphasis link\u003C/a>\u003C/p>`\n]} />","src/content/docs/helpers/colored-links.mdx","aa46fbbe4d927d43","helpers/colored-links.mdx","helpers/focus-ring",{"id":841,"data":843,"body":847,"filePath":848,"digest":849,"legacyId":850,"deferredRender":139},{"added":844,"description":845,"title":846,"toc":139},{"version":272},"Utility classes that allows you to add and modify custom focus ring styles to elements and components.","Focus ring","import { getData } from '@libs/data'\n\nThe `.focus-ring` helper removes the default `outline` on `:focus`, replacing it with a `box-shadow` that can be more broadly customized. The new shadow is made up of a series of CSS variables, inherited from the `:root` level, that can be modified for any element or component.\n\n## Example\n\nClick directly on the link below to see the focus ring in action, or into the example below and then press \u003Ckbd>Tab\u003C/kbd>.\n\n\u003CExample code={`\u003Ca href=\"#\" class=\"d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2\">\n Custom focus ring\n\u003C/a>`} />\n\n## Customize\n\nModify the styling of a focus ring with our CSS variables, Sass variables, utilities, or custom styles.\n\n### CSS variables\n\nModify the `--bs-focus-ring-*` CSS variables as needed to change the default appearance.\n\n\u003CExample code={`\u003Ca href=\"#\" class=\"d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2\" style=\"--bs-focus-ring-color: rgba(var(--bs-success-rgb), .25)\">\n Green focus ring\n\u003C/a>`} />\n\n`.focus-ring` sets styles via global CSS variables that can be overridden on any parent element, as shown above. These variables are generated from their Sass variable counterparts.\n\n\u003CScssDocs name=\"root-focus-variables\" file=\"scss/_root.scss\" />\n\nBy default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values. Modify them to change the default appearance.\n\n\u003CExample code={`\u003Ca href=\"#\" class=\"d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2\" style=\"--bs-focus-ring-x: 10px; --bs-focus-ring-y: 10px; --bs-focus-ring-blur: 4px\">\n Blurry offset focus ring\n\u003C/a>`} />\n\n### Sass variables\n\nCustomize the focus ring Sass variables to modify all usage of the focus ring styles across your Bootstrap-powered project.\n\n\u003CScssDocs name=\"focus-ring-variables\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nIn addition to `.focus-ring`, we have several `.focus-ring-*` utilities to modify the helper class defaults. Modify the color with any of our [theme colors]([[docsref:/customize/color#theme-colors]]). Note that the light and dark variants may not be visible on all background colors given current color mode support.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"d-inline-flex focus-ring focus-ring-${themeColor.name} py-1 px-2 text-decoration-none border rounded-2\">${themeColor.title} focus\u003C/a>\u003C/p>`)} />\n\nFocus ring utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-focus-ring\" file=\"scss/_utilities.scss\" />","src/content/docs/helpers/focus-ring.mdx","562a54ab99ec77a3","helpers/focus-ring.mdx","helpers/icon-link",{"id":851,"data":853,"body":857,"filePath":858,"digest":859,"legacyId":860,"deferredRender":139},{"added":854,"description":855,"title":856,"toc":139},{"version":272},"Quickly create stylized hyperlinks with Bootstrap Icons or other icons.","Icon link","The icon link helper component modifies our default link styles to enhance their appearance and quickly align any pairing of icon and text. Alignment is set via inline flexbox styling and a default `gap` value. We stylize the underline with a custom offset and color. Icons are automatically sized to `1em` to best match their associated text's `font-size`.\n\nIcon links assume [Bootstrap Icons](https://icons.getbootstrap.com) are being used, but you can use any icon or image you like.\n\n\u003CCallout>\nWhen icons are purely decorative, they should be hidden from assistive technologies using `aria-hidden=\"true\"`, as we've done in our examples. For icons that convey meaning, provide an appropriate text alternative by adding `role=\"img\"` and an appropriate `aria-label=\"...\"` to the SVGs.\n\u003C/Callout>\n\n## Example\n\nTake a regular `\u003Ca>` element, add `.icon-link`, and insert an icon on either the left or right of your link text. The icon is automatically sized, placed, and colored.\n\n\u003CExample code={`\u003Ca class=\"icon-link\" href=\"#\">\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#box-seam\">\u003C/use>\u003C/svg>\n Icon link\n\u003C/a>`} />\n\n\u003CExample code={`\u003Ca class=\"icon-link\" href=\"#\">\n Icon link\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#arrow-right\">\u003C/use>\u003C/svg>\n\u003C/a>`} />\n\n## Style on hover\n\nAdd `.icon-link-hover` to move the icon to the right on hover.\n\n\u003CExample code={`\u003Ca class=\"icon-link icon-link-hover\" href=\"#\">\n Icon link\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#arrow-right\">\u003C/use>\u003C/svg>\n\u003C/a>`} />\n\n## Customize\n\nModify the styling of an icon link with our link CSS variables, Sass variables, utilities, or custom styles.\n\n### CSS variables\n\nModify the `--bs-link-*` and `--bs-icon-link-*` CSS variables as needed to change the default appearance.\n\nCustomize the hover `transform` by overriding the `--bs-icon-link-transform` CSS variable:\n\n\u003CExample code={`\u003Ca class=\"icon-link icon-link-hover\" style=\"--bs-icon-link-transform: translate3d(0, -.125rem, 0);\" href=\"#\">\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#clipboard\">\u003C/use>\u003C/svg>\n Icon link\n\u003C/a>`} />\n\nCustomize the color by overriding the `--bs-link-*` CSS variable:\n\n\u003CExample code={`\u003Ca class=\"icon-link icon-link-hover\" style=\"--bs-link-hover-color-rgb: 25, 135, 84;\" href=\"#\">\n Icon link\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#arrow-right\">\u003C/use>\u003C/svg>\n\u003C/a>`} />\n\n## Sass variables\n\nCustomize the icon link Sass variables to modify all icon link styles across your Bootstrap-powered project.\n\n\u003CScssDocs name=\"icon-link-variables\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nModify icon links with any of [our link utilities]([[docsref:/utilities/link/]]) for modifying underline color and offset.\n\n\u003CExample code={`\u003Ca class=\"icon-link icon-link-hover link-success link-underline-success link-underline-opacity-25\" href=\"#\">\n Icon link\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#arrow-right\">\u003C/use>\u003C/svg>\n\u003C/a>`} />","src/content/docs/helpers/icon-link.mdx","f91aca8a5b8b3dbc","helpers/icon-link.mdx","helpers/position",{"id":861,"data":863,"body":866,"filePath":867,"digest":868,"legacyId":869,"deferredRender":139},{"description":864,"title":865,"toc":139},"Use these helpers for quickly configuring the position of an element.","Position","## Fixed top\n\nPosition an element at the top of the viewport, from edge to edge. Be sure you understand the ramifications of fixed position in your project; you may need to add additional CSS.\n\n```html\n\u003Cdiv class=\"fixed-top\">...\u003C/div>\n```\n\n## Fixed bottom\n\nPosition an element at the bottom of the viewport, from edge to edge. Be sure you understand the ramifications of fixed position in your project; you may need to add additional CSS.\n\n```html\n\u003Cdiv class=\"fixed-bottom\">...\u003C/div>\n```\n\n## Sticky top\n\nPosition an element at the top of the viewport, from edge to edge, but only after you scroll past it.\n\n```html\n\u003Cdiv class=\"sticky-top\">...\u003C/div>\n```\n\n## Responsive sticky top\n\nResponsive variations also exist for `.sticky-top` utility.\n\n```html\n\u003Cdiv class=\"sticky-sm-top\">Stick to the top on viewports sized SM (small) or wider\u003C/div>\n\u003Cdiv class=\"sticky-md-top\">Stick to the top on viewports sized MD (medium) or wider\u003C/div>\n\u003Cdiv class=\"sticky-lg-top\">Stick to the top on viewports sized LG (large) or wider\u003C/div>\n\u003Cdiv class=\"sticky-xl-top\">Stick to the top on viewports sized XL (extra-large) or wider\u003C/div>\n\u003Cdiv class=\"sticky-xxl-top\">Stick to the top on viewports sized XXL (extra-extra-large) or wider\u003C/div>\n```\n\n## Sticky bottom\n\nPosition an element at the bottom of the viewport, from edge to edge, but only after you scroll past it.\n\n```html\n\u003Cdiv class=\"sticky-bottom\">...\u003C/div>\n```\n\n## Responsive sticky bottom\n\nResponsive variations also exist for `.sticky-bottom` utility.\n\n```html\n\u003Cdiv class=\"sticky-sm-bottom\">Stick to the bottom on viewports sized SM (small) or wider\u003C/div>\n\u003Cdiv class=\"sticky-md-bottom\">Stick to the bottom on viewports sized MD (medium) or wider\u003C/div>\n\u003Cdiv class=\"sticky-lg-bottom\">Stick to the bottom on viewports sized LG (large) or wider\u003C/div>\n\u003Cdiv class=\"sticky-xl-bottom\">Stick to the bottom on viewports sized XL (extra-large) or wider\u003C/div>\n\u003Cdiv class=\"sticky-xxl-bottom\">Stick to the bottom on viewports sized XXL (extra-extra-large) or wider\u003C/div>\n```","src/content/docs/helpers/position.mdx","283c24febbd99b27","helpers/position.mdx","helpers/ratio",{"id":870,"data":872,"body":875,"filePath":876,"digest":877,"legacyId":878,"deferredRender":139},{"description":873,"title":874,"toc":139},"Use generated pseudo elements to make an element maintain the aspect ratio of your choosing. Perfect for responsively handling video or slideshow embeds based on the width of the parent.","Ratios","## About\n\nUse the ratio helper to manage the aspect ratios of external content like `\u003Ciframe>`s, `\u003Cembed>`s, `\u003Cvideo>`s, and `\u003Cobject>`s. These helpers also can be used on any standard HTML child element (e.g., a `\u003Cdiv>` or `\u003Cimg>`). Styles are applied from the parent `.ratio` class directly to the child.\n\nAspect ratios are declared in a Sass map and included in each class via CSS variable, which also allows [custom aspect ratios](#custom-ratios).\n\n\u003CCallout>\n**Pro-Tip!** You don't need `frameborder=\"0\"` on your `\u003Ciframe>`s as we override that for you in [Reboot]([[docsref:/content/reboot]]).\n\u003C/Callout>\n\n## Example\n\nWrap any embed, like an `\u003Ciframe>`, in a parent element with `.ratio` and an aspect ratio class. The immediate child element is automatically sized thanks to our universal selector `.ratio > *`.\n\n\u003CExample code={`\u003Cdiv class=\"ratio ratio-16x9\">\n \u003Ciframe src=\"https://www.youtube.com/embed/zpOULjyy-n8?rel=0\" title=\"YouTube video\" allowfullscreen>\u003C/iframe>\n\u003C/div>`} />\n\n## Aspect ratios\n\nAspect ratios can be customized with modifier classes. By default the following ratio classes are provided:\n\n\u003CExample class=\"bd-example-ratios\" code={`\u003Cdiv class=\"ratio ratio-1x1\">\n \u003Cdiv>1x1\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"ratio ratio-4x3\">\n \u003Cdiv>4x3\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"ratio ratio-16x9\">\n \u003Cdiv>16x9\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"ratio ratio-21x9\">\n \u003Cdiv>21x9\u003C/div>\n\u003C/div>`} />\n\n## Custom ratios\n\nEach `.ratio-*` class includes a CSS custom property (or CSS variable) in the selector. You can override this CSS variable to create custom aspect ratios on the fly with some quick math on your part.\n\nFor example, to create a 2x1 aspect ratio, set `--bs-aspect-ratio: 50%` on the `.ratio`.\n\n\u003CExample class=\"bd-example-ratios\" code={`\u003Cdiv class=\"ratio\" style=\"--bs-aspect-ratio: 50%;\">\n \u003Cdiv>2x1\u003C/div>\n\u003C/div>`} />\n\nThis CSS variable makes it easy to modify the aspect ratio across breakpoints. The following is 4x3 to start, but changes to a custom 2x1 at the medium breakpoint.\n\n```scss\n.ratio-4x3 {\n @include media-breakpoint-up(md) {\n --bs-aspect-ratio: 50%; // 2x1\n }\n}\n```\n\n\u003CExample class=\"bd-example-ratios bd-example-ratios-breakpoint\" code={`\u003Cdiv class=\"ratio ratio-4x3\">\n \u003Cdiv>4x3, then 2x1\u003C/div>\n\u003C/div>`} />\n\n\n## Sass maps\n\nWithin `_variables.scss`, you can change the aspect ratios you want to use. Here's our default `$ratio-aspect-ratios` map. Modify the map as you like and recompile your Sass to put them to use.\n\n\u003CScssDocs name=\"aspect-ratios\" file=\"scss/_variables.scss\" />","src/content/docs/helpers/ratio.mdx","13873c288c73f69e","helpers/ratio.mdx","helpers/stacks",{"id":879,"data":881,"body":885,"filePath":886,"digest":887,"legacyId":888,"deferredRender":139},{"added":882,"description":883,"title":884,"toc":139},{"version":519},"Shorthand helpers that build on top of our flexbox utilities to make component layout faster and easier than ever.","Stacks","Stacks offer a shortcut for applying a number of flexbox properties to quickly and easily create layouts in Bootstrap. All credit for the concept and implementation goes to the open source [Pylon project](https://almonk.github.io/pylon/).\n\n\u003CCallout type=\"warning\">\n**Heads up!** Support for gap utilities with flexbox isn't available in Safari prior to 14.5, so consider verifying your intended browser support. Grid layout should have no issues. [Read more](https://caniuse.com/flexbox-gap).\n\u003C/Callout>\n\n## Vertical\n\nUse `.vstack` to create vertical layouts. Stacked items are full-width by default. Use `.gap-*` utilities to add space between items.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"vstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2\">Second item\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\n## Horizontal\n\nUse `.hstack` for horizontal layouts. Stacked items are vertically centered by default and only take up their necessary width. Use `.gap-*` utilities to add space between items.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2\">Second item\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\nUsing horizontal margin utilities like `.ms-auto` as spacers:\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2 ms-auto\">Second item\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\nAnd with [vertical rules]([[docsref:/helpers/vertical-rule]]):\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2 ms-auto\">Second item\u003C/div>\n \u003Cdiv class=\"vr\">\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\n## Examples\n\nUse `.vstack` to stack buttons and other elements:\n\n\u003CExample code={`\u003Cdiv class=\"vstack gap-2 col-md-5 mx-auto\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">Save changes\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">Cancel\u003C/button>\n\u003C/div>`} />\n\nCreate an inline form with `.hstack`:\n\n\u003CExample code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cinput class=\"form-control me-auto\" type=\"text\" placeholder=\"Add your item here...\" aria-label=\"Add your item here...\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">Submit\u003C/button>\n \u003Cdiv class=\"vr\">\u003C/div>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-danger\">Reset\u003C/button>\n\u003C/div>`} />\n\n## CSS\n\n\u003CScssDocs name=\"stacks\" file=\"scss/helpers/_stacks.scss\" />","src/content/docs/helpers/stacks.mdx","21c929105bed4df7","helpers/stacks.mdx","helpers/stretched-link",{"id":889,"data":891,"body":894,"filePath":895,"digest":896,"legacyId":897,"deferredRender":139},{"description":892,"title":893},"Make any HTML element or Bootstrap component clickable by \"stretching\" a nested link via CSS.","Stretched link","Add `.stretched-link` to a link to make its [containing block](https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block) clickable via a `::after` pseudo element. In most cases, this means that an element with `position: relative;` that contains a link with the `.stretched-link` class is clickable. Please note given [how CSS `position` works](https://www.w3.org/TR/CSS21/visuren.html#propdef-position), `.stretched-link` cannot be mixed with most table elements.\n\nCards have `position: relative` by default in Bootstrap, so in this case you can safely add the `.stretched-link` class to a link in the card without any other HTML changes.\n\nMultiple links and tap targets are not recommended with stretched links. However, some `position` and `z-index` styles can help should this be required.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text={false} title=\"Card image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card with stretched link\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary stretched-link\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\nMost custom components do not have `position: relative` by default, so we need to add the `.position-relative` here to prevent the link from stretching outside the parent element.\n\n\u003CExample code={`\u003Cdiv class=\"d-flex position-relative\">\n \u003CPlaceholder width=\"144\" height=\"144\" class=\"flex-shrink-0 me-3\" text={false} title=\"Generic placeholder image22222\" />\n \u003Cdiv>\n \u003Ch5 class=\"mt-0\">Custom component with stretched link\u003C/h5>\n \u003Cp>This is some placeholder content for the custom component. It is intended to mimic what some real-world content would look like, and we're using it here to give the component a bit of body and size.\u003C/p>\n \u003Ca href=\"#\" class=\"stretched-link\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"row g-0 bg-body-secondary position-relative\">\n \u003Cdiv class=\"col-md-6 mb-md-0 p-md-4\">\n \u003CPlaceholder width=\"100%\" height=\"200\" class=\"w-100\" text={false} title=\"Generic placeholder image\" />\n \u003C/div>\n \u003Cdiv class=\"col-md-6 p-4 ps-md-0\">\n \u003Ch5 class=\"mt-0\">Columns with stretched link\u003C/h5>\n \u003Cp>Another instance of placeholder content for this other custom component. It is intended to mimic what some real-world content would look like, and we're using it here to give the component a bit of body and size.\u003C/p>\n \u003Ca href=\"#\" class=\"stretched-link\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Identifying the containing block\n\nIf the stretched link doesn't seem to work, the [containing block](https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#Identifying_the_containing_block) will probably be the cause. The following CSS properties will make an element the containing block:\n\n- A `position` value other than `static`\n- A `transform` or `perspective` value other than `none`\n- A `will-change` value of `transform` or `perspective`\n- A `filter` value other than `none` or a `will-change` value of `filter` (only works on Firefox)\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text={false} title=\"Card image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card with stretched links\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Cp class=\"card-text\">\n \u003Ca href=\"#\" class=\"stretched-link text-danger\" style=\"position: relative;\">Stretched link will not work here, because \u003Ccode>position: relative\u003C/code> is added to the link\u003C/a>\n \u003C/p>\n \u003Cp class=\"card-text bg-body-tertiary\" style=\"transform: rotate(0);\">\n This \u003Ca href=\"#\" class=\"text-warning stretched-link\">stretched link\u003C/a> will only be spread over the \u003Ccode>p\u003C/code>-tag, because a transform is applied to it.\n \u003C/p>\n \u003C/div>\n\u003C/div>`} />","src/content/docs/helpers/stretched-link.mdx","8bf85fea5f693105","helpers/stretched-link.mdx","helpers/text-truncation",{"id":898,"data":900,"body":903,"filePath":904,"digest":905,"legacyId":906,"deferredRender":139},{"description":901,"title":902,"toc":345},"Truncate long strings of text with an ellipsis.","Text truncation","For longer content, you can add a `.text-truncate` class to truncate the text with an ellipsis. **Requires `display: inline-block` or `display: block`.**\n\n\u003CExample code={`\u003C!-- Block level -->\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-2 text-truncate\">\n This text is quite long, and will be truncated once displayed.\n \u003C/div>\n\u003C/div>\n\n\u003C!-- Inline level -->\n\u003Cspan class=\"d-inline-block text-truncate\" style=\"max-width: 150px;\">\n This text is quite long, and will be truncated once displayed.\n\u003C/span>`} />","src/content/docs/helpers/text-truncation.mdx","8bc7768bd2eb2b6e","helpers/text-truncation.mdx","helpers/vertical-rule",{"id":907,"data":909,"body":913,"filePath":914,"digest":915,"legacyId":916,"deferredRender":139},{"added":910,"description":911,"title":912,"toc":139},{"version":519},"Use the custom vertical rule helper to create vertical dividers like the `\u003Chr>` element.","Vertical rule","## How it works\n\nVertical rules are inspired by the `\u003Chr>` element, allowing you to create vertical dividers in common layouts. They're styled just like `\u003Chr>` elements:\n\n- They're `1px` wide\n- They have `min-height` of `1em`\n- Their color is set via `currentColor` and `opacity`\n\nCustomize them with additional styles as needed.\n\n## Example\n\n\u003CExample code={`\u003Cdiv class=\"vr\">\u003C/div>`} />\n\nVertical rules scale their height in flex layouts:\n\n\u003CExample code={`\u003Cdiv class=\"d-flex\" style=\"height: 200px;\">\n \u003Cdiv class=\"vr\">\u003C/div>\n\u003C/div>`} />\n\n## With stacks\n\nThey can also be used in [stacks]([[docsref:/helpers/stacks]]):\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2 ms-auto\">Second item\u003C/div>\n \u003Cdiv class=\"vr\">\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Sass variables\n\nCustomize the vertical rule Sass variable to change its width.\n\n\u003CScssDocs name=\"vr-variables\" file=\"scss/_variables.scss\" />","src/content/docs/helpers/vertical-rule.mdx","2cd5ea2f87727263","helpers/vertical-rule.mdx","helpers/visually-hidden",{"id":917,"data":919,"body":923,"filePath":924,"digest":925,"legacyId":926,"deferredRender":139},{"aliases":920,"description":921,"title":922},"/docs/[[config:docs_version]]/helpers/screen-readers/","Use these helpers to visually hide elements but keep them accessible to assistive technologies.","Visually hidden","Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.visually-hidden`. Use `.visually-hidden-focusable` to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). `.visually-hidden-focusable` can also be applied to a container–thanks to `:focus-within`, the container will be displayed when any child element of the container receives focus.\n\n\u003CExample code={`\u003Ch2 class=\"visually-hidden\">Title for screen readers\u003C/h2>\n\u003Ca class=\"visually-hidden-focusable\" href=\"#content\">Skip to main content\u003C/a>\n\u003Cdiv class=\"visually-hidden-focusable\">A container with a \u003Ca href=\"#\">focusable element\u003C/a>.\u003C/div>`} />\n\nBoth `visually-hidden` and `visually-hidden-focusable` can also be used as mixins.\n\n```scss\n// Usage as a mixin\n\n.visually-hidden-title {\n @include visually-hidden;\n}\n\n.skip-navigation {\n @include visually-hidden-focusable;\n}\n```","src/content/docs/helpers/visually-hidden.mdx","ad52a33d7a019095","helpers/visually-hidden.mdx","layout/breakpoints",{"id":927,"data":929,"body":933,"filePath":934,"digest":935,"legacyId":936,"deferredRender":139},{"aliases":930,"description":931,"title":932,"toc":139},"/docs/[[config:docs_version]]/layout/","Breakpoints are customizable widths that determine how your responsive layout behaves across device or viewport sizes in Bootstrap.","Breakpoints","## Core concepts\n\n- **Breakpoints are the building blocks of responsive design.** Use them to control when your layout can be adapted at a particular viewport or device size.\n\n- **Use media queries to architect your CSS by breakpoint.** Media queries are a feature of CSS that allow you to conditionally apply styles based on a set of browser and operating system parameters. We most commonly use `min-width` in our media queries.\n\n- **Mobile first, responsive design is the goal.** Bootstrap's CSS aims to apply the bare minimum of styles to make a layout work at the smallest breakpoint, and then layers on styles to adjust that design for larger devices. This optimizes your CSS, improves rendering time, and provides a great experience for your visitors.\n\n## Available breakpoints\n\nBootstrap includes six default breakpoints, sometimes referred to as _grid tiers_, for building responsively. These breakpoints can be customized if you're using our source Sass files.\n\n\u003CBsTable>\n| Breakpoint | Class infix | Dimensions |\n| --- | --- | --- |\n| Extra small | \u003Cem>None\u003C/em> |<576px |\n| Small | `sm` | ≥576px |\n| Medium | `md` | ≥768px |\n| Large | `lg` | ≥992px |\n| Extra large | `xl` | ≥1200px |\n| Extra extra large | `xxl` | ≥1400px |\n\u003C/BsTable>\n\n\nEach breakpoint was chosen to comfortably hold containers whose widths are multiples of 12. Breakpoints are also representative of a subset of common device sizes and viewport dimensions—they don't specifically target every use case or device. Instead, the ranges provide a strong and consistent foundation to build on for nearly any device.\n\nThese breakpoints are customizable via Sass—you'll find them in a Sass map in our `_variables.scss` stylesheet.\n\n\u003CScssDocs name=\"grid-breakpoints\" file=\"scss/_variables.scss\" />\n\nFor more information and examples on how to modify our Sass maps and variables, please refer to [the CSS section of the Grid documentation]([[docsref:/layout/grid#css]]).\n\n## Media queries\n\nSince Bootstrap is developed to be mobile first, we use a handful of [media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries) to create sensible breakpoints for our layouts and interfaces. These breakpoints are mostly based on minimum viewport widths and allow us to scale up elements as the viewport changes.\n\n### Min-width\n\nBootstrap primarily uses the following media query ranges—or breakpoints—in our source Sass files for our layout, grid system, and components.\n\n```scss\n// Source mixins\n\n// No media query necessary for xs breakpoint as it's effectively `@media (min-width: 0) { ... }`\n@include media-breakpoint-up(sm) { ... }\n@include media-breakpoint-up(md) { ... }\n@include media-breakpoint-up(lg) { ... }\n@include media-breakpoint-up(xl) { ... }\n@include media-breakpoint-up(xxl) { ... }\n\n// Usage\n\n// Example: Hide starting at `min-width: 0`, and then show at the `sm` breakpoint\n.custom-class {\n display: none;\n}\n@include media-breakpoint-up(sm) {\n .custom-class {\n display: block;\n }\n}\n```\n\nThese Sass mixins translate in our compiled CSS using the values declared in our Sass variables. For example:\n\n```scss\n// X-Small devices (portrait phones, less than 576px)\n// No media query for `xs` since this is the default in Bootstrap\n\n// Small devices (landscape phones, 576px and up)\n@media (min-width: 576px) { ... }\n\n// Medium devices (tablets, 768px and up)\n@media (min-width: 768px) { ... }\n\n// Large devices (desktops, 992px and up)\n@media (min-width: 992px) { ... }\n\n// X-Large devices (large desktops, 1200px and up)\n@media (min-width: 1200px) { ... }\n\n// XX-Large devices (larger desktops, 1400px and up)\n@media (min-width: 1400px) { ... }\n```\n\n### Max-width\n\nWe occasionally use media queries that go in the other direction (the given screen size _or smaller_):\n\n```scss\n// No media query necessary for xs breakpoint as it's effectively `@media (max-width: 0) { ... }`\n@include media-breakpoint-down(sm) { ... }\n@include media-breakpoint-down(md) { ... }\n@include media-breakpoint-down(lg) { ... }\n@include media-breakpoint-down(xl) { ... }\n@include media-breakpoint-down(xxl) { ... }\n\n// Example: Style from medium breakpoint and down\n@include media-breakpoint-down(md) {\n .custom-class {\n display: block;\n }\n}\n```\n\nThese mixins take those declared breakpoints, subtract `.02px` from them, and use them as our `max-width` values. For example:\n\n```scss\n// `xs` returns only a ruleset and no media query\n// ... { ... }\n\n// `sm` applies to x-small devices (portrait phones, less than 576px)\n@media (max-width: 575.98px) { ... }\n\n// `md` applies to small devices (landscape phones, less than 768px)\n@media (max-width: 767.98px) { ... }\n\n// `lg` applies to medium devices (tablets, less than 992px)\n@media (max-width: 991.98px) { ... }\n\n// `xl` applies to large devices (desktops, less than 1200px)\n@media (max-width: 1199.98px) { ... }\n\n// `xxl` applies to x-large devices (large desktops, less than 1400px)\n@media (max-width: 1399.98px) { ... }\n```\n\n\u003CCallout name=\"info-mediaqueries-breakpoints\" type=\"warning\" />\n\n### Single breakpoint\n\nThere are also media queries and mixins for targeting a single segment of screen sizes using the minimum and maximum breakpoint widths.\n\n```scss\n@include media-breakpoint-only(xs) { ... }\n@include media-breakpoint-only(sm) { ... }\n@include media-breakpoint-only(md) { ... }\n@include media-breakpoint-only(lg) { ... }\n@include media-breakpoint-only(xl) { ... }\n@include media-breakpoint-only(xxl) { ... }\n```\n\nFor example the `@include media-breakpoint-only(md) { ... }` will result in :\n\n```scss\n@media (min-width: 768px) and (max-width: 991.98px) { ... }\n```\n\n### Between breakpoints\n\nSimilarly, media queries may span multiple breakpoint widths:\n\n```scss\n@include media-breakpoint-between(md, xl) { ... }\n```\n\nWhich results in:\n\n```scss\n// Example\n// Apply styles starting from medium devices and up to extra large devices\n@media (min-width: 768px) and (max-width: 1199.98px) { ... }\n```","src/content/docs/layout/breakpoints.mdx","dc7987c35c544d2f","layout/breakpoints.mdx","layout/columns",{"id":937,"data":939,"body":942,"filePath":943,"digest":944,"legacyId":945,"deferredRender":139},{"description":940,"title":941,"toc":139},"Learn how to modify columns with a handful of options for alignment, ordering, and offsetting thanks to our flexbox grid system. Plus, see how to use column classes to manage widths of non-grid elements.","Columns","\u003CCallout>\n**Heads up!** Be sure to [read the Grid page]([[docsref:/layout/grid]]) first before diving into how to modify and customize your grid columns.\n\u003C/Callout>\n\n## How they work\n\n- **Columns build on the grid's flexbox architecture.** Flexbox means we have options for changing individual columns and [modifying groups of columns at the row level]([[docsref:/layout/grid#row-columns]]). You choose how columns grow, shrink, or otherwise change.\n\n- **When building grid layouts, all content goes in columns.** The hierarchy of Bootstrap's grid goes from [container]([[docsref:/layout/containers]]) to row to column to your content. On rare occasions, you may combine content and column, but be aware there can be unintended consequences.\n\n- **Bootstrap includes predefined classes for creating fast, responsive layouts.** With [six breakpoints]([[docsref:/layout/breakpoints]]) and a dozen columns at each grid tier, we have dozens of classes already built for you to create your desired layouts. This can be disabled via Sass if you wish.\n\n## Alignment\n\nUse flexbox alignment utilities to vertically and horizontally align columns.\n\n### Vertical alignment\n\nChange the vertical alignment with any of the responsive `align-items-*` classes.\n\n\u003CExample class=\"bd-example-row bd-example-row-flex-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row align-items-start\">\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row bd-example-row-flex-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row align-items-center\">\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row bd-example-row-flex-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row align-items-end\">\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nOr, change the alignment of each column individually with any of the responsive `.align-self-*` classes.\n\n\u003CExample class=\"bd-example-row bd-example-row-flex-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col align-self-start\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col align-self-center\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col align-self-end\">\n One of three columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Horizontal alignment\n\nChange the horizontal alignment with any of the responsive `justify-content-*` classes.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row justify-content-start\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-center\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-end\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-around\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-between\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-evenly\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Column wrapping\n\nIf more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-9\">.col-9\u003C/div>\n \u003Cdiv class=\"col-4\">.col-4\u003Cbr>Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.\u003C/div>\n \u003Cdiv class=\"col-6\">.col-6\u003Cbr>Subsequent columns continue along the new line.\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Column breaks\n\nBreaking columns to a new line in flexbox requires a small hack: add an element with `width: 100%` wherever you want to wrap your columns to a new line. Normally this is accomplished with multiple `.row`s, but not every implementation method can account for this.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-6 col-sm-3\">.col-6 .col-sm-3\u003C/div>\n \u003Cdiv class=\"col-6 col-sm-3\">.col-6 .col-sm-3\u003C/div>\n\n \u003C!-- Force next columns to break to new line -->\n \u003Cdiv class=\"w-100\">\u003C/div>\n\n \u003Cdiv class=\"col-6 col-sm-3\">.col-6 .col-sm-3\u003C/div>\n \u003Cdiv class=\"col-6 col-sm-3\">.col-6 .col-sm-3\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nYou may also apply this break at specific breakpoints with our [responsive display utilities]([[docsref:/utilities/display]]).\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-6 col-sm-4\">.col-6 .col-sm-4\u003C/div>\n \u003Cdiv class=\"col-6 col-sm-4\">.col-6 .col-sm-4\u003C/div>\n\n \u003C!-- Force next columns to break to new line at md breakpoint and up -->\n \u003Cdiv class=\"w-100 d-none d-md-block\">\u003C/div>\n\n \u003Cdiv class=\"col-6 col-sm-4\">.col-6 .col-sm-4\u003C/div>\n \u003Cdiv class=\"col-6 col-sm-4\">.col-6 .col-sm-4\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Reordering\n\n### Order classes\n\nUse `.order-` classes for controlling the **visual order** of your content. These classes are responsive, so you can set the `order` by breakpoint (e.g., `.order-1.order-md-2`). Includes support for `1` through `5` across all six grid tiers.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n First in DOM, no order applied\n \u003C/div>\n \u003Cdiv class=\"col order-5\">\n Second in DOM, with a larger order\n \u003C/div>\n \u003Cdiv class=\"col order-1\">\n Third in DOM, with an order of 1\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nThere are also responsive `.order-first` and `.order-last` classes that change the `order` of an element by applying `order: -1` and `order: 6`, respectively. These classes can also be intermixed with the numbered `.order-*` classes as needed.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col order-last\">\n First in DOM, ordered last\n \u003C/div>\n \u003Cdiv class=\"col\">\n Second in DOM, unordered\n \u003C/div>\n \u003Cdiv class=\"col order-first\">\n Third in DOM, ordered first\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\nIf you need more `.order-*` classes, you can add new ones by modifying our `$utilities` Sass map. [Read our Sass maps and loops docs]([[docsref:/customize/sass#maps-and-loops]]) or [our Modify utilities docs]([[docsref:/utilities/api#modify-utilities]]) for details.\n\n```scss\n$utilities: map-merge(\n $utilities,\n (\n \"order\": map-merge(\n map-get($utilities, \"order\"),\n (\n values: map-merge(\n map-get(map-get($utilities, \"order\"), \"values\"),\n (\n 6: 6, // Add a new `.order-{breakpoint}-6` utility\n last: 7 // Change the `.order-{breakpoint}-last` utility to use the next number\n )\n ),\n ),\n ),\n )\n);\n```\n\n### Offsetting columns\n\nYou can offset grid columns in two ways: our responsive `.offset-` grid classes and our [margin utilities]([[docsref:/utilities/spacing]]). Grid classes are sized to match columns while margins are more useful for quick layouts where the width of the offset is variable.\n\n#### Offset classes\n\nMove columns to the right using `.offset-md-*` classes. These classes increase the left margin of a column by `*` columns. For example, `.offset-md-4` moves `.col-md-4` over four columns.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-4\">.col-md-4\u003C/div>\n \u003Cdiv class=\"col-md-4 offset-md-4\">.col-md-4 .offset-md-4\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-3 offset-md-3\">.col-md-3 .offset-md-3\u003C/div>\n \u003Cdiv class=\"col-md-3 offset-md-3\">.col-md-3 .offset-md-3\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-6 offset-md-3\">.col-md-6 .offset-md-3\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nIn addition to column clearing at responsive breakpoints, you may need to reset offsets. See this in action in [the grid example]([[docsref:/examples/grid]]).\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-5 col-md-6\">.col-sm-5 .col-md-6\u003C/div>\n \u003Cdiv class=\"col-sm-5 offset-sm-2 col-md-6 offset-md-0\">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-6 col-md-5 col-lg-6\">.col-sm-6 .col-md-5 .col-lg-6\u003C/div>\n \u003Cdiv class=\"col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0\">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n#### Margin utilities\n\nWith the move to flexbox in v4, you can use margin utilities like `.me-auto` to force sibling columns away from one another.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-4\">.col-md-4\u003C/div>\n \u003Cdiv class=\"col-md-4 ms-auto\">.col-md-4 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-3 ms-md-auto\">.col-md-3 .ms-md-auto\u003C/div>\n \u003Cdiv class=\"col-md-3 ms-md-auto\">.col-md-3 .ms-md-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-auto me-auto\">.col-auto .me-auto\u003C/div>\n \u003Cdiv class=\"col-auto\">.col-auto\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Standalone column classes\n\nThe `.col-*` classes can also be used outside a `.row` to give an element a specific width. Whenever column classes are used as non-direct children of a row, the paddings are omitted.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"col-3 p-3 mb-2\">\n .col-3: width of 25%\n\u003C/div>\n\n\u003Cdiv class=\"col-sm-9 p-3\">\n .col-sm-9: width of 75% above sm breakpoint\n\u003C/div>`} />\n\nThe classes can be used together with utilities to create responsive floated images. Make sure to wrap the content in a [`.clearfix`]([[docsref:/helpers/clearfix]]) wrapper to clear the float if the text is shorter.\n\n\u003CExample code={`\u003Cdiv class=\"clearfix\">\n \u003CPlaceholder width=\"100%\" height=\"210\" class=\"col-md-6 float-md-end mb-3 ms-md-3\" text=\"Responsive floated image\" />\n\n \u003Cp>\n A paragraph of placeholder text. We're using it here to show the use of the clearfix class. We're adding quite a few meaningless phrases here to demonstrate how the columns interact here with the floated image.\n \u003C/p>\n\n \u003Cp>\n As you can see the paragraphs gracefully wrap around the floated image. Now imagine how this would look with some actual content in here, rather than just this boring placeholder text that goes on and on, but actually conveys no tangible information at. It simply takes up space and should not really be read.\n \u003C/p>\n\n \u003Cp>\n And yet, here you are, still persevering in reading this placeholder text, hoping for some more insights, or some hidden easter egg of content. A joke, perhaps. Unfortunately, there's none of that here.\n \u003C/p>\n\u003C/div>`} />","src/content/docs/layout/columns.mdx","267bb72987235133","layout/columns.mdx","layout/containers",{"id":946,"data":948,"body":951,"filePath":952,"digest":953,"legacyId":954,"deferredRender":139},{"description":949,"title":950,"toc":139},"Containers are a fundamental building block of Bootstrap that contain, pad, and align your content within a given device or viewport.","Containers","## How they work\n\nContainers are the most basic layout element in Bootstrap and are **required when using our default grid system**. Containers are used to contain, pad, and (sometimes) center the content within them. While containers *can* be nested, most layouts do not require a nested container.\n\nBootstrap comes with three different containers:\n\n- `.container`, which sets a `max-width` at each responsive breakpoint\n- `.container-{breakpoint}`, which is `width: 100%` until the specified breakpoint\n- `.container-fluid`, which is `width: 100%` at all breakpoints\n\nThe table below illustrates how each container's `max-width` compares to the original `.container` and `.container-fluid` across each breakpoint.\n\nSee them in action and compare them in our [Grid example]([[docsref:/examples/grid#containers]]).\n\n\u003CBsTable>\n| | Extra small\u003Cdiv class=\"fw-normal\"><576px\u003C/div> | Small\u003Cdiv class=\"fw-normal\">≥576px\u003C/div> | Medium\u003Cdiv class=\"fw-normal\">≥768px\u003C/div> | Large\u003Cdiv class=\"fw-normal\">≥992px\u003C/div> | X-Large\u003Cdiv class=\"fw-normal\">≥1200px\u003C/div> | XX-Large\u003Cdiv class=\"fw-normal\">≥1400px\u003C/div> |\n| --- | --- | --- | --- | --- | --- | --- |\n| `.container` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 540px | 720px | 960px | 1140px | 1320px |\n| `.container-sm` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 540px | 720px | 960px | 1140px | 1320px |\n| `.container-md` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 720px | 960px | 1140px | 1320px |\n| `.container-lg` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 960px | 1140px | 1320px |\n| `.container-xl` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 1140px | 1320px |\n| `.container-xxl` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 1320px |\n| `.container-fluid` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> |\n\u003C/BsTable>\n\n## Default container\n\nOur default `.container` class is a responsive, fixed-width container, meaning its `max-width` changes at each breakpoint.\n\n```html\n\u003Cdiv class=\"container\">\n \u003C!-- Content here -->\n\u003C/div>\n```\n\n## Responsive containers\n\nResponsive containers allow you to specify a class that is 100% wide until the specified breakpoint is reached, after which we apply `max-width`s for each of the higher breakpoints. For example, `.container-sm` is 100% wide to start until the `sm` breakpoint is reached, where it will scale up with `md`, `lg`, `xl`, and `xxl`.\n\n```html\n\u003Cdiv class=\"container-sm\">100% wide until small breakpoint\u003C/div>\n\u003Cdiv class=\"container-md\">100% wide until medium breakpoint\u003C/div>\n\u003Cdiv class=\"container-lg\">100% wide until large breakpoint\u003C/div>\n\u003Cdiv class=\"container-xl\">100% wide until extra large breakpoint\u003C/div>\n\u003Cdiv class=\"container-xxl\">100% wide until extra extra large breakpoint\u003C/div>\n```\n\n## Fluid containers\n\nUse `.container-fluid` for a full width container, spanning the entire width of the viewport.\n\n```html\n\u003Cdiv class=\"container-fluid\">\n ...\n\u003C/div>\n```\n\n## CSS\n\n### Sass variables\n\nAs shown above, Bootstrap generates a series of predefined container classes to help you build the layouts you desire. You may customize these predefined container classes by modifying the Sass map (found in `_variables.scss`) that powers them:\n\nFor more information and examples on how to modify our Sass maps and variables, please refer to [the CSS section of the Grid documentation]([[docsref:/layout/grid#css]]).\n\n### Sass mixins\n\n\u003CScssDocs name=\"container-max-widths\" file=\"scss/_variables.scss\" />\n\nIn addition to customizing the Sass, you can also create your own containers with our Sass mixin.\n\n```scss\n// Source mixin\n@mixin make-container($padding-x: $container-padding-x) {\n width: 100%;\n padding-right: $padding-x;\n padding-left: $padding-x;\n margin-right: auto;\n margin-left: auto;\n}\n\n// Usage\n.custom-container {\n @include make-container();\n}\n```","src/content/docs/layout/containers.mdx","10b2f26ad50e3244","layout/containers.mdx","layout/css-grid",{"id":955,"data":957,"body":961,"filePath":962,"digest":963,"legacyId":964,"deferredRender":139},{"added":958,"description":959,"title":960,"toc":139},{"version":519},"Learn how to enable, use, and customize our alternate layout system built on CSS Grid with examples and code snippets.","CSS Grid","Bootstrap's default grid system represents the culmination of over a decade of CSS layout techniques, tried and tested by millions of people. But, it was also created without many of the modern CSS features and techniques we're seeing in browsers like the new CSS Grid.\n\n\u003CCallout type=\"warning\">\n**Heads up—our CSS Grid system is experimental and opt-in as of v5.1.0!** We included it in our documentation's CSS to demonstrate it for you, but it's disabled by default. Keep reading to learn how to enable it in your projects.\n\u003C/Callout>\n\n## How it works\n\nWith Bootstrap 5, we've added the option to enable a separate grid system that's built on CSS Grid, but with a Bootstrap twist. You still get classes you can apply on a whim to build responsive layouts, but with a different approach under the hood.\n\n- **CSS Grid is opt-in.** Disable the default grid system by setting `$enable-grid-classes: false` and enable the CSS Grid by setting `$enable-cssgrid: true`. Then, recompile your Sass.\n\n- **Replace instances of `.row` with `.grid`.** The `.grid` class sets `display: grid` and creates a `grid-template` that you build on with your HTML.\n\n- **Replace `.col-*` classes with `.g-col-*` classes.** This is because our CSS Grid columns use the `grid-column` property instead of `width`.\n\n- **Columns and gutter sizes are set via CSS variables.** Set these on the parent `.grid` and customize however you want, inline or in a stylesheet, with `--bs-columns` and `--bs-gap`.\n\nIn the future, Bootstrap will likely shift to a hybrid solution as the `gap` property has achieved nearly full browser support for flexbox.\n\n## Key differences\n\nCompared to the default grid system:\n\n- Flex utilities don't affect the CSS Grid columns in the same way.\n\n- Gaps replaces gutters. The `gap` property replaces the horizontal `padding` from our default grid system and functions more like `margin`.\n\n- As such, unlike `.row`s, `.grid`s have no negative margins and margin utilities cannot be used to change the grid gutters. Grid gaps are applied horizontally and vertically by default. See the [customizing section](#customizing) for more details.\n\n- Inline and custom styles should be viewed as replacements for modifier classes (e.g., `style=\"--bs-columns: 3;\"` vs `class=\"row-cols-3\"`).\n\n- Nesting works similarly, but may require you to reset your column counts on each instance of a nested `.grid`. See the [nesting section](#nesting) for details.\n\n## Examples\n\n### Three columns\n\nThree equal-width columns across all viewports and devices can be created by using the `.g-col-4` classes. Add [responsive classes](#responsive) to change the layout by viewport size.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n\u003C/div>`} />\n\n### Responsive\n\nUse responsive classes to adjust your layout across viewports. Here we start with two columns on the narrowest viewports, and then grow to three columns on medium viewports and above.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-6 g-col-md-4\">.g-col-6 .g-col-md-4\u003C/div>\n \u003Cdiv class=\"g-col-6 g-col-md-4\">.g-col-6 .g-col-md-4\u003C/div>\n \u003Cdiv class=\"g-col-6 g-col-md-4\">.g-col-6 .g-col-md-4\u003C/div>\n\u003C/div>`} />\n\nCompare that to this two column layout at all viewports.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\u003C/div>`} />\n\n## Wrapping\n\nGrid items automatically wrap to the next line when there's no more room horizontally. Note that the `gap` applies to horizontal and vertical gaps between grid items.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\u003C/div>`} />\n\n## Starts\n\nStart classes aim to replace our default grid's offset classes, but they're not entirely the same. CSS Grid creates a grid template through styles that tell browsers to \"start at this column\" and \"end at this column.\" Those properties are `grid-column-start` and `grid-column-end`. Start classes are shorthand for the former. Pair them with the column classes to size and align your columns however you need. Start classes begin at `1` as `0` is an invalid value for these properties.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-3 g-start-2\">.g-col-3 .g-start-2\u003C/div>\n \u003Cdiv class=\"g-col-4 g-start-6\">.g-col-4 .g-start-6\u003C/div>\n\u003C/div>`} />\n\n## Auto columns\n\nWhen there are no classes on the grid items (the immediate children of a `.grid`), each grid item will automatically be sized to one column.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n\u003C/div>`} />\n\nThis behavior can be mixed with grid column classes.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n\u003C/div>`} />\n\n## Nesting\n\nSimilar to our default grid system, our CSS Grid allows for easy nesting of `.grid`s. However, unlike the default, this grid inherits changes in the rows, columns, and gaps. Consider the example below:\n\n- We override the default number of columns with a local CSS variable: `--bs-columns: 3`.\n- In the first auto-column, the column count is inherited and each column is one-third of the available width.\n- In the second auto-column, we've reset the column count on the nested `.grid` to 12 (our default).\n- The third auto-column has no nested content.\n\nIn practice this allows for more complex and custom layouts when compared to our default grid system.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center overflow-x-auto\" style=\"--bs-columns: 3;\">\n \u003Cdiv>\n First auto-column\n \u003Cdiv class=\"grid\">\n \u003Cdiv>Auto-column\u003C/div>\n \u003Cdiv>Auto-column\u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv>\n Second auto-column\n \u003Cdiv class=\"grid\" style=\"--bs-columns: 12;\">\n \u003Cdiv class=\"g-col-6\">6 of 12\u003C/div>\n \u003Cdiv class=\"g-col-4\">4 of 12\u003C/div>\n \u003Cdiv class=\"g-col-2\">2 of 12\u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv>Third auto-column\u003C/div>\n\u003C/div>`} />\n\n## Customizing\n\nCustomize the number of columns, the number of rows, and the width of the gaps with local CSS variables.\n\n\u003CBsTable>\n| Variable | Fallback value | Description |\n| --- | --- | --- |\n| `--bs-rows` | `1` | The number of rows in your grid template |\n| `--bs-columns` | `12` | The number of columns in your grid template |\n| `--bs-gap` | `1.5rem` | The size of the gap between columns (vertical and horizontal) |\n\u003C/BsTable>\n\nThese CSS variables have no default value; instead, they apply fallback values that are used _until_ a local instance is provided. For example, we use `var(--bs-rows, 1)` for our CSS Grid rows, which ignores `--bs-rows` because that hasn't been set anywhere yet. Once it is, the `.grid` instance will use that value instead of the fallback value of `1`.\n\n### No grid classes\n\nImmediate children elements of `.grid` are grid items, so they'll be sized without explicitly adding a `.g-col` class.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-columns: 3;\">\n \u003Cdiv>Auto-column\u003C/div>\n \u003Cdiv>Auto-column\u003C/div>\n \u003Cdiv>Auto-column\u003C/div>\n\u003C/div>`} />\n\n### Columns and gaps\n\nAdjust the number of columns and the gap.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-columns: 4; --bs-gap: 5rem;\">\n \u003Cdiv class=\"g-col-2\">.g-col-2\u003C/div>\n \u003Cdiv class=\"g-col-2\">.g-col-2\u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-columns: 10; --bs-gap: 1rem;\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n\u003C/div>`} />\n\n### Adding rows\n\nAdding more rows and changing the placement of columns:\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-rows: 3; --bs-columns: 3;\">\n \u003Cdiv>Auto-column\u003C/div>\n \u003Cdiv class=\"g-start-2\" style=\"grid-row: 2\">Auto-column\u003C/div>\n \u003Cdiv class=\"g-start-3\" style=\"grid-row: 3\">Auto-column\u003C/div>\n\u003C/div>`} />\n\n### Gaps\n\nChange the vertical gaps only by modifying the `row-gap`. Note that we use `gap` on `.grid`s, but `row-gap` and `column-gap` can be modified as needed.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"row-gap: 0;\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\u003C/div>`} />\n\nBecause of that, you can have different vertical and horizontal `gap`s, which can take a single value (all sides) or a pair of values (vertical and horizontal). This can be applied with an inline style for `gap`, or with our `--bs-gap` CSS variable.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-gap: .25rem 1rem;\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\u003C/div>`} />\n\n## Sass\n\nOne limitation of the CSS Grid is that our default classes are still generated by two Sass variables, `$grid-columns` and `$grid-gutter-width`. This effectively predetermines the number of classes generated in our compiled CSS. You have two options here:\n\n- Modify those default Sass variables and recompile your CSS.\n- Use inline or custom styles to augment the provided classes.\n\nFor example, you can increase the column count and change the gap size, and then size your \"columns\" with a mix of inline styles and predefined CSS Grid column classes (e.g., `.g-col-4`).\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-columns: 18; --bs-gap: .5rem;\">\n \u003Cdiv style=\"grid-column: span 14;\">14 columns\u003C/div>\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n\u003C/div>`} />","src/content/docs/layout/css-grid.mdx","4abedb7a4fa352a0","layout/css-grid.mdx","layout/grid",{"id":965,"data":967,"body":970,"filePath":971,"digest":972,"legacyId":973,"deferredRender":139},{"description":968,"title":969,"toc":139},"Use our powerful mobile-first flexbox grid to build layouts of all shapes and sizes thanks to a twelve column system, six default responsive tiers, Sass variables and mixins, and dozens of predefined classes.","Grid system","## Example\n\nBootstrap's grid system uses a series of containers, rows, and columns to layout and align content. It's built with [flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox) and is fully responsive. Below is an example and an in-depth explanation for how the grid system comes together.\n\n\u003CCallout>\n**New to or unfamiliar with flexbox?** [Read this CSS Tricks flexbox guide](https://css-tricks.com/snippets/css/a-guide-to-flexbox/#flexbox-background) for background, terminology, guidelines, and code snippets.\n\u003C/Callout>\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n Column\n \u003C/div>\n \u003Cdiv class=\"col\">\n Column\n \u003C/div>\n \u003Cdiv class=\"col\">\n Column\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nThe above example creates three equal-width columns across all devices and viewports using our predefined grid classes. Those columns are centered in the page with the parent `.container`.\n\n## How it works\n\nBreaking it down, here's how the grid system comes together:\n\n- **Our grid supports [six responsive breakpoints]([[docsref:/layout/breakpoints]]).** Breakpoints are based on `min-width` media queries, meaning they affect that breakpoint and all those above it (e.g., `.col-sm-4` applies to `sm`, `md`, `lg`, `xl`, and `xxl`). This means you can control container and column sizing and behavior by each breakpoint.\n\n- **Containers center and horizontally pad your content.** Use `.container` for a responsive pixel width, `.container-fluid` for `width: 100%` across all viewports and devices, or a responsive container (e.g., `.container-md`) for a combination of fluid and pixel widths.\n\n- **Rows are wrappers for columns.** Each column has horizontal `padding` (called a gutter) for controlling the space between them. This `padding` is then counteracted on the rows with negative margins to ensure the content in your columns is visually aligned down the left side. Rows also support modifier classes to [uniformly apply column sizing](#row-columns) and [gutter classes]([[docsref:/layout/gutters]]) to change the spacing of your content.\n\n- **Columns are incredibly flexible.** There are 12 template columns available per row, allowing you to create different combinations of elements that span any number of columns. Column classes indicate the number of template columns to span (e.g., `col-4` spans four). `width`s are set in percentages so you always have the same relative sizing.\n\n- **Gutters are also responsive and customizable.** [Gutter classes are available]([[docsref:/layout/gutters]]) across all breakpoints, with all the same sizes as our [margin and padding spacing]([[docsref:/utilities/spacing]]). Change horizontal gutters with `.gx-*` classes, vertical gutters with `.gy-*`, or all gutters with `.g-*` classes. `.g-0` is also available to remove gutters.\n\n- **Sass variables, maps, and mixins power the grid.** If you don't want to use the predefined grid classes in Bootstrap, you can use our [grid's source Sass](#sass-variables) to create your own with more semantic markup. We also include some CSS custom properties to consume these Sass variables for even greater flexibility for you.\n\nBe aware of the limitations and [bugs around flexbox](https://github.com/philipwalton/flexbugs), like the [inability to use some HTML elements as flex containers](https://github.com/philipwalton/flexbugs#flexbug-9).\n\n## Grid options\n\nBootstrap's grid system can adapt across all six default breakpoints, and any breakpoints you customize. The six default grid tiers are as follows:\n\n- Extra small (xs)\n- Small (sm)\n- Medium (md)\n- Large (lg)\n- Extra large (xl)\n- Extra extra large (xxl)\n\nAs noted above, each of these breakpoints have their own container, unique class prefix, and modifiers. Here's how the grid changes across these breakpoints:\n\n\u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table mb-4\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">\u003C/th>\n \u003Cth scope=\"col\">\n xs\u003Cbr/>\n \u003Cspan class=\"fw-normal\"><576px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n sm\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥576px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n md\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥768px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n lg\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥992px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n xl\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥1200px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n xxl\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥1400px\u003C/span>\n \u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Container \u003Ccode class=\"fw-normal\">max-width\u003C/code>\u003C/th>\n \u003Ctd>None (auto)\u003C/td>\n \u003Ctd>540px\u003C/td>\n \u003Ctd>720px\u003C/td>\n \u003Ctd>960px\u003C/td>\n \u003Ctd>1140px\u003C/td>\n \u003Ctd>1320px\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Class prefix\u003C/th>\n \u003Ctd>\u003Ccode>.col-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-sm-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-md-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-lg-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-xl-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-xxl-\u003C/code>\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\"># of columns\u003C/th>\n \u003Ctd colspan=\"6\">12\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Gutter width\u003C/th>\n \u003Ctd colspan=\"6\">1.5rem (.75rem on left and right)\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Custom gutters\u003C/th>\n \u003Ctd colspan=\"6\">\u003Ca href=\"[[docsref:/layout/gutters]]\">Yes\u003C/a>\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Nestable\u003C/th>\n \u003Ctd colspan=\"6\">\u003Ca href=\"#nesting\">Yes\u003C/a>\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Column ordering\u003C/th>\n \u003Ctd colspan=\"6\">\u003Ca href=\"[[docsref:/layout/columns#reordering]]\">Yes\u003C/a>\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n## Auto-layout columns\n\nUtilize breakpoint-specific column classes for easy column sizing without an explicit numbered class like `.col-sm-6`.\n\n### Equal-width\n\nFor example, here are two grid layouts that apply to every device and viewport, from `xs` to `xxl`. Add any number of unit-less classes for each breakpoint you need and every column will be the same width.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 2\n \u003C/div>\n \u003Cdiv class=\"col\">\n 2 of 2\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col\">\n 2 of 3\n \u003C/div>\n \u003Cdiv class=\"col\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Setting one column width\n\nAuto-layout for flexbox grid columns also means you can set the width of one column and have the sibling columns automatically resize around it. You may use predefined grid classes (as shown below), grid mixins, or inline widths. Note that the other columns will resize no matter the width of the center column.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n 2 of 3 (wider)\n \u003C/div>\n \u003Cdiv class=\"col\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col-5\">\n 2 of 3 (wider)\n \u003C/div>\n \u003Cdiv class=\"col\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Variable width content\n\nUse `col-{breakpoint}-auto` classes to size columns based on the natural width of their content.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row justify-content-md-center\">\n \u003Cdiv class=\"col col-lg-2\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col-md-auto\">\n Variable width content\n \u003C/div>\n \u003Cdiv class=\"col col-lg-2\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col-md-auto\">\n Variable width content\n \u003C/div>\n \u003Cdiv class=\"col col-lg-2\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Responsive classes\n\nBootstrap's grid includes six tiers of predefined classes for building complex responsive layouts. Customize the size of your columns on extra small, small, medium, large, or extra large devices however you see fit.\n\n### All breakpoints\n\nFor grids that are the same from the smallest of devices to the largest, use the `.col` and `.col-*` classes. Specify a numbered class when you need a particularly sized column; otherwise, feel free to stick to `.col`.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">col\u003C/div>\n \u003Cdiv class=\"col\">col\u003C/div>\n \u003Cdiv class=\"col\">col\u003C/div>\n \u003Cdiv class=\"col\">col\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-8\">col-8\u003C/div>\n \u003Cdiv class=\"col-4\">col-4\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Stacked to horizontal\n\nUsing a single set of `.col-sm-*` classes, you can create a basic grid system that starts out stacked and becomes horizontal at the small breakpoint (`sm`).\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-8\">col-sm-8\u003C/div>\n \u003Cdiv class=\"col-sm-4\">col-sm-4\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm\">col-sm\u003C/div>\n \u003Cdiv class=\"col-sm\">col-sm\u003C/div>\n \u003Cdiv class=\"col-sm\">col-sm\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Mix and match\n\nDon't want your columns to simply stack in some grid tiers? Use a combination of different classes for each tier as needed. See the example below for a better idea of how it all works.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003C!-- Stack the columns on mobile by making one full-width and the other half-width -->\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-8\">.col-md-8\u003C/div>\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n \u003C/div>\n\n \u003C!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n \u003C/div>\n\n \u003C!-- Columns are always 50% wide, on mobile and desktop -->\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-6\">.col-6\u003C/div>\n \u003Cdiv class=\"col-6\">.col-6\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Row columns\n\nUse the responsive `.row-cols-*` classes to quickly set the number of columns that best render your content and layout. Whereas normal `.col-*` classes apply to the individual columns (e.g., `.col-md-4`), the row columns classes are set on the parent `.row` as a shortcut. With `.row-cols-auto` you can give the columns their natural width.\n\nUse these row columns classes to quickly create basic grid layouts or to control your card layouts.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-2\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-3\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-auto\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-4\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-4\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col-6\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-1 row-cols-sm-2 row-cols-md-4\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nYou can also use the accompanying Sass mixin, `row-cols()`:\n\n```scss\n.element {\n // Three columns to start\n @include row-cols(3);\n\n // Five columns from medium breakpoint up\n @include media-breakpoint-up(md) {\n @include row-cols(5);\n }\n}\n```\n\n## Nesting\n\nTo nest your content with the default grid, add a new `.row` and set of `.col-sm-*` columns within an existing `.col-sm-*` column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns).\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-3\">\n Level 1: .col-sm-3\n \u003C/div>\n \u003Cdiv class=\"col-sm-9\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-8 col-sm-6\">\n Level 2: .col-8 .col-sm-6\n \u003C/div>\n \u003Cdiv class=\"col-4 col-sm-6\">\n Level 2: .col-4 .col-sm-6\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## CSS\n\nWhen using Bootstrap's source Sass files, you have the option of using Sass variables and mixins to create custom, semantic, and responsive page layouts. Our predefined grid classes use these same variables and mixins to provide a whole suite of ready-to-use classes for fast responsive layouts.\n\n### Sass variables\n\nVariables and maps determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below.\n\n```scss\n$grid-columns: 12;\n$grid-gutter-width: 1.5rem;\n$grid-row-columns: 6;\n```\n\n\u003CScssDocs name=\"grid-breakpoints\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"container-max-widths\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\nMixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns.\n\n```scss\n// Creates a wrapper for a series of columns\n@include make-row();\n\n// Make the element grid-ready (applying everything but the width)\n@include make-col-ready();\n\n// Without optional size values, the mixin will create equal columns (similar to using .col)\n@include make-col();\n@include make-col($size, $columns: $grid-columns);\n\n// Offset with margins\n@include make-col-offset($size, $columns: $grid-columns);\n```\n\n### Example usage\n\nYou can modify the variables to your own custom values, or just use the mixins with their default values. Here's an example of using the default settings to create a two-column layout with a gap between.\n\n```scss\n.example-container {\n @include make-container();\n // Make sure to define this width after the mixin to override\n // `width: 100%` generated by `make-container()`\n width: 800px;\n}\n\n.example-row {\n @include make-row();\n}\n\n.example-content-main {\n @include make-col-ready();\n\n @include media-breakpoint-up(sm) {\n @include make-col(6);\n }\n @include media-breakpoint-up(lg) {\n @include make-col(8);\n }\n}\n\n.example-content-secondary {\n @include make-col-ready();\n\n @include media-breakpoint-up(sm) {\n @include make-col(6);\n }\n @include media-breakpoint-up(lg) {\n @include make-col(4);\n }\n}\n```\n\n\u003CExample code={`\u003Cdiv class=\"example-container\">\n \u003Cdiv class=\"example-row\">\n \u003Cdiv class=\"example-content-main\">Main content\u003C/div>\n \u003Cdiv class=\"example-content-secondary\">Secondary content\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Customizing the grid\n\nUsing our built-in grid Sass variables and maps, it's possible to completely customize the predefined grid classes. Change the number of tiers, the media query dimensions, and the container widths—then recompile.\n\n### Columns and gutters\n\nThe number of grid columns can be modified via Sass variables. `$grid-columns` is used to generate the widths (in percent) of each individual column while `$grid-gutter-width` sets the width for the column gutters. `$grid-row-columns` is used to set the maximum number of columns of `.row-cols-*`, any number over this limit is ignored.\n\n```scss\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n```\n\n### Grid tiers\n\nMoving beyond the columns themselves, you may also customize the number of grid tiers. If you wanted just four grid tiers, you'd update the `$grid-breakpoints` and `$container-max-widths` to something like this:\n\n```scss\n$grid-breakpoints: (\n xs: 0,\n sm: 480px,\n md: 768px,\n lg: 1024px\n);\n\n$container-max-widths: (\n sm: 420px,\n md: 720px,\n lg: 960px\n);\n```\n\nWhen making any changes to the Sass variables or maps, you'll need to save your changes and recompile. Doing so will output a brand-new set of predefined grid classes for column widths, offsets, and ordering. Responsive visibility utilities will also be updated to use the custom breakpoints. Make sure to set grid values in `px` (not `rem`, `em`, or `%`).","src/content/docs/layout/grid.mdx","2abb1ea68eb8837f","layout/grid.mdx","layout/gutters",{"id":974,"data":976,"body":979,"filePath":980,"digest":981,"legacyId":982,"deferredRender":139},{"description":977,"title":978,"toc":139},"Gutters are the padding between your columns, used to responsively space and align content in the Bootstrap grid system.","Gutters","## How they work\n\n- **Gutters are the gaps between column content, created by horizontal `padding`.** We set `padding-right` and `padding-left` on each column, and use negative `margin` to offset that at the start and end of each row to align content.\n\n- **Gutters start at `1.5rem` (`24px`) wide.** This allows us to match our grid to the [padding and margin spacers]([[docsref:/utilities/spacing]]) scale.\n\n- **Gutters can be responsively adjusted.** Use breakpoint-specific gutter classes to modify horizontal gutters, vertical gutters, and all gutters.\n\n## Horizontal gutters\n\n`.gx-*` classes can be used to control the horizontal gutter widths. The `.container` or `.container-fluid` parent may need to be adjusted if larger gutters are used too to avoid unwanted overflow, using a matching padding utility. For example, in the following example we've increased the padding with `.px-4`:\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container px-4 text-center\">\n \u003Cdiv class=\"row gx-5\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nAn alternative solution is to add a wrapper around the `.row` with the `.overflow-hidden` class:\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container overflow-hidden text-center\">\n \u003Cdiv class=\"row gx-5\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Vertical gutters\n\n`.gy-*` classes can be used to control the vertical gutter widths within a row when columns wrap to new lines. Like the horizontal gutters, the vertical gutters can cause some overflow below the `.row` at the end of a page. If this occurs, you add a wrapper around `.row` with the `.overflow-hidden` class:\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container overflow-hidden text-center\">\n \u003Cdiv class=\"row gy-5\">\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Horizontal & vertical gutters\n\nUse `.g-*` classes to control the horizontal and vertical grid gutters. In the example below, we use a smaller gutter width, so there isn't a need for the `.overflow-hidden` wrapper class.\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row g-2\">\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Row columns gutters\n\nGutter classes can also be added to [row columns]([[docsref:/layout/grid#row-columns]]). In the following example, we use responsive row columns and responsive gutter classes.\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-2 row-cols-lg-5 g-2 g-lg-3\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## No gutters\n\nThe gutters between columns in our predefined grid classes can be removed with `.g-0`. This removes the negative `margin`s from `.row` and the horizontal `padding` from all immediate children columns.\n\n**Need an edge-to-edge design?** Drop the parent `.container` or `.container-fluid` and add `.mx-0` to the `.row` to prevent overflow.\n\nIn practice, here's how it looks. Note that you can continue to use this with all other predefined grid classes (including column widths, responsive tiers, reorders, and more).\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"row g-0 text-center\">\n \u003Cdiv class=\"col-sm-6 col-md-8\">.col-sm-6 .col-md-8\u003C/div>\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n\u003C/div>`} />\n\n## Change the gutters\n\nClasses are built from the `$gutters` Sass map which is inherited from the `$spacers` Sass map.\n\n```scss\n$grid-gutter-width: 1.5rem;\n$gutters: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n);\n```","src/content/docs/layout/gutters.mdx","67c02754be207a7c","layout/gutters.mdx","layout/utilities",{"id":983,"data":985,"body":988,"filePath":989,"digest":990,"legacyId":991,"deferredRender":139},{"description":986,"title":987,"toc":139},"For faster mobile-friendly and responsive development, Bootstrap includes dozens of utility classes for showing, hiding, aligning, and spacing content.","Utilities for layout","## Changing `display`\n\nUse our [display utilities]([[docsref:/utilities/display]]) for responsively toggling common values of the `display` property. Mix it with our grid system, content, or components to show or hide them across specific viewports.\n\n## Flexbox options\n\nBootstrap is built with flexbox, but not every element's `display` has been changed to `display: flex` as this would add many unnecessary overrides and unexpectedly change key browser behaviors. Most of [our components]([[docsref:/components/alerts]]) are built with flexbox enabled.\n\nShould you need to add `display: flex` to an element, do so with `.d-flex` or one of the responsive variants (e.g., `.d-sm-flex`). You'll need this class or `display` value to allow the use of our extra [flexbox utilities]([[docsref:/utilities/flex]]) for sizing, alignment, spacing, and more.\n\n## Margin and padding\n\nUse the `margin` and `padding` [spacing utilities]([[docsref:/utilities/spacing]]) to control how elements and components are spaced and sized. Bootstrap includes a six-level scale for spacing utilities, based on a `1rem` value default `$spacer` variable. Choose values for all viewports (e.g., `.me-3` for `margin-right: 1rem` in LTR), or pick responsive variants to target specific viewports (e.g., `.me-md-3` for `margin-right: 1rem` —in LTR— starting at the `md` breakpoint).\n\n## Toggle `visibility`\n\nWhen toggling `display` isn't needed, you can toggle the `visibility` of an element with our [visibility utilities]([[docsref:/utilities/visibility]]). Invisible elements will still affect the layout of the page, but are visually hidden from visitors.","src/content/docs/layout/utilities.mdx","d3b766794b91fcf2","layout/utilities.mdx","layout/z-index",{"id":992,"data":994,"body":997,"filePath":998,"digest":999,"legacyId":1000,"deferredRender":139},{"description":995,"title":996},"While not a part of Bootstrap's grid system, z-indexes play an important part in how our components overlay and interact with one another.","Z-index","Several Bootstrap components utilize `z-index`, the CSS property that helps control layout by providing a third axis to arrange content. We utilize a default z-index scale in Bootstrap that's been designed to properly layer navigation, tooltips and popovers, modals, and more.\n\nThese higher values start at an arbitrary number, high and specific enough to ideally avoid conflicts. We need a standard set of these across our layered components—tooltips, popovers, navbars, dropdowns, modals—so we can be reasonably consistent in the behaviors. There's no reason we couldn't have used `100`+ or `500`+.\n\nWe don't encourage customization of these individual values; should you change one, you likely need to change them all.\n\n\u003CScssDocs name=\"zindex-stack\" file=\"scss/_variables.scss\" />\n\nTo handle overlapping borders within components (e.g., buttons and inputs in input groups), we use low single digit `z-index` values of `1`, `2`, and `3` for default, hover, and active states. On hover/focus/active, we bring a particular element to the forefront with a higher `z-index` value to show their border over the sibling elements.","src/content/docs/layout/z-index.mdx","42bc5a07c2236618","layout/z-index.mdx","utilities/api",{"id":1001,"data":1003,"body":1007,"filePath":1008,"digest":1009,"legacyId":1010,"deferredRender":139},{"aliases":1004,"description":1005,"title":1006,"toc":139},"/docs/[[config:docs_version]]/utilities/","The utility API is a Sass-based tool to generate utility classes.","Utility API","Bootstrap utilities are generated with our utility API and can be used to modify or extend our default set of utility classes via Sass. Our utility API is based on a series of Sass maps and functions for generating families of classes with various options. If you're unfamiliar with Sass maps, read up on the [official Sass docs](https://sass-lang.com/documentation/values/maps/) to get started.\n\nThe `$utilities` map contains all our utilities and is later merged with your custom `$utilities` map, if present. The utility map contains a keyed list of utility groups which accept the following options:\n\n\u003CBsTable class=\"table table-utilities\">\n| Option | Type | Default value | Description |\n| --- | --- | --- | --- |\n| [`property`](#property) | **Required** | – | Name of the property, this can be a string or an array of strings (e.g., horizontal paddings or margins). |\n| [`values`](#values) | **Required** | – | List of values, or a map if you don't want the class name to be the same as the value. If `null` is used as map key, `class` is not prepended to the class name. |\n| [`class`](#class) | Optional | null | Name of the generated class. If not provided and `property` is an array of strings, `class` will default to the first element of the `property` array. If not provided and `property` is a string, the `values` keys are used for the `class` names. |\n| [`css-var`](#css-variable-utilities) | Optional | `false` | Boolean to generate CSS variables instead of CSS rules. |\n| [`css-variable-name`](#css-variable-utilities) | Optional | null | Custom un-prefixed name for the CSS variable inside the ruleset. |\n| [`local-vars`](#local-css-variables) | Optional | null | Map of local CSS variables to generate in addition to the CSS rules. |\n| [`state`](#states) | Optional | null | List of pseudo-class variants (e.g., `:hover` or `:focus`) to generate. |\n| [`responsive`](#responsive) | Optional | `false` | Boolean indicating if responsive classes should be generated. |\n| `rfs` | Optional | `false` | Boolean to enable [fluid rescaling with RFS]([[docsref:/getting-started/rfs]]). |\n| [`print`](#print) | Optional | `false` | Boolean indicating if print classes need to be generated. |\n| `rtl` | Optional | `true` | Boolean indicating if utility should be kept in RTL. |\n\u003C/BsTable>\n\n## API explained\n\nAll utility variables are added to the `$utilities` variable within our `_utilities.scss` stylesheet. Each group of utilities looks something like this:\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nWhich outputs the following:\n\n```css\n.opacity-0 { opacity: 0; }\n.opacity-25 { opacity: .25; }\n.opacity-50 { opacity: .5; }\n.opacity-75 { opacity: .75; }\n.opacity-100 { opacity: 1; }\n```\n\n### Property\n\nThe required `property` key must be set for any utility, and it must contain a valid CSS property. This property is used in the generated utility's ruleset. When the `class` key is omitted, it also serves as the default class name. Consider the `text-decoration` utility:\n\n```scss\n$utilities: (\n \"text-decoration\": (\n property: text-decoration,\n values: none underline line-through\n )\n);\n```\n\nOutput:\n\n```css\n.text-decoration-none { text-decoration: none !important; }\n.text-decoration-underline { text-decoration: underline !important; }\n.text-decoration-line-through { text-decoration: line-through !important; }\n```\n\n### Values\n\nUse the `values` key to specify which values for the specified `property` should be used in the generated class names and rules. Can be a list or map (set in the utilities or in a Sass variable).\n\nAs a list, like with [`text-decoration` utilities]([[docsref:/utilities/text#text-decoration]]):\n\n```scss\nvalues: none underline line-through\n```\n\nAs a map, like with [`opacity` utilities]([[docsref:/utilities/opacity]]):\n\n```scss\nvalues: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n)\n```\n\nAs a Sass variable that sets the list or map, as in our [`position` utilities]([[docsref:/utilities/position]]):\n\n```scss\nvalues: $position-values\n```\n\n### Class\n\nUse the `class` option to change the class prefix used in the compiled CSS. For example, to change from `.opacity-*` to `.o-*`:\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n class: o,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.o-0 { opacity: 0 !important; }\n.o-25 { opacity: .25 !important; }\n.o-50 { opacity: .5 !important; }\n.o-75 { opacity: .75 !important; }\n.o-100 { opacity: 1 !important; }\n```\n\nIf `class: null`, generates classes for each of the `values` keys:\n\n```scss\n$utilities: (\n \"visibility\": (\n property: visibility,\n class: null,\n values: (\n visible: visible,\n invisible: hidden,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.visible { visibility: visible !important; }\n.invisible { visibility: hidden !important; }\n```\n\n### CSS variable utilities\n\nSet the `css-var` boolean option to `true` and the API will generate local CSS variables for the given selector instead of the usual `property: value` rules. Add an optional `css-variable-name` to set a different CSS variable name than the class name.\n\nConsider our `.text-opacity-*` utilities. If we add the `css-variable-name` option, we'll get a custom output.\n\n```scss\n$utilities: (\n \"text-opacity\": (\n css-var: true,\n css-variable-name: text-alpha,\n class: text-opacity,\n values: (\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1\n )\n ),\n);\n```\n\nOutput:\n\n```css\n.text-opacity-25 { --bs-text-alpha: .25; }\n.text-opacity-50 { --bs-text-alpha: .5; }\n.text-opacity-75 { --bs-text-alpha: .75; }\n.text-opacity-100 { --bs-text-alpha: 1; }\n```\n\n### Local CSS variables\n\nUse the `local-vars` option to specify a Sass map that will generate local CSS variables within the utility class's ruleset. Please note that it may require additional work to consume those local CSS variables in the generated CSS rules. For example, consider our `.bg-*` utilities:\n\n```scss\n$utilities: (\n \"background-color\": (\n property: background-color,\n class: bg,\n local-vars: (\n \"bg-opacity\": 1\n ),\n values: map-merge(\n $utilities-bg-colors,\n (\n \"transparent\": transparent\n )\n )\n )\n);\n```\n\nOutput:\n\n```css\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n```\n\n### States\n\nUse the `state` option to generate pseudo-class variations. Example pseudo-classes are `:hover` and `:focus`. When a list of states are provided, classnames are created for that pseudo-class. For example, to change opacity on hover, add `state: hover` and you'll get `.opacity-hover:hover` in your compiled CSS.\n\nNeed multiple pseudo-classes? Use a space-separated list of states: `state: hover focus`.\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n class: opacity,\n state: hover,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.opacity-0-hover:hover { opacity: 0 !important; }\n.opacity-25-hover:hover { opacity: .25 !important; }\n.opacity-50-hover:hover { opacity: .5 !important; }\n.opacity-75-hover:hover { opacity: .75 !important; }\n.opacity-100-hover:hover { opacity: 1 !important; }\n```\n\n### Responsive\n\nAdd the `responsive` boolean to generate responsive utilities (e.g., `.opacity-md-25`) across [all breakpoints]([[docsref:/layout/breakpoints]]).\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n responsive: true,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.opacity-0 { opacity: 0 !important; }\n.opacity-25 { opacity: .25 !important; }\n.opacity-50 { opacity: .5 !important; }\n.opacity-75 { opacity: .75 !important; }\n.opacity-100 { opacity: 1 !important; }\n\n@media (min-width: 576px) {\n .opacity-sm-0 { opacity: 0 !important; }\n .opacity-sm-25 { opacity: .25 !important; }\n .opacity-sm-50 { opacity: .5 !important; }\n .opacity-sm-75 { opacity: .75 !important; }\n .opacity-sm-100 { opacity: 1 !important; }\n}\n\n@media (min-width: 768px) {\n .opacity-md-0 { opacity: 0 !important; }\n .opacity-md-25 { opacity: .25 !important; }\n .opacity-md-50 { opacity: .5 !important; }\n .opacity-md-75 { opacity: .75 !important; }\n .opacity-md-100 { opacity: 1 !important; }\n}\n\n@media (min-width: 992px) {\n .opacity-lg-0 { opacity: 0 !important; }\n .opacity-lg-25 { opacity: .25 !important; }\n .opacity-lg-50 { opacity: .5 !important; }\n .opacity-lg-75 { opacity: .75 !important; }\n .opacity-lg-100 { opacity: 1 !important; }\n}\n\n@media (min-width: 1200px) {\n .opacity-xl-0 { opacity: 0 !important; }\n .opacity-xl-25 { opacity: .25 !important; }\n .opacity-xl-50 { opacity: .5 !important; }\n .opacity-xl-75 { opacity: .75 !important; }\n .opacity-xl-100 { opacity: 1 !important; }\n}\n\n@media (min-width: 1400px) {\n .opacity-xxl-0 { opacity: 0 !important; }\n .opacity-xxl-25 { opacity: .25 !important; }\n .opacity-xxl-50 { opacity: .5 !important; }\n .opacity-xxl-75 { opacity: .75 !important; }\n .opacity-xxl-100 { opacity: 1 !important; }\n}\n```\n\n### Print\n\nEnabling the `print` option will **also** generate utility classes for print, which are only applied within the `@media print { ... }` media query.\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n print: true,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.opacity-0 { opacity: 0 !important; }\n.opacity-25 { opacity: .25 !important; }\n.opacity-50 { opacity: .5 !important; }\n.opacity-75 { opacity: .75 !important; }\n.opacity-100 { opacity: 1 !important; }\n\n@media print {\n .opacity-print-0 { opacity: 0 !important; }\n .opacity-print-25 { opacity: .25 !important; }\n .opacity-print-50 { opacity: .5 !important; }\n .opacity-print-75 { opacity: .75 !important; }\n .opacity-print-100 { opacity: 1 !important; }\n}\n```\n\n## Importance\n\nAll utilities generated by the API include `!important` to ensure they override components and modifier classes as intended. You can toggle this setting globally with the `$enable-important-utilities` variable (defaults to `true`).\n\n## Using the API\n\nNow that you're familiar with how the utilities API works, learn how to add your own custom classes and modify our default utilities.\n\n### Override utilities\n\nOverride existing utilities by using the same key. For example, if you want additional responsive overflow utility classes, you can do this:\n\n```scss\n$utilities: (\n \"overflow\": (\n responsive: true,\n property: overflow,\n values: visible hidden scroll auto,\n ),\n);\n```\n\n### Add utilities\n\nNew utilities can be added to the default `$utilities` map with a `map-merge`. Make sure our required Sass files and `_utilities.scss` are imported first, then use the `map-merge` to add your additional utilities. For example, here's how to add a responsive `cursor` utility with three values.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"cursor\": (\n property: cursor,\n class: cursor,\n responsive: true,\n values: auto pointer grab,\n )\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n### Modify utilities\n\nModify existing utilities in the default `$utilities` map with `map-get` and `map-merge` functions. In the example below, we're adding an additional value to the `width` utilities. Start with an initial `map-merge` and then specify which utility you want to modify. From there, fetch the nested `\"width\"` map with `map-get` to access and modify the utility's options and values.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"width\": map-merge(\n map-get($utilities, \"width\"),\n (\n values: map-merge(\n map-get(map-get($utilities, \"width\"), \"values\"),\n (10: 10%),\n ),\n ),\n ),\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n#### Enable responsive\n\nYou can enable responsive classes for an existing set of utilities that are not currently responsive by default. For example, to make the `border` classes responsive:\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"border\": map-merge(\n map-get($utilities, \"border\"),\n ( responsive: true ),\n ),\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\nThis will now generate responsive variations of `.border` and `.border-0` for each breakpoint. Your generated CSS will look like this:\n\n```css\n.border { ... }\n.border-0 { ... }\n\n@media (min-width: 576px) {\n .border-sm { ... }\n .border-sm-0 { ... }\n}\n\n@media (min-width: 768px) {\n .border-md { ... }\n .border-md-0 { ... }\n}\n\n@media (min-width: 992px) {\n .border-lg { ... }\n .border-lg-0 { ... }\n}\n\n@media (min-width: 1200px) {\n .border-xl { ... }\n .border-xl-0 { ... }\n}\n\n@media (min-width: 1400px) {\n .border-xxl { ... }\n .border-xxl-0 { ... }\n}\n```\n\n#### Rename utilities\n\nMissing v4 utilities, or used to another naming convention? The utilities API can be used to override the resulting `class` of a given utility—for example, to rename `.ms-*` utilities to oldish `.ml-*`:\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"margin-start\": map-merge(\n map-get($utilities, \"margin-start\"),\n ( class: ml ),\n ),\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n### Remove utilities\n\nRemove any of the default utilities with the [`map-remove()` Sass function](https://sass-lang.com/documentation/modules/map/#remove).\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n// Remove multiple utilities with a comma-separated list\n$utilities: map-remove($utilities, \"width\", \"float\");\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\nYou can also use the [`map-merge()` Sass function](https://sass-lang.com/documentation/modules/map/#merge) and set the group key to `null` to remove the utility.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"width\": null\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n### Add, remove, modify\n\nYou can add, remove, and modify many utilities all at once with the [`map-merge()` Sass function](https://sass-lang.com/documentation/modules/map/#merge). Here's how you can combine the previous examples into one larger map.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n // Remove the `width` utility\n \"width\": null,\n // Make an existing utility responsive\n \"border\": map-merge(\n map-get($utilities, \"border\"),\n ( responsive: true ),\n ),\n // Add new utilities\n \"cursor\": (\n property: cursor,\n class: cursor,\n responsive: true,\n values: auto pointer grab,\n )\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n#### Remove utility in RTL\n\nSome edge cases make [RTL styling difficult](https://rtlstyling.com/posts/rtl-styling#common-things-that-might-not-work-for-rtl), such as line breaks in Arabic. Thus utilities can be dropped from RTL output by setting the `rtl` option to `false`:\n\n```scss\n$utilities: (\n \"word-wrap\": (\n property: word-wrap word-break,\n class: text,\n values: (break: break-word),\n rtl: false\n ),\n);\n```\n\nOutput:\n\n```css\n/* rtl:begin:remove */\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n/* rtl:end:remove */\n```\n\nThis doesn't output anything in RTL, thanks to [the RTLCSS `remove` control directive](https://rtlcss.com/learn/usage-guide/control-directives/#remove).","src/content/docs/utilities/api.mdx","b75c9110a943062a","utilities/api.mdx","utilities/background",{"id":1011,"data":1013,"body":1016,"filePath":1017,"digest":1018,"legacyId":1019,"deferredRender":139},{"description":1014,"title":1015,"toc":139},"Convey meaning through `background-color` and add decoration with gradients.","Background","import { getData } from '@libs/data'\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Background color\n\nSimilar to the contextual text color classes, set the background of an element to any contextual class. Background utilities **do not set `color`**, so in some cases you'll want to use `.text-*` [color utilities]([[docsref:/utilities/colors]]).\n\n\u003CCallout>\nBackground utilities like `.bg-*` that generated from our original `$theme-colors` Sass map don't yet respond to color modes, however, any `.bg-*-subtle` utility will. This will be resolved in v6.\n\u003C/Callout>\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"p-3 mb-2 bg-${themeColor.name} ${themeColor.contrast_color ? `text-${themeColor.contrast_color}` : `text-white`}\">.bg-${themeColor.name}\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-${themeColor.name}-subtle text-${themeColor.name}-emphasis\">.bg-${themeColor.name}-subtle\u003C/div>`),\n `\u003Cdiv class=\"p-3 mb-2 bg-body-secondary\">.bg-body-secondary\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-body-tertiary\">.bg-body-tertiary\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-body text-body\">.bg-body\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-black text-white\">.bg-black\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-white text-dark\">.bg-white\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-transparent text-body\">.bg-transparent\u003C/div>`\n]} />\n\n## Background gradient\n\nBy adding a `.bg-gradient` class, a linear gradient is added as background image to the backgrounds. This gradient starts with a semi-transparent white which fades out to the bottom.\n\nDo you need a gradient in your custom CSS? Just add `background-image: var(--bs-gradient);`.\n\n{getData('theme-colors').map((themeColor) => {\n return (\n \u003Cdiv class={`p-3 mb-2 bg-${themeColor.name} bg-gradient${themeColor.contrast_color ? (' text-' + themeColor.contrast_color) : ' text-white'}`}>.bg-{themeColor.name}.bg-gradient {themeColor.contrast_color}\u003C/div>\n )\n})}\n\u003Cdiv class=\"p-3 mb-2 bg-black bg-gradient text-white\">.bg-black.bg-gradient\u003C/div>\n\n## Opacity\n\n\u003CAddedIn version=\"5.1.0\" />\n\nAs of v5.1.0, `background-color` utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.\n\n### How it works\n\nConsider our default `.bg-success` utility.\n\n```css\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n```\n\nWe use an RGB version of our `--bs-success` (with the value of `25, 135, 84`) CSS variable and attached a second CSS variable, `--bs-bg-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.bg-success` now, your computed `color` value is `rgba(25, 135, 84, 1)`. The local CSS variable inside each `.bg-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.\n\n### Example\n\nTo change that opacity, override `--bs-bg-opacity` via custom styles or inline styles.\n\n\u003CExample code={`\u003Cdiv class=\"bg-success p-2 text-white\">This is default success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2\" style=\"--bs-bg-opacity: .5;\">This is 50% opacity success background\u003C/div>`} />\n\nOr, choose from any of the `.bg-opacity` utilities:\n\n\u003CExample code={`\u003Cdiv class=\"bg-success p-2 text-white\">This is default success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2 text-white bg-opacity-75\">This is 75% opacity success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2 text-dark bg-opacity-50\">This is 50% opacity success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2 text-dark bg-opacity-25\">This is 25% opacity success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2 text-dark bg-opacity-10\">This is 10% opacity success background\u003C/div>`} />\n\n## CSS\n\nIn addition to the following Sass functionality, consider reading about our included [CSS custom properties]([[docsref:/customize/css-variables]]) (aka CSS variables) for colors and more.\n\n### Sass variables\n\nMost `background-color` utilities are generated by our theme colors, reassigned from our generic color palette variables.\n\n\u003CScssDocs name=\"color-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-color-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"variable-gradient\" file=\"scss/_variables.scss\" />\n\nGrayscale colors are also available, but only a subset are used to generate any utilities.\n\n\u003CScssDocs name=\"gray-color-variables\" file=\"scss/_variables.scss\" />\n\nVariables for setting `background-color` in `.bg-*-subtle` utilities in light and dark mode:\n\n\u003CScssDocs name=\"theme-bg-subtle-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-bg-subtle-dark-variables\" file=\"scss/_variables-dark.scss\" />\n\n### Sass maps\n\nTheme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.\n\n\u003CScssDocs name=\"theme-colors-map\" file=\"scss/_variables.scss\" />\n\nGrayscale colors are also available as a Sass map. **This map is not used to generate any utilities.**\n\n\u003CScssDocs name=\"gray-colors-map\" file=\"scss/_variables.scss\" />\n\nRGB colors are generated from a separate Sass map:\n\n\u003CScssDocs name=\"theme-colors-rgb\" file=\"scss/_maps.scss\" />\n\nBackground color opacities build on that with their own map that's consumed by the utilities API:\n\n\u003CScssDocs name=\"utilities-bg-colors\" file=\"scss/_maps.scss\" />\n\nColor mode background colors are also available as a Sass map:\n\n\u003CScssDocs name=\"theme-bg-subtle-map\" file=\"scss/_maps.scss\" />\n\n\u003CScssDocs name=\"theme-bg-subtle-dark-map\" file=\"scss/_maps.scss\" />\n\n### Sass mixins\n\n**No mixins are used to generate our background utilities**, but we do have some additional mixins for other situations where you'd like to create your own gradients.\n\n\u003CScssDocs name=\"gradient-bg-mixin\" file=\"scss/mixins/_gradients.scss\" />\n\n\u003CScssDocs name=\"gradient-mixins\" file=\"scss/mixins/_gradients.scss\" />\n\n### Sass utilities API\n\nBackground utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-bg-color\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/background.mdx","fe877a4451043f99","utilities/background.mdx","utilities/borders",{"id":1020,"data":1022,"body":1025,"filePath":1026,"digest":1027,"legacyId":1028,"deferredRender":139},{"description":1023,"title":1024,"toc":139},"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons, or any other element.","Borders","import { getData } from '@libs/data'\n\n## Border\n\nUse border utilities to add or remove an element's borders. Choose from all borders or one at a time.\n\n### Additive\n\nAdd borders to custom elements:\n\n\u003CExample class=\"bd-example-border-utils\" code={`\u003Cspan class=\"border\">\u003C/span>\n\u003Cspan class=\"border-top\">\u003C/span>\n\u003Cspan class=\"border-end\">\u003C/span>\n\u003Cspan class=\"border-bottom\">\u003C/span>\n\u003Cspan class=\"border-start\">\u003C/span>`} />\n\n### Subtractive\n\nOr remove borders:\n\n\u003CExample class=\"bd-example-border-utils\" code={`\u003Cspan class=\"border border-0\">\u003C/span>\n\u003Cspan class=\"border border-top-0\">\u003C/span>\n\u003Cspan class=\"border border-end-0\">\u003C/span>\n\u003Cspan class=\"border border-bottom-0\">\u003C/span>\n\u003Cspan class=\"border border-start-0\">\u003C/span>`} />\n\n## Color\n\n\u003CCallout>\nBorder utilities like `.border-*` that generated from our original `$theme-colors` Sass map don't yet respond to color modes, however, any `.border-*-subtle` utility will. This will be resolved in v6.\n\u003C/Callout>\n\nChange the border color using utilities built on our theme colors.\n\n\u003CExample class=\"bd-example-border-utils\" code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cspan class=\"border border-${themeColor.name}\">\u003C/span>\n\u003Cspan class=\"border border-${themeColor.name}-subtle\">\u003C/span>`),\n `\u003Cspan class=\"border border-black\">\u003C/span>\n\u003Cspan class=\"border border-white\">\u003C/span>`\n]} />\n\nOr modify the default `border-color` of a component:\n\n\u003CExample code={`\u003Cdiv class=\"mb-4\">\n \u003Clabel for=\"exampleFormControlInput1\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control border-success\" id=\"exampleFormControlInput1\" placeholder=\"name@example.com\">\n\u003C/div>\n\n\u003Cdiv class=\"h4 pb-2 mb-4 text-danger border-bottom border-danger\">\n Dangerous heading\n\u003C/div>\n\n\u003Cdiv class=\"p-3 bg-info bg-opacity-10 border border-info border-start-0 rounded-end\">\n Changing border color and width\n\u003C/div>`} />\n\n## Opacity\n\n\u003CAddedIn version=\"5.2.0\" />\n\nBootstrap `border-{color}` utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.\n\n### How it works\n\nConsider our default `.border-success` utility.\n\n```css\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n```\n\nWe use an RGB version of our `--bs-success` (with the value of `25, 135, 84`) CSS variable and attached a second CSS variable, `--bs-border-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.border-success` now, your computed `color` value is `rgba(25, 135, 84, 1)`. The local CSS variable inside each `.border-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.\n\n### Example\n\nTo change that opacity, override `--bs-border-opacity` via custom styles or inline styles.\n\n\u003CExample code={`\u003Cdiv class=\"border border-success p-2 mb-2\">This is default success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2\" style=\"--bs-border-opacity: .5;\">This is 50% opacity success border\u003C/div>`} />\n\nOr, choose from any of the `.border-opacity` utilities:\n\n\u003CExample code={`\u003Cdiv class=\"border border-success p-2 mb-2\">This is default success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2 mb-2 border-opacity-75\">This is 75% opacity success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2 mb-2 border-opacity-50\">This is 50% opacity success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2 mb-2 border-opacity-25\">This is 25% opacity success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2 border-opacity-10\">This is 10% opacity success border\u003C/div>`} />\n\n## Width\n\n\u003CExample class=\"bd-example-border-utils\" code={`\u003Cspan class=\"border border-1\">\u003C/span>\n\u003Cspan class=\"border border-2\">\u003C/span>\n\u003Cspan class=\"border border-3\">\u003C/span>\n\u003Cspan class=\"border border-4\">\u003C/span>\n\u003Cspan class=\"border border-5\">\u003C/span>`} />\n\n## Radius\n\nAdd classes to an element to easily round its corners.\n\n\u003CExample class=\"bd-example-rounded-utils\" code={`\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded\" title=\"Example rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-top\" title=\"Example top rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-end\" title=\"Example right rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-bottom\" title=\"Example bottom rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-start\" title=\"Example left rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-circle\" title=\"Completely round image\" />\n\u003CPlaceholder width=\"150\" height=\"75\" class=\"rounded-pill\" title=\"Rounded pill image\" />`} />\n\n### Sizes\n\nUse the scaling classes for larger or smaller rounded corners. Sizes range from `0` to `5`, and can be configured by modifying the utilities API.\n\n\u003CExample class=\"bd-example-rounded-utils\" code={`\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-0\" title=\"Example non-rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-1\" title=\"Example small rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-2\" title=\"Example default rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-3\" title=\"Example large rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-4\" title=\"Example larger rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-5\" title=\"Example extra large rounded image\" />`} />\n\n\u003CExample class=\"bd-example-rounded-utils\" code={`\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-bottom-1\" title=\"Example small rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-start-2\" title=\"Example default left rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-end-circle\" title=\"Example right completely round image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-start-pill\" title=\"Example left rounded pill image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-5 rounded-top-0\" title=\"Example extra large bottom rounded image\" />`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\n\u003CScssDocs name=\"root-border-var\" file=\"scss/_root.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"border-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"border-radius-variables\" file=\"scss/_variables.scss\" />\n\nVariables for setting `border-color` in `.border-*-subtle` utilities in light and dark mode:\n\n\u003CScssDocs name=\"theme-border-subtle-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-border-subtle-dark-variables\" file=\"scss/_variables-dark.scss\" />\n\n### Sass maps\n\nColor mode adaptive border colors are also available as a Sass map:\n\n\u003CScssDocs name=\"theme-border-subtle-map\" file=\"scss/_maps.scss\" />\n\n\u003CScssDocs name=\"theme-border-subtle-dark-map\" file=\"scss/_maps.scss\" />\n\n### Sass mixins\n\n\u003CScssDocs name=\"border-radius-mixins\" file=\"scss/mixins/_border-radius.scss\" />\n\n### Sass utilities API\n\nBorder utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-borders\" file=\"scss/_utilities.scss\" />\n\n\u003CScssDocs name=\"utils-border-radius\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/borders.mdx","27f17f80e5533dcb","utilities/borders.mdx","utilities/colors",{"id":1029,"data":1031,"body":1034,"filePath":1035,"digest":1036,"legacyId":1037,"deferredRender":139},{"description":1032,"title":1033,"toc":139},"Convey meaning through `color` with a handful of color utility classes. Includes support for styling links with hover states, too.","Colors","import { getData } from '@libs/data'\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Colors\n\nColorize text with color utilities. If you want to colorize links, you can use the [`.link-*` helper classes]([[docsref:/helpers/colored-links]]) which have `:hover` and `:focus` states.\n\n\u003CCallout>\nColor utilities like `.text-*` that generated from our original `$theme-colors` Sass map don't yet respond to color modes, however, any `.text-*-emphasis` utility will. This will be resolved in v6.\n\u003C/Callout>\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cp class=\"text-${themeColor.name}${themeColor.contrast_color ? ` bg-${themeColor.contrast_color}` : ``}\">.text-${themeColor.name}\u003C/p>\n\u003Cp class=\"text-${themeColor.name}-emphasis\">.text-${themeColor.name}-emphasis\u003C/p>`),\n `\n\u003Cp class=\"text-body\">.text-body\u003C/p>\n\u003Cp class=\"text-body-emphasis\">.text-body-emphasis\u003C/p>\n\u003Cp class=\"text-body-secondary\">.text-body-secondary\u003C/p>\n\u003Cp class=\"text-body-tertiary\">.text-body-tertiary\u003C/p>\n\n\u003Cp class=\"text-black bg-white\">.text-black\u003C/p>\n\u003Cp class=\"text-white bg-dark\">.text-white\u003C/p>\n\u003Cp class=\"text-black-50 bg-white\">.text-black-50\u003C/p>\n\u003Cp class=\"text-white-50 bg-dark\">.text-white-50\u003C/p>`\n]} />\n\n\u003CCallout type=\"warning\">\n**Deprecation:** With the addition of `.text-opacity-*` utilities and CSS variables for text utilities, `.text-black-50` and `.text-white-50` are deprecated as of v5.1.0. They'll be removed in v6.0.0.\n\u003C/Callout>\n\n\u003CCallout type=\"warning\">\n**Deprecation:** With the addition of the expanded theme colors and variables, the `.text-muted` utility has been deprecated as of v5.3.0. Its default value has also been reassigned to the new `--bs-secondary-color` CSS variable to better support color modes. It will be removed in v6.0.0.\n\u003C/Callout>\n\n## Opacity\n\n\u003CAddedIn version=\"5.1.0\" />\n\nAs of v5.1.0, text color utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.\n\n### How it works\n\nConsider our default `.text-primary` utility.\n\n```css\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n```\n\nWe use an RGB version of our `--bs-primary` (with the value of `13, 110, 253`) CSS variable and attached a second CSS variable, `--bs-text-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.text-primary` now, your computed `color` value is `rgba(13, 110, 253, 1)`. The local CSS variable inside each `.text-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.\n\n### Example\n\nTo change that opacity, override `--bs-text-opacity` via custom styles or inline styles.\n\n\u003CExample code={`\u003Cdiv class=\"text-primary\">This is default primary text\u003C/div>\n\u003Cdiv class=\"text-primary\" style=\"--bs-text-opacity: .5;\">This is 50% opacity primary text\u003C/div>`} />\n\nOr, choose from any of the `.text-opacity` utilities:\n\n\u003CExample code={`\u003Cdiv class=\"text-primary\">This is default primary text\u003C/div>\n\u003Cdiv class=\"text-primary text-opacity-75\">This is 75% opacity primary text\u003C/div>\n\u003Cdiv class=\"text-primary text-opacity-50\">This is 50% opacity primary text\u003C/div>\n\u003Cdiv class=\"text-primary text-opacity-25\">This is 25% opacity primary text\u003C/div>`} />\n\n## Specificity\n\nSometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a `\u003Cdiv>` or more semantic element with the desired class.\n\n## CSS\n\nIn addition to the following Sass functionality, consider reading about our included [CSS custom properties]([[docsref:/customize/css-variables]]) (aka CSS variables) for colors and more.\n\n### Sass variables\n\nMost `color` utilities are generated by our theme colors, reassigned from our generic color palette variables.\n\n\u003CScssDocs name=\"color-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-color-variables\" file=\"scss/_variables.scss\" />\n\nGrayscale colors are also available, but only a subset are used to generate any utilities.\n\n\u003CScssDocs name=\"gray-color-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-text-map\" file=\"scss/_maps.scss\" />\n\nVariables for setting colors in `.text-*-emphasis` utilities in light and dark mode:\n\n\u003CScssDocs name=\"theme-text-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-text-dark-variables\" file=\"scss/_variables-dark.scss\" />\n\n### Sass maps\n\nTheme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.\n\n\u003CScssDocs name=\"theme-colors-map\" file=\"scss/_variables.scss\" />\n\nGrayscale colors are also available as a Sass map. **This map is not used to generate any utilities.**\n\n\u003CScssDocs name=\"gray-colors-map\" file=\"scss/_variables.scss\" />\n\nRGB colors are generated from a separate Sass map:\n\n\u003CScssDocs name=\"theme-colors-rgb\" file=\"scss/_maps.scss\" />\n\nColor opacities build on that with their own map that's consumed by the utilities API:\n\n\u003CScssDocs name=\"utilities-text-colors\" file=\"scss/_maps.scss\" />\n\nColor mode adaptive text colors are also available as a Sass map:\n\n\u003CScssDocs name=\"theme-text-map\" file=\"scss/_maps.scss\" />\n\n\u003CScssDocs name=\"theme-text-dark-map\" file=\"scss/_maps.scss\" />\n\n### Sass utilities API\n\nColor utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-color\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/colors.mdx","db46dee159c39222","utilities/colors.mdx","utilities/display",{"id":1038,"data":1040,"body":1043,"filePath":1044,"digest":1045,"legacyId":1046,"deferredRender":139},{"description":1041,"title":1042,"toc":139},"Quickly and responsively toggle the display value of components and more with our display utilities. Includes support for some of the more common values, as well as some extras for controlling display when printing.","Display property","## How it works\n\nChange the value of the [`display` property](https://developer.mozilla.org/en-US/docs/Web/CSS/display) with our responsive display utility classes. We purposely support only a subset of all possible values for `display`. Classes can be combined for various effects as you need.\n\n## Notation\n\nDisplay utility classes that apply to all [breakpoints]([[docsref:/layout/breakpoints]]), from `xs` to `xxl`, have no breakpoint abbreviation in them. This is because those classes are applied from `min-width: 0;` and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.\n\nAs such, the classes are named using the format:\n\n- `.d-{value}` for `xs`\n- `.d-{breakpoint}-{value}` for `sm`, `md`, `lg`, `xl`, and `xxl`.\n\nWhere *value* is one of:\n\n- `none`\n- `inline`\n- `inline-block`\n- `block`\n- `grid`\n- `inline-grid`\n- `table`\n- `table-cell`\n- `table-row`\n- `flex`\n- `inline-flex`\n\nThe display values can be altered by changing the `display` values defined in `$utilities` and recompiling the SCSS.\n\nThe media queries affect screen widths with the given breakpoint *or larger*. For example, `.d-lg-none` sets `display: none;` on `lg`, `xl`, and `xxl` screens.\n\n## Examples\n\n\u003CExample code={`\u003Cdiv class=\"d-inline p-2 text-bg-primary\">d-inline\u003C/div>\n\u003Cdiv class=\"d-inline p-2 text-bg-dark\">d-inline\u003C/div>`} />\n\n\u003CExample code={`\u003Cspan class=\"d-block p-2 text-bg-primary\">d-block\u003C/span>\n\u003Cspan class=\"d-block p-2 text-bg-dark\">d-block\u003C/span>`} />\n\n## Hiding elements\n\nFor faster mobile-friendly development, use responsive display classes for showing and hiding elements by device. Avoid creating entirely different versions of the same site, instead hide elements responsively for each screen size.\n\nTo hide elements simply use the `.d-none` class or one of the `.d-{sm,md,lg,xl,xxl}-none` classes for any responsive screen variation.\n\nTo show an element only on a given interval of screen sizes you can combine one `.d-*-none` class with a `.d-*-*` class, for example `.d-none .d-md-block .d-xl-none` will hide the element for all screen sizes except on medium and large devices.\n\n\u003CBsTable>\n| Screen size | Class |\n| --- | --- |\n| Hidden on all | `.d-none` |\n| Hidden only on xs | `.d-none .d-sm-block` |\n| Hidden only on sm | `.d-sm-none .d-md-block` |\n| Hidden only on md | `.d-md-none .d-lg-block` |\n| Hidden only on lg | `.d-lg-none .d-xl-block` |\n| Hidden only on xl | `.d-xl-none .d-xxl-block` |\n| Hidden only on xxl | `.d-xxl-none` |\n| Visible on all | `.d-block` |\n| Visible only on xs | `.d-block .d-sm-none` |\n| Visible only on sm | `.d-none .d-sm-block .d-md-none` |\n| Visible only on md | `.d-none .d-md-block .d-lg-none` |\n| Visible only on lg | `.d-none .d-lg-block .d-xl-none` |\n| Visible only on xl | `.d-none .d-xl-block .d-xxl-none` |\n| Visible only on xxl | `.d-none .d-xxl-block` |\n\u003C/BsTable>\n\n\u003CExample code={`\u003Cdiv class=\"d-lg-none\">hide on lg and wider screens\u003C/div>\n\u003Cdiv class=\"d-none d-lg-block\">hide on screens smaller than lg\u003C/div>`} />\n\n## Display in print\n\nChange the `display` value of elements when printing with our print display utility classes. Includes support for the same `display` values as our responsive `.d-*` utilities.\n\n- `.d-print-none`\n- `.d-print-inline`\n- `.d-print-inline-block`\n- `.d-print-block`\n- `.d-print-grid`\n- `.d-print-inline-grid`\n- `.d-print-table`\n- `.d-print-table-row`\n- `.d-print-table-cell`\n- `.d-print-flex`\n- `.d-print-inline-flex`\n\nThe print and display classes can be combined.\n\n\u003CExample code={`\u003Cdiv class=\"d-print-none\">Screen Only (Hide on print only)\u003C/div>\n\u003Cdiv class=\"d-none d-print-block\">Print Only (Hide on screen only)\u003C/div>\n\u003Cdiv class=\"d-none d-lg-block d-print-block\">Hide up to large on screen, but always show on print\u003C/div>`} />\n\n## CSS\n\n### Sass utilities API\n\nDisplay utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-display\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/display.mdx","fee3f24f8630d81b","utilities/display.mdx","utilities/flex",{"id":1047,"data":1049,"body":1052,"filePath":1053,"digest":1054,"legacyId":1055,"deferredRender":139},{"description":1050,"title":1051,"toc":139},"Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary.","Flex","import { getData } from '@libs/data'\nimport { getSequence } from '@libs/utils'\n\n## Enable flex behaviors\n\nApply `display` utilities to create a flexbox container and transform **direct children elements** into flex items. Flex containers and items are able to be modified further with additional flex properties.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex p-2\">I'm a flexbox container!\u003C/div>`} />\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-inline-flex p-2\">I'm an inline flexbox container!\u003C/div>`} />\n\nResponsive variations also exist for `.d-flex` and `.d-inline-flex`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.d{breakpoint.abbr}-flex\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.d{breakpoint.abbr}-inline-flex\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Direction\n\nSet the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is `row`. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts).\n\nUse `.flex-row` to set a horizontal direction (the browser default), or `.flex-row-reverse` to start the horizontal direction from the opposite side.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex flex-row mb-3\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"d-flex flex-row-reverse\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n\u003C/div>`} />\n\nUse `.flex-column` to set a vertical direction, or `.flex-column-reverse` to start the vertical direction from the opposite side.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex flex-column mb-3\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"d-flex flex-column-reverse\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n\u003C/div>`} />\n\nResponsive variations also exist for `flex-direction`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-row\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-row-reverse\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-column-reverse\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Justify content\n\nUse `justify-content` utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if `flex-direction: column`). Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `evenly`.\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex justify-content-start mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Start\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-end mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">End\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-center mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Center\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-between mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Between\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-around mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Around\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-evenly\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Evenly\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex justify-content-start\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-end\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-center\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-between\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-around\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-evenly\">...\u003C/div>\n```\n\nResponsive variations also exist for `justify-content`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-center\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-between\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-around\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-evenly\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Align items\n\nUse `align-items` utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from `start`, `end`, `center`, `baseline`, or `stretch` (browser default).\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-items-start mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex align-items-end mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex align-items-center mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex align-items-baseline mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex align-items-stretch\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-items-start\">...\u003C/div>\n\u003Cdiv class=\"d-flex align-items-end\">...\u003C/div>\n\u003Cdiv class=\"d-flex align-items-center\">...\u003C/div>\n\u003Cdiv class=\"d-flex align-items-baseline\">...\u003C/div>\n\u003Cdiv class=\"d-flex align-items-stretch\">...\u003C/div>\n```\n\nResponsive variations also exist for `align-items`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-center\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-baseline\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-stretch\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Align self\n\nUse `align-self` utilities on flexbox items to individually change their alignment on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from the same options as `align-items`: `start`, `end`, `center`, `baseline`, or `stretch` (browser default).\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-start p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-end p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-center p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-baseline p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-stretch p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"align-self-start\">Aligned flex item\u003C/div>\n\u003Cdiv class=\"align-self-end\">Aligned flex item\u003C/div>\n\u003Cdiv class=\"align-self-center\">Aligned flex item\u003C/div>\n\u003Cdiv class=\"align-self-baseline\">Aligned flex item\u003C/div>\n\u003Cdiv class=\"align-self-stretch\">Aligned flex item\u003C/div>\n```\n\nResponsive variations also exist for `align-self`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-center\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-baseline\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-stretch\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Fill\n\nUse the `.flex-fill` class on a series of sibling elements to force them into widths equal to their content (or equal widths if their content does not surpass their border-boxes) while taking up all available horizontal space.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"p-2 flex-fill\">Flex item with a lot of content\u003C/div>\n \u003Cdiv class=\"p-2 flex-fill\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2 flex-fill\">Flex item\u003C/div>\n\u003C/div>`} />\n\nResponsive variations also exist for `flex-fill`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-fill\u003C/code>\u003C/li>\n )\n})}\n\u003C/ul>\n\n## Grow and shrink\n\nUse `.flex-grow-*` utilities to toggle a flex item's ability to grow to fill available space. In the example below, the `.flex-grow-1` elements uses all available space it can, while allowing the remaining two flex items their necessary space.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"p-2 flex-grow-1\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Third flex item\u003C/div>\n\u003C/div>`} />\n\nUse `.flex-shrink-*` utilities to toggle a flex item's ability to shrink if necessary. In the example below, the second flex item with `.flex-shrink-1` is forced to wrap its contents to a new line, \"shrinking\" to allow more space for the previous flex item with `.w-100`.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"p-2 w-100\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2 flex-shrink-1\">Flex item\u003C/div>\n\u003C/div>`} />\n\nResponsive variations also exist for `flex-grow` and `flex-shrink`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-{'{'}grow|shrink{'}'}-0\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-{'{'}grow|shrink{'}'}-1\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Auto margins\n\nFlexbox can do some pretty awesome things when you mix flex alignments with auto margins. Shown below are three examples of controlling flex items via auto margins: default (no auto margin), pushing two items to the right (`.me-auto`), and pushing two items to the left (`.ms-auto`).\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex mb-3\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"d-flex mb-3\">\n \u003Cdiv class=\"me-auto p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"d-flex mb-3\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"ms-auto p-2\">Flex item\u003C/div>\n\u003C/div>`} />\n\n### With align-items\n\nVertically move one flex item to the top or bottom of a container by mixing `align-items`, `flex-direction: column`, and `margin-top: auto` or `margin-bottom: auto`.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex align-items-start flex-column mb-3\" style=\"height: 200px;\">\n \u003Cdiv class=\"mb-auto p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"d-flex align-items-end flex-column mb-3\" style=\"height: 200px;\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"mt-auto p-2\">Flex item\u003C/div>\n\u003C/div>`} />\n\n## Wrap\n\nChange how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with `.flex-nowrap`, wrapping with `.flex-wrap`, or reverse wrapping with `.flex-wrap-reverse`.\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex flex-nowrap\" style=\"width: 8rem;\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex flex-nowrap\">\n ...\n\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex flex-wrap\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 4\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 5\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 6\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 7\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 8\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 9\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 10\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 11\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 12\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 13\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 14\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex flex-wrap\">\n ...\n\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex flex-wrap-reverse\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 4\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 5\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 6\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 7\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 8\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 9\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 10\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 11\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 12\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 13\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 14\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex flex-wrap-reverse\">\n ...\n\u003C/div>\n```\n\n\nResponsive variations also exist for `flex-wrap`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-nowrap\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-wrap\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-wrap-reverse\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Order\n\nChange the _visual_ order of specific flex items with a handful of `order` utilities. We only provide options for making an item first or last, as well as a reset to use the DOM order. As `order` takes any integer value from 0 to 5, add custom CSS for any additional values needed.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex flex-nowrap\">\n \u003Cdiv class=\"order-3 p-2\">First flex item\u003C/div>\n \u003Cdiv class=\"order-2 p-2\">Second flex item\u003C/div>\n \u003Cdiv class=\"order-1 p-2\">Third flex item\u003C/div>\n\u003C/div>`} />\n\nResponsive variations also exist for `order`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => getSequence(0, 5).map((value) => {\n return (\n \u003Cli>\u003Ccode>.order{breakpoint.abbr}-{value}\u003C/code>\u003C/li>\n )\n}))}\n\u003C/ul>\n\nAdditionally there are also responsive `.order-first` and `.order-last` classes that change the `order` of an element by applying `order: -1` and `order: 6`, respectively.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => ['first', 'last'].map((value) => {\n return (\n \u003Cli>\u003Ccode>.order{breakpoint.abbr}-{value}\u003C/code>\u003C/li>\n )\n}))}\n\u003C/ul>\n\n## Align content\n\nUse `align-content` utilities on flexbox containers to align flex items _together_ on the cross axis. Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `stretch`. To demonstrate these utilities, we've enforced `flex-wrap: wrap` and increased the number of flex items.\n\n**Heads up!** This property has no effect on single rows of flex items.\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-start flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-start flex-wrap\">\n ...\n\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-end flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-end flex-wrap\">...\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-center flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-center flex-wrap\">...\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-between flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-between flex-wrap\">...\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-around flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-around flex-wrap\">...\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-stretch flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-stretch flex-wrap\">...\u003C/div>\n```\n\nResponsive variations also exist for `align-content`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-center\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-between\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-around\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-stretch\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Media object\n\nLooking to replicate the [media object component](https://getbootstrap.com/docs/4.6/components/media-object/) from Bootstrap 4? Recreate it in no time with a few flex utilities that allow even more flexibility and customization than before.\n\n\u003CExample code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"flex-shrink-0\">\n \u003CPlaceholder width=\"100\" height=\"100\" color=\"#999\" background=\"#e5e5e5\" text=\"Image\" />\n \u003C/div>\n \u003Cdiv class=\"flex-grow-1 ms-3\">\n This is some content from a media component. You can replace this with any content and adjust it as needed.\n \u003C/div>\n\u003C/div>`} />\n\nAnd say you want to vertically center the content next to the image:\n\n\u003CExample code={`\u003Cdiv class=\"d-flex align-items-center\">\n \u003Cdiv class=\"flex-shrink-0\">\n \u003CPlaceholder width=\"100\" height=\"100\" color=\"#999\" background=\"#e5e5e5\" text=\"Image\" />\n \u003C/div>\n \u003Cdiv class=\"flex-grow-1 ms-3\">\n This is some content from a media component. You can replace this with any content and adjust it as needed.\n \u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Sass utilities API\n\nFlexbox utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-flex\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/flex.mdx","3f04645655fa6837","utilities/flex.mdx","utilities/float",{"id":1056,"data":1058,"body":1061,"filePath":1062,"digest":1063,"legacyId":1064,"deferredRender":139},{"description":1059,"title":1060,"toc":139},"Toggle floats on any element, across any breakpoint, using our responsive float utilities.","Float","import { getData } from '@libs/data'\n\n## Overview\n\nThese utility classes float an element to the left or right, or disable floating, based on the current viewport size using the [CSS `float` property](https://developer.mozilla.org/en-US/docs/Web/CSS/float). `!important` is included to avoid specificity issues. These use the same viewport breakpoints as our grid system. Please be aware float utilities have no effect on flex items.\n\n\u003CExample code={`\u003Cdiv class=\"float-start\">Float start on all viewport sizes\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-end\">Float end on all viewport sizes\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-none\">Don't float on all viewport sizes\u003C/div>`} />\n\nUse the [clearfix helper]([[docsref:/helpers/clearfix]]) on a parent element to clear floats.\n\n## Responsive\n\nResponsive variations also exist for each `float` value.\n\n\u003CExample code={`\u003Cdiv class=\"float-sm-end\">Float end on viewports sized SM (small) or wider\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-md-end\">Float end on viewports sized MD (medium) or wider\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-lg-end\">Float end on viewports sized LG (large) or wider\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-xl-end\">Float end on viewports sized XL (extra large) or wider\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-xxl-end\">Float end on viewports sized XXL (extra extra large) or wider\u003C/div>\u003Cbr>`} />\n\nHere are all the support classes:\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.float{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.float{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.float{breakpoint.abbr}-none\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## CSS\n\n### Sass utilities API\n\nFloat utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-float\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/float.mdx","7bfe246a5a884b8a","utilities/float.mdx","utilities/interactions",{"id":1065,"data":1067,"body":1070,"filePath":1071,"digest":1072,"legacyId":1073,"deferredRender":139},{"description":1068,"title":1069,"toc":345},"Utility classes that change how users interact with contents of a website.","Interactions","## Text selection\n\nChange the way in which the content is selected when the user interacts with it.\n\n\u003CExample code={`\u003Cp class=\"user-select-all\">This paragraph will be entirely selected when clicked by the user.\u003C/p>\n\u003Cp class=\"user-select-auto\">This paragraph has default select behavior.\u003C/p>\n\u003Cp class=\"user-select-none\">This paragraph will not be selectable when clicked by the user.\u003C/p>`} />\n\n## Pointer events\n\nBootstrap provides `.pe-none` and `.pe-auto` classes to prevent or add element interactions.\n\n\u003CExample code={`\u003Cp>\u003Ca href=\"#\" class=\"pe-none\" tabindex=\"-1\" aria-disabled=\"true\">This link\u003C/a> can not be clicked.\u003C/p>\n\u003Cp>\u003Ca href=\"#\" class=\"pe-auto\">This link\u003C/a> can be clicked (this is default behavior).\u003C/p>\n\u003Cp class=\"pe-none\">\u003Ca href=\"#\" tabindex=\"-1\" aria-disabled=\"true\">This link\u003C/a> can not be clicked because the \u003Ccode>pointer-events\u003C/code> property is inherited from its parent. However, \u003Ca href=\"#\" class=\"pe-auto\">this link\u003C/a> has a \u003Ccode>pe-auto\u003C/code> class and can be clicked.\u003C/p>`} />\n\nThe `.pe-none` class (and the `pointer-events` CSS property it sets) only prevents interactions with a pointer (mouse, stylus, touch). Links and controls with `.pe-none` are, by default, still focusable and actionable for keyboard users. To ensure that they are completely neutralized even for keyboard users, you may need to add further attributes such as `tabindex=\"-1\"` (to prevent them from receiving keyboard focus) and `aria-disabled=\"true\"` (to convey the fact they are effectively disabled to assistive technologies), and possibly use JavaScript to completely prevent them from being actionable.\n\nIf possible, the simpler solution is:\n\n- For form controls, add the `disabled` HTML attribute.\n- For links, remove the `href` attribute, making it a non-interactive anchor or placeholder link.\n\n## CSS\n\n### Sass utilities API\n\nInteraction utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-interaction\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/interactions.mdx","ce4a42c6b30c0afc","utilities/interactions.mdx","utilities/link",{"id":1074,"data":1076,"body":1080,"filePath":1081,"digest":1082,"legacyId":1083,"deferredRender":139},{"added":1077,"description":1078,"title":1079,"toc":139},{"version":272},"Link utilities are used to stylize your anchors to adjust their color, opacity, underline offset, underline color, and more.","Link","import { getData } from '@libs/data'\n\n## Link opacity\n\nChange the alpha opacity of the link `rgba()` color value with utilities. Please be aware that changes to a color's opacity can lead to links with [*insufficient* contrast]([[docsref:getting-started/accessibility/#color-contrast]]).\n\n\u003CExample code={`\u003Cp>\u003Ca class=\"link-opacity-10\" href=\"#\">Link opacity 10\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-25\" href=\"#\">Link opacity 25\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-50\" href=\"#\">Link opacity 50\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-75\" href=\"#\">Link opacity 75\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-100\" href=\"#\">Link opacity 100\u003C/a>\u003C/p>`} />\n\nYou can even change the opacity level on hover.\n\n\u003CExample code={`\u003Cp>\u003Ca class=\"link-opacity-10-hover\" href=\"#\">Link hover opacity 10\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-25-hover\" href=\"#\">Link hover opacity 25\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-50-hover\" href=\"#\">Link hover opacity 50\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-75-hover\" href=\"#\">Link hover opacity 75\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-100-hover\" href=\"#\">Link hover opacity 100\u003C/a>\u003C/p>`} />\n\n## Link underlines\n\n### Underline color\n\nChange the underline's color independent of the link text color.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"link-underline-${themeColor.name}\">${themeColor.title} underline\u003C/a>\u003C/p>`)} />\n\n### Underline offset\n\nChange the underline's distance from your text. Offset is set in `em` units to automatically scale with the element's current `font-size`.\n\n\u003CExample code={`\u003Cp>\u003Ca href=\"#\">Default link\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-1\" href=\"#\">Offset 1 link\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2\" href=\"#\">Offset 2 link\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-3\" href=\"#\">Offset 3 link\u003C/a>\u003C/p>`} />\n\n### Underline opacity\n\nChange the underline's opacity. Requires adding `.link-underline` to first set an `rgba()` color we use to then modify the alpha opacity.\n\n\u003CExample code={`\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-0\" href=\"#\">Underline opacity 0\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-10\" href=\"#\">Underline opacity 10\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-25\" href=\"#\">Underline opacity 25\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-50\" href=\"#\">Underline opacity 50\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-75\" href=\"#\">Underline opacity 75\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-100\" href=\"#\">Underline opacity 100\u003C/a>\u003C/p>`} />\n\n### Hover variants\n\nJust like the `.link-opacity-*-hover` utilities, `.link-offset` and `.link-underline-opacity` utilities include `:hover` variants by default. Mix and match to create unique link styles.\n\n\u003Ca class=\"link-offset-2 link-offset-3-hover link-underline link-underline-opacity-0 link-underline-opacity-75-hover\" href=\"#\">\n Underline opacity 0\n\u003C/a>\n\n## Colored links\n\n[Colored link helpers]([[docsref:/helpers/colored-links/]]) have been updated to pair with our link utilities. Use the new utilities to modify the link opacity, underline opacity, and underline offset.\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"link-${themeColor.name} link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover\">${themeColor.title} link\u003C/a>\u003C/p>`),\n `\u003Cp>\u003Ca href=\"#\" class=\"link-body-emphasis link-offset-2 link-underline-opacity-25 link-underline-opacity-75-hover\">Emphasis link\u003C/a>\u003C/p>`\n]} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## CSS\n\nIn addition to the following Sass functionality, consider reading about our included [CSS custom properties]([[docsref:/customize/css-variables]]) (aka CSS variables) for colors and more.\n\n### Sass utilities API\n\nLink utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-links\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/link.mdx","58135df20523383b","utilities/link.mdx","utilities/object-fit",{"id":1084,"data":1086,"body":1090,"filePath":1091,"digest":1092,"legacyId":1093,"deferredRender":139},{"added":1087,"description":1088,"title":1089,"toc":139},{"version":272},"Use the object fit utilities to modify how the content of a [replaced element](https://developer.mozilla.org/en-US/docs/Web/CSS/Replaced_element), such as an `\u003Cimg>` or `\u003Cvideo>`, should be resized to fit its container.","Object fit","## How it works\n\nChange the value of the [`object-fit` property](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) with our responsive `object-fit` utility classes. This property tells the content to fill the parent container in a variety of ways, such as preserving the aspect ratio or stretching to take up as much space as possible.\n\nClasses for the value of `object-fit` are named using the format `.object-fit-{value}`. Choose from the following values:\n\n- `contain`\n- `cover`\n- `fill`\n- `scale` (for scale-down)\n- `none`\n\n## Examples\n\nAdd the `object-fit-{value}` class to the [replaced element](https://developer.mozilla.org/en-US/docs/Web/CSS/Replaced_element):\n\n\u003CExample class=\"d-flex overflow-auto\" code={`\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-contain border rounded\" text=\"Object fit contain\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-cover border rounded\" text=\"Object fit cover\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-fill border rounded\" text=\"Object fit fill\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-scale border rounded\" text=\"Object fit scale down\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-none border rounded\" text=\"Object fit none\" markup=\"img\" />`} />\n\n## Responsive\n\nResponsive variations also exist for each `object-fit` value using the format `.object-fit-{breakpoint}-{value}`, for the following breakpoint abbreviations: `sm`, `md`, `lg`, `xl`, and `xxl`. Classes can be combined for various effects as you need.\n\n\u003CExample class=\"d-flex overflow-auto\" code={`\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-sm-contain border rounded\" text=\"Contain on sm\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-md-contain border rounded\" text=\"Contain on md\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-lg-contain border rounded\" text=\"Contain on lg\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-xl-contain border rounded\" text=\"Contain on xl\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-xxl-contain border rounded\" text=\"Contain on xxl\" markup=\"img\" />`} />\n\n## Video\n\nThe `.object-fit-{value}` and responsive `.object-fit-{breakpoint}-{value}` utilities also work on `\u003Cvideo>` elements.\n\n```html\n\u003Cvideo src=\"...\" class=\"object-fit-contain\" autoplay>\u003C/video>\n\u003Cvideo src=\"...\" class=\"object-fit-cover\" autoplay>\u003C/video>\n\u003Cvideo src=\"...\" class=\"object-fit-fill\" autoplay>\u003C/video>\n\u003Cvideo src=\"...\" class=\"object-fit-scale\" autoplay>\u003C/video>\n\u003Cvideo src=\"...\" class=\"object-fit-none\" autoplay>\u003C/video>\n```\n\n## CSS\n\n### Sass utilities API\n\nObject fit utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-object-fit\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/object-fit.mdx","03cf222ad6c3af13","utilities/object-fit.mdx","utilities/opacity",{"id":1094,"data":1096,"body":1100,"filePath":1101,"digest":1102,"legacyId":1103,"deferredRender":139},{"added":1097,"description":1098,"title":1099},{"version":519},"Control the opacity of elements.","Opacity","The `opacity` property sets the opacity level for an element. The opacity level describes the transparency level, where `1` is not transparent at all, `.5` is 50% visible, and `0` is completely transparent.\n\nSet the `opacity` of an element using `.opacity-{value}` utilities.\n\n\u003Cdiv class=\"bd-example d-sm-flex\">\n \u003Cdiv class=\"opacity-100 p-3 m-2 bg-primary text-light fw-bold rounded\">100%\u003C/div>\n \u003Cdiv class=\"opacity-75 p-3 m-2 bg-primary text-light fw-bold rounded\">75%\u003C/div>\n \u003Cdiv class=\"opacity-50 p-3 m-2 bg-primary text-light fw-bold rounded\">50%\u003C/div>\n \u003Cdiv class=\"opacity-25 p-3 m-2 bg-primary text-light fw-bold rounded\">25%\u003C/div>\n \u003Cdiv class=\"opacity-0 p-3 m-2 bg-primary text-light fw-bold rounded\">0%\u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"opacity-100\">...\u003C/div>\n\u003Cdiv class=\"opacity-75\">...\u003C/div>\n\u003Cdiv class=\"opacity-50\">...\u003C/div>\n\u003Cdiv class=\"opacity-25\">...\u003C/div>\n\u003Cdiv class=\"opacity-0\">...\u003C/div>\n```\n\n## CSS\n\n### Sass utilities API\n\nOpacity utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-opacity\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/opacity.mdx","f51d418be7cb3930","utilities/opacity.mdx","utilities/overflow",{"id":1104,"data":1106,"body":1109,"filePath":1110,"digest":1111,"legacyId":1112,"deferredRender":139},{"description":1107,"title":1108,"toc":139},"Use these shorthand utilities for quickly configuring how content overflows an element.","Overflow","## Overflow\n\nAdjust the `overflow` property on the fly with four default values and classes. These classes are not responsive by default.\n\n\u003Cdiv class=\"bd-example d-md-flex\">\n \u003Cdiv class=\"overflow-auto p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary\" style=\"max-width: 260px; max-height: 100px;\">\n This is an example of using \u003Ccode>.overflow-auto\u003C/code> on an element with set width and height dimensions. By design, this content will vertically scroll.\n \u003C/div>\n \u003Cdiv class=\"overflow-hidden p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary\" style=\"max-width: 260px; max-height: 100px;\">\n This is an example of using \u003Ccode>.overflow-hidden\u003C/code> on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-visible p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary\" style=\"max-width: 260px; max-height: 100px;\">\n This is an example of using \u003Ccode>.overflow-visible\u003C/code> on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-scroll p-3 bg-body-tertiary\" style=\"max-width: 260px; max-height: 100px;\">\n This is an example of using \u003Ccode>.overflow-scroll\u003C/code> on an element with set width and height dimensions.\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"overflow-auto\">...\u003C/div>\n\u003Cdiv class=\"overflow-hidden\">...\u003C/div>\n\u003Cdiv class=\"overflow-visible\">...\u003C/div>\n\u003Cdiv class=\"overflow-scroll\">...\u003C/div>\n```\n\n### `overflow-x`\n\nAdjust the `overflow-x` property to affect the overflow of content horizontally.\n\n\u003Cdiv class=\"bd-example d-md-flex\">\n \u003Cdiv class=\"overflow-x-auto p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px; white-space: nowrap;\">\n \u003Cdiv>\u003Ccode>.overflow-x-auto\u003C/code> example on an element\u003C/div>\n \u003Cdiv> with set width and height dimensions.\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"overflow-x-hidden p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;white-space: nowrap;\">\n \u003Cdiv>\u003Ccode>.overflow-x-hidden\u003C/code> example\u003C/div>\n \u003Cdiv>on an element with set width and height dimensions.\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"overflow-x-visible p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;white-space: nowrap;\">\n \u003Cdiv>\u003Ccode>.overflow-x-visible\u003C/code> example \u003C/div>\n \u003Cdiv>on an element with set width and height dimensions.\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"overflow-x-scroll p-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;white-space: nowrap;\">\n \u003Cdiv>\u003Ccode>.overflow-x-scroll\u003C/code> example on an element\u003C/div>\n \u003Cdiv> with set width and height dimensions.\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"overflow-x-auto\">...\u003C/div>\n\u003Cdiv class=\"overflow-x-hidden\">...\u003C/div>\n\u003Cdiv class=\"overflow-x-visible\">...\u003C/div>\n\u003Cdiv class=\"overflow-x-scroll\">...\u003C/div>\n```\n\n### `overflow-y`\n\nAdjust the `overflow-y` property to affect the overflow of content vertically.\n\n\u003Cdiv class=\"bd-example d-md-flex\">\n \u003Cdiv class=\"overflow-y-auto p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;\">\n \u003Ccode>.overflow-y-auto\u003C/code> example on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-y-hidden p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;\">\n \u003Ccode>.overflow-y-hidden\u003C/code> example on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-y-visible p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;\">\n \u003Ccode>.overflow-y-visible\u003C/code> example on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-y-scroll p-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;\">\n \u003Ccode>.overflow-y-scroll\u003C/code> example on an element with set width and height dimensions.\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"overflow-y-auto\">...\u003C/div>\n\u003Cdiv class=\"overflow-y-hidden\">...\u003C/div>\n\u003Cdiv class=\"overflow-y-visible\">...\u003C/div>\n\u003Cdiv class=\"overflow-y-scroll\">...\u003C/div>\n```\n\nUsing Sass variables, you may customize the overflow utilities by changing the `$overflows` variable in `_variables.scss`.\n\n## CSS\n\n### Sass utilities API\n\nOverflow utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-overflow\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/overflow.mdx","10e01357f66e8a1b","utilities/overflow.mdx","utilities/position",{"id":1113,"data":1115,"body":1117,"filePath":1118,"digest":1119,"legacyId":1120,"deferredRender":139},{"description":1116,"title":865,"toc":139},"Use these shorthand utilities for quickly configuring the position of an element.","## Position values\n\nQuick positioning classes are available, though they are not responsive.\n\n```html\n\u003Cdiv class=\"position-static\">...\u003C/div>\n\u003Cdiv class=\"position-relative\">...\u003C/div>\n\u003Cdiv class=\"position-absolute\">...\u003C/div>\n\u003Cdiv class=\"position-fixed\">...\u003C/div>\n\u003Cdiv class=\"position-sticky\">...\u003C/div>\n```\n\n## Arrange elements\n\nArrange elements easily with the edge positioning utilities. The format is `{property}-{position}`.\n\nWhere *property* is one of:\n\n- `top` - for the vertical `top` position\n- `start` - for the horizontal `left` position (in LTR)\n- `bottom` - for the vertical `bottom` position\n- `end` - for the horizontal `right` position (in LTR)\n\nWhere *position* is one of:\n\n- `0` - for `0` edge position\n- `50` - for `50%` edge position\n- `100` - for `100%` edge position\n\n(You can add more position values by adding entries to the `$position-values` Sass map variable.)\n\n\u003CExample class=\"bd-example-position-utils\" code={`\u003Cdiv class=\"position-relative\">\n \u003Cdiv class=\"position-absolute top-0 start-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 end-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-50\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-50 end-50\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 start-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 end-0\">\u003C/div>\n\u003C/div>`} />\n\n## Center elements\n\nIn addition, you can also center the elements with the transform utility class `.translate-middle`.\n\nThis class applies the transformations `translateX(-50%)` and `translateY(-50%)` to the element which, in combination with the edge positioning utilities, allows you to absolute center an element.\n\n\u003CExample class=\"bd-example-position-utils\" code={`\u003Cdiv class=\"position-relative\">\n \u003Cdiv class=\"position-absolute top-0 start-0 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 start-50 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 start-100 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-0 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-50 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-100 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-100 start-0 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-100 start-50 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-100 start-100 translate-middle\">\u003C/div>\n\u003C/div>`} />\n\nBy adding `.translate-middle-x` or `.translate-middle-y` classes, elements can be positioned only in horizontal or vertical direction.\n\n\u003CExample class=\"bd-example-position-utils\" code={`\u003Cdiv class=\"position-relative\">\n \u003Cdiv class=\"position-absolute top-0 start-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 start-50 translate-middle-x\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 end-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-0 translate-middle-y\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-50 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 end-0 translate-middle-y\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 start-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 start-50 translate-middle-x\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 end-0\">\u003C/div>\n\u003C/div>`} />\n\n## Examples\n\nHere are some real life examples of these classes:\n\n\u003CExample class=\"bd-example-position-examples d-flex justify-content-around align-items-center\" code={`\u003Cbutton type=\"button\" class=\"btn btn-primary position-relative\">\n Mails \u003Cspan class=\"position-absolute top-0 start-100 translate-middle badge rounded-pill text-bg-secondary\">+99 \u003Cspan class=\"visually-hidden\">unread messages\u003C/span>\u003C/span>\n\u003C/button>\n\n\u003Cdiv class=\"position-relative py-2 px-4 text-bg-secondary border border-secondary rounded-pill\">\n Marker \u003Csvg width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"position-absolute top-100 start-50 translate-middle mt-1\" fill=\"var(--bs-secondary)\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\u003Cpath d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\"/>\u003C/svg>\n\u003C/div>\n\n\u003Cbutton type=\"button\" class=\"btn btn-primary position-relative\">\n Alerts \u003Cspan class=\"position-absolute top-0 start-100 translate-middle badge border border-light rounded-circle bg-danger p-2\">\u003Cspan class=\"visually-hidden\">unread messages\u003C/span>\u003C/span>\n\u003C/button>`} />\n\nYou can use these classes with existing components to create new ones. Remember that you can extend its functionality by adding entries to the `$position-values` variable.\n\n\u003CExample class=\"bd-example-position-examples\" code={`\u003Cdiv class=\"position-relative m-4\">\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Progress\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"height: 1px;\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 50%\">\u003C/div>\n \u003C/div>\n \u003Cbutton type=\"button\" class=\"position-absolute top-0 start-0 translate-middle btn btn-sm btn-primary rounded-pill\" style=\"width: 2rem; height:2rem;\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"position-absolute top-0 start-50 translate-middle btn btn-sm btn-primary rounded-pill\" style=\"width: 2rem; height:2rem;\">2\u003C/button>\n \u003Cbutton type=\"button\" class=\"position-absolute top-0 start-100 translate-middle btn btn-sm btn-secondary rounded-pill\" style=\"width: 2rem; height:2rem;\">3\u003C/button>\n\u003C/div>`} />\n\n## CSS\n\n### Sass maps\n\nDefault position utility values are declared in a Sass map, then used to generate our utilities.\n\n\u003CScssDocs name=\"position-map\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nPosition utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-position\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/position.mdx","10a850bf1fa704cd","utilities/position.mdx","utilities/shadows",{"id":1121,"data":1123,"body":1126,"filePath":1127,"digest":1128,"legacyId":1129,"deferredRender":139},{"description":1124,"title":1125,"toc":139},"Add or remove shadows to elements with box-shadow utilities.","Shadows","## Examples\n\nWhile shadows on components are disabled by default in Bootstrap and can be enabled via `$enable-shadows`, you can also quickly add or remove a shadow with our `box-shadow` utility classes. Includes support for `.shadow-none` and three default sizes (which have associated variables to match).\n\n\u003CExample class=\"overflow-hidden\" code={`\u003Cdiv class=\"shadow-none p-3 mb-5 bg-body-tertiary rounded\">No shadow\u003C/div>\n\u003Cdiv class=\"shadow-sm p-3 mb-5 bg-body-tertiary rounded\">Small shadow\u003C/div>\n\u003Cdiv class=\"shadow p-3 mb-5 bg-body-tertiary rounded\">Regular shadow\u003C/div>\n\u003Cdiv class=\"shadow-lg p-3 mb-5 bg-body-tertiary rounded\">Larger shadow\u003C/div>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"box-shadow-variables\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nShadow utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-shadow\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/shadows.mdx","a080b6fd9dc8a40e","utilities/shadows.mdx","utilities/sizing",{"id":1130,"data":1132,"body":1135,"filePath":1136,"digest":1137,"legacyId":1138,"deferredRender":139},{"description":1133,"title":1134,"toc":139},"Easily make an element as wide or as tall with our width and height utilities.","Sizing","## Relative to the parent\n\nWidth and height utilities are generated from the utility API in `_utilities.scss`. Includes support for `25%`, `50%`, `75%`, `100%`, and `auto` by default. Modify those values as you need to generate different utilities here.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"w-25 p-3\">Width 25%\u003C/div>\n\u003Cdiv class=\"w-50 p-3\">Width 50%\u003C/div>\n\u003Cdiv class=\"w-75 p-3\">Width 75%\u003C/div>\n\u003Cdiv class=\"w-100 p-3\">Width 100%\u003C/div>\n\u003Cdiv class=\"w-auto p-3\">Width auto\u003C/div>`} />\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv style=\"height: 100px;\">\n \u003Cdiv class=\"h-25 d-inline-block\" style=\"width: 120px;\">Height 25%\u003C/div>\n \u003Cdiv class=\"h-50 d-inline-block\" style=\"width: 120px;\">Height 50%\u003C/div>\n \u003Cdiv class=\"h-75 d-inline-block\" style=\"width: 120px;\">Height 75%\u003C/div>\n \u003Cdiv class=\"h-100 d-inline-block\" style=\"width: 120px;\">Height 100%\u003C/div>\n \u003Cdiv class=\"h-auto d-inline-block\" style=\"width: 120px;\">Height auto\u003C/div>\n\u003C/div>`} />\n\nYou can also use `max-width: 100%;` and `max-height: 100%;` utilities as needed.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv style=\"width: 50%; height: 100px;\">\n \u003Cdiv class=\"mw-100\" style=\"width: 200%;\">Max-width 100%\u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv style=\"height: 100px;\">\n \u003Cdiv class=\"mh-100\" style=\"width: 100px; height: 200px;\">Max-height 100%\u003C/div>\n\u003C/div>`} />\n\n## Relative to the viewport\n\nYou can also use utilities to set the width and height relative to the viewport.\n\n```html\n\u003Cdiv class=\"min-vw-100\">Min-width 100vw\u003C/div>\n\u003Cdiv class=\"min-vh-100\">Min-height 100vh\u003C/div>\n\u003Cdiv class=\"vw-100\">Width 100vw\u003C/div>\n\u003Cdiv class=\"vh-100\">Height 100vh\u003C/div>\n```\n\n## CSS\n\n### Sass utilities API\n\nSizing utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-sizing\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/sizing.mdx","b8c5e585709241af","utilities/sizing.mdx","utilities/spacing",{"id":1139,"data":1141,"body":1144,"filePath":1145,"digest":1146,"legacyId":1147,"deferredRender":139},{"description":1142,"title":1143,"toc":139},"Bootstrap includes a wide range of shorthand responsive margin, padding, and gap utility classes to modify an element's appearance.","Spacing","## Margin and padding\n\nAssign responsive-friendly `margin` or `padding` values to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. Classes are built from a default Sass map ranging from `.25rem` to `3rem`.\n\n\u003CCallout>\n**Using the CSS Grid layout module?** Consider using [the gap utility](#gap) instead.\n\u003C/Callout>\n\n### Notation\n\nSpacing utilities that apply to all breakpoints, from `xs` to `xxl`, have no breakpoint abbreviation in them. This is because those classes are applied from `min-width: 0` and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.\n\nThe classes are named using the format `{property}{sides}-{size}` for `xs` and `{property}{sides}-{breakpoint}-{size}` for `sm`, `md`, `lg`, `xl`, and `xxl`.\n\nWhere *property* is one of:\n\n- `m` - for classes that set `margin`\n- `p` - for classes that set `padding`\n\nWhere *sides* is one of:\n\n- `t` - for classes that set `margin-top` or `padding-top`\n- `b` - for classes that set `margin-bottom` or `padding-bottom`\n- `s` - (start) for classes that set `margin-left` or `padding-left` in LTR, `margin-right` or `padding-right` in RTL\n- `e` - (end) for classes that set `margin-right` or `padding-right` in LTR, `margin-left` or `padding-left` in RTL\n- `x` - for classes that set both `*-left` and `*-right`\n- `y` - for classes that set both `*-top` and `*-bottom`\n- blank - for classes that set a `margin` or `padding` on all 4 sides of the element\n\nWhere *size* is one of:\n\n- `0` - for classes that eliminate the `margin` or `padding` by setting it to `0`\n- `1` - (by default) for classes that set the `margin` or `padding` to `$spacer * .25`\n- `2` - (by default) for classes that set the `margin` or `padding` to `$spacer * .5`\n- `3` - (by default) for classes that set the `margin` or `padding` to `$spacer`\n- `4` - (by default) for classes that set the `margin` or `padding` to `$spacer * 1.5`\n- `5` - (by default) for classes that set the `margin` or `padding` to `$spacer * 3`\n- `auto` - for classes that set the `margin` to auto\n\n(You can add more sizes by adding entries to the `$spacers` Sass map variable.)\n\n### Examples\n\nHere are some representative examples of these classes:\n\n```scss\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.ms-1 {\n margin-left: ($spacer * .25) !important;\n}\n\n.px-2 {\n padding-left: ($spacer * .5) !important;\n padding-right: ($spacer * .5) !important;\n}\n\n.p-3 {\n padding: $spacer !important;\n}\n```\n\n### Horizontal centering\n\nAdditionally, Bootstrap also includes an `.mx-auto` class for horizontally centering fixed-width block level content—that is, content that has `display: block` and a `width` set—by setting the horizontal margins to `auto`.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"mx-auto p-2\" style=\"width: 200px; background-color: rgba(var(--bd-violet-rgb),.15); border: rgba(var(--bd-violet-rgb),.3) solid 1px;\">\n Centered element\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"mx-auto p-2\" style=\"width: 200px;\">\n Centered element\n\u003C/div>\n```\n\n## Negative margin\n\nIn CSS, `margin` properties can utilize negative values (`padding` cannot). These negative margins are **disabled by default**, but can be enabled in Sass by setting `$enable-negative-margins: true`.\n\nThe syntax is nearly the same as the default, positive margin utilities, but with the addition of `n` before the requested size. Here's an example class that's the opposite of `.mt-1`:\n\n```scss\n.mt-n1 {\n margin-top: -0.25rem !important;\n}\n```\n\n## Gap\n\nWhen using `display: grid` or `display: flex`, you can make use of `gap` utilities on the parent element. This can save on having to add margin utilities to individual children of a grid or flex container. Gap utilities are responsive by default, and are generated via our utilities API, based on the `$spacers` Sass map.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv style=\"grid-template-columns: 1fr 1fr;\" class=\"d-grid gap-3\">\n \u003Cdiv class=\"p-2\">Grid item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 4\u003C/div>\n\u003C/div>`} />\n\nSupport includes responsive options for all of Bootstrap's grid breakpoints, as well as six sizes from the `$spacers` map (`0`–`5`). There is no `.gap-auto` utility class as it's effectively the same as `.gap-0`.\n\n### row-gap\n\n`row-gap` sets the vertical space between children items in the specified container.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv style=\"grid-template-columns: 1fr 1fr;\" class=\"d-grid gap-0 row-gap-3\">\n \u003Cdiv class=\"p-2\">Grid item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 4\u003C/div>\n\u003C/div>`} />\n\n### column-gap\n\n`column-gap` sets the horizontal space between children items in the specified container.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv style=\"grid-template-columns: 1fr 1fr;\" class=\"d-grid gap-0 column-gap-3\">\n \u003Cdiv class=\"p-2\">Grid item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 4\u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Sass maps\n\nSpacing utilities are declared via Sass map and then generated with our utilities API.\n\n\u003CScssDocs name=\"spacer-variables-maps\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nSpacing utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-spacing\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/spacing.mdx","f71c48846901084e","utilities/spacing.mdx","utilities/text",{"id":1148,"data":1150,"body":1153,"filePath":1154,"digest":1155,"legacyId":1156,"deferredRender":139},{"description":1151,"title":1152,"toc":139},"Documentation and examples for common text utilities to control alignment, wrapping, weight, and more.","Text","## Text alignment\n\nEasily realign text to components with text alignment classes. For start, end, and center alignment, responsive classes are available that use the same viewport width breakpoints as the grid system.\n\n\u003CExample code={`\u003Cp class=\"text-start\">Start aligned text on all viewport sizes.\u003C/p>\n\u003Cp class=\"text-center\">Center aligned text on all viewport sizes.\u003C/p>\n\u003Cp class=\"text-end\">End aligned text on all viewport sizes.\u003C/p>\n\n\u003Cp class=\"text-sm-end\">End aligned text on viewports sized SM (small) or wider.\u003C/p>\n\u003Cp class=\"text-md-end\">End aligned text on viewports sized MD (medium) or wider.\u003C/p>\n\u003Cp class=\"text-lg-end\">End aligned text on viewports sized LG (large) or wider.\u003C/p>\n\u003Cp class=\"text-xl-end\">End aligned text on viewports sized XL (extra large) or wider.\u003C/p>\n\u003Cp class=\"text-xxl-end\">End aligned text on viewports sized XXL (extra extra large) or wider.\u003C/p>`} />\n\n\u003CCallout>\nNote that we don't provide utility classes for justified text. While, aesthetically, justified text might look more appealing, it does make word-spacing more random and therefore harder to read.\n\u003C/Callout>\n\n## Text wrapping and overflow\n\nWrap text with a `.text-wrap` class.\n\n\u003CExample code={`\u003Cdiv class=\"badge text-bg-primary text-wrap\" style=\"width: 6rem;\">\n This text should wrap.\n\u003C/div>`} />\n\nPrevent text from wrapping with a `.text-nowrap` class.\n\n\u003CExample code={`\u003Cdiv class=\"text-nowrap bg-body-secondary border\" style=\"width: 8rem;\">\n This text should overflow the parent.\n\u003C/div>`} />\n\n## Word break\n\nPrevent long strings of text from breaking your components' layout by using `.text-break` to set `word-wrap: break-word` and `word-break: break-word`. We use `word-wrap` instead of the more common `overflow-wrap` for wider browser support, and add the deprecated `word-break: break-word` to avoid issues with flex containers.\n\n\u003CExample code={`\u003Cp class=\"text-break\">mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\u003C/p>`} />\n\n\u003CCallout type=\"warning\">\nNote that [breaking words isn't possible in Arabic](https://rtlstyling.com/posts/rtl-styling#3.-line-break), which is the most used RTL language. Therefore `.text-break` is removed from our RTL compiled CSS.\n\u003C/Callout>\n\n## Text transform\n\nTransform text in components with our text capitalization classes: `text-lowercase`, `text-uppercase` or `text-capitalize`.\n\n\u003CExample code={`\u003Cp class=\"text-lowercase\">Lowercased text.\u003C/p>\n\u003Cp class=\"text-uppercase\">Uppercased text.\u003C/p>\n\u003Cp class=\"text-capitalize\">CapiTaliZed text.\u003C/p>`} />\n\nNote how `.text-capitalize` only changes the first letter of each word, leaving the case of any other letters unaffected.\n\n## Font size\n\nQuickly change the `font-size` of text. While our heading classes (e.g., `.h1`–`.h6`) apply `font-size`, `font-weight`, and `line-height`, these utilities _only_ apply `font-size`. Sizing for these utilities matches HTML's heading elements, so as the number increases, their size decreases.\n\n\u003CExample code={`\u003Cp class=\"fs-1\">.fs-1 text\u003C/p>\n\u003Cp class=\"fs-2\">.fs-2 text\u003C/p>\n\u003Cp class=\"fs-3\">.fs-3 text\u003C/p>\n\u003Cp class=\"fs-4\">.fs-4 text\u003C/p>\n\u003Cp class=\"fs-5\">.fs-5 text\u003C/p>\n\u003Cp class=\"fs-6\">.fs-6 text\u003C/p>`} />\n\nCustomize your available `font-size`s by modifying the `$font-sizes` Sass map.\n\n## Font weight and italics\n\nQuickly change the `font-weight` or `font-style` of text with these utilities. `font-style` utilities are abbreviated as `.fst-*` and `font-weight` utilities are abbreviated as `.fw-*`.\n\n\u003CExample code={`\u003Cp class=\"fw-bold\">Bold text.\u003C/p>\n\u003Cp class=\"fw-bolder\">Bolder weight text (relative to the parent element).\u003C/p>\n\u003Cp class=\"fw-semibold\">Semibold weight text.\u003C/p>\n\u003Cp class=\"fw-medium\">Medium weight text.\u003C/p>\n\u003Cp class=\"fw-normal\">Normal weight text.\u003C/p>\n\u003Cp class=\"fw-light\">Light weight text.\u003C/p>\n\u003Cp class=\"fw-lighter\">Lighter weight text (relative to the parent element).\u003C/p>\n\u003Cp class=\"fst-italic\">Italic text.\u003C/p>\n\u003Cp class=\"fst-normal\">Text with normal font style\u003C/p>`} />\n\n## Line height\n\nChange the line height with `.lh-*` utilities.\n\n\u003CExample code={`\u003Cp class=\"lh-1\">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.\u003C/p>\n\u003Cp class=\"lh-sm\">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.\u003C/p>\n\u003Cp class=\"lh-base\">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.\u003C/p>\n\u003Cp class=\"lh-lg\">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.\u003C/p>`} />\n\n## Monospace\n\nChange a selection to our monospace font stack with `.font-monospace`.\n\n\u003CExample code={`\u003Cp class=\"font-monospace\">This is in monospace\u003C/p>`} />\n\n## Reset color\n\nReset a text or link's color with `.text-reset`, so that it inherits the color from its parent.\n\n\u003CExample code={`\u003Cp class=\"text-body-secondary\">\n Secondary body text with a \u003Ca href=\"#\" class=\"text-reset\">reset link\u003C/a>.\n\u003C/p>`} />\n\n## Text decoration\n\nDecorate text in components with text decoration classes.\n\n\u003CExample code={`\u003Cp class=\"text-decoration-underline\">This text has a line underneath it.\u003C/p>\n\u003Cp class=\"text-decoration-line-through\">This text has a line going through it.\u003C/p>\n\u003Ca href=\"#\" class=\"text-decoration-none\">This link has its text decoration removed\u003C/a>`} />\n\n## CSS\n\n### Sass variables\n\nDefault type and font related Sass variables:\n\n\u003CScssDocs name=\"font-variables\" file=\"scss/_variables.scss\" />\n\n### Sass maps\n\nFont-size utilities are generated from this map, in combination with our utilities API.\n\n\u003CScssDocs name=\"font-sizes\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-text-map\" file=\"scss/_maps.scss\" />\n\n### Sass utilities API\n\nFont and text utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-text\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/text.mdx","b415bbe3adbc8908","utilities/text.mdx","utilities/vertical-align",{"id":1157,"data":1159,"body":1162,"filePath":1163,"digest":1164,"legacyId":1165,"deferredRender":139},{"description":1160,"title":1161},"Easily change the vertical alignment of inline, inline-block, inline-table, and table cell elements.","Vertical alignment","Change the alignment of elements with the [`vertical-alignment`](https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align) utilities. Please note that vertical-align only affects inline, inline-block, inline-table, and table cell elements.\n\nChoose from `.align-baseline`, `.align-top`, `.align-middle`, `.align-bottom`, `.align-text-bottom`, and `.align-text-top` as needed.\n\nTo vertically center non-inline content (like `\u003Cdiv>`s and more), use our [flex box utilities]([[docsref:/utilities/flex#align-items]]).\n\nWith inline elements:\n\n\u003CExample code={`\u003Cspan class=\"align-baseline\">baseline\u003C/span>\n\u003Cspan class=\"align-top\">top\u003C/span>\n\u003Cspan class=\"align-middle\">middle\u003C/span>\n\u003Cspan class=\"align-bottom\">bottom\u003C/span>\n\u003Cspan class=\"align-text-top\">text-top\u003C/span>\n\u003Cspan class=\"align-text-bottom\">text-bottom\u003C/span>`} />\n\nWith table cells:\n\n\u003CExample code={`\u003Ctable style=\"height: 100px;\">\n \u003Ctbody>\n \u003Ctr>\n \u003Ctd class=\"align-baseline\">baseline\u003C/td>\n \u003Ctd class=\"align-top\">top\u003C/td>\n \u003Ctd class=\"align-middle\">middle\u003C/td>\n \u003Ctd class=\"align-bottom\">bottom\u003C/td>\n \u003Ctd class=\"align-text-top\">text-top\u003C/td>\n \u003Ctd class=\"align-text-bottom\">text-bottom\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>`} />\n\n## CSS\n\n### Sass utilities API\n\nVertical align utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-vertical-align\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/vertical-align.mdx","9d6429b2397af545","utilities/vertical-align.mdx","utilities/visibility",{"id":1166,"data":1168,"body":1171,"filePath":1172,"digest":1173,"legacyId":1174,"deferredRender":139},{"description":1169,"title":1170},"Control the visibility of elements, without modifying their display, with visibility utilities.","Visibility","Set the `visibility` of elements with our visibility utilities. These utility classes do not modify the `display` value at all and do not affect layout – `.invisible` elements still take up space in the page.\n\n\u003CCallout type=\"warning\">\nElements with the `.invisible` class will be hidden *both* visually and for assistive technology/screen reader users.\n\u003C/Callout>\n\nApply `.visible` or `.invisible` as needed.\n\n```html\n\u003Cdiv class=\"visible\">...\u003C/div>\n\u003Cdiv class=\"invisible\">...\u003C/div>\n```\n\n```scss\n// Class\n.visible {\n visibility: visible !important;\n}\n.invisible {\n visibility: hidden !important;\n}\n```\n\n## CSS\n\n### Sass utilities API\n\nVisibility utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-visibility\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/visibility.mdx","9943b6d24f399f72","utilities/visibility.mdx","utilities/z-index",{"id":1175,"data":1177,"body":1180,"filePath":1181,"digest":1182,"legacyId":1183,"deferredRender":139},{"added":1178,"description":1179,"title":996,"toc":139},{"version":272},"Use our low-level `z-index` utilities to quickly change the stack level of an element or component.","## Example\n\nUse `z-index` utilities to stack elements on top of one another. Requires a `position` value other than `static`, which can be set with custom styles or using our [position utilities]([[docsref:/utilities/position/]]).\n\n\u003CCallout>\nWe call these \"low-level\" `z-index` utilities because of their default values of `-1` through `3`, which we use for the layout of overlapping components. High-level `z-index` values are used for overlay components like modals and tooltips.\n\u003C/Callout>\n\n\u003CExample class=\"bd-example-zindex-levels position-relative\" code={`\u003Cdiv class=\"z-3 position-absolute p-5 rounded-3\">\u003Cspan>z-3\u003C/span>\u003C/div>\n\u003Cdiv class=\"z-2 position-absolute p-5 rounded-3\">\u003Cspan>z-2\u003C/span>\u003C/div>\n\u003Cdiv class=\"z-1 position-absolute p-5 rounded-3\">\u003Cspan>z-1\u003C/span>\u003C/div>\n\u003Cdiv class=\"z-0 position-absolute p-5 rounded-3\">\u003Cspan>z-0\u003C/span>\u003C/div>\n\u003Cdiv class=\"z-n1 position-absolute p-5 rounded-3\">\u003Cspan>z-n1\u003C/span>\u003C/div>`} />\n\n## Overlays\n\nBootstrap overlay components—dropdown, modal, offcanvas, popover, toast, and tooltip—all have their own `z-index` values to ensure a usable experience with competing \"layers\" of an interface.\n\nRead about them in the [`z-index` layout page]([[docsref:/layout/z-index]]).\n\n## Component approach\n\nOn some components, we use our low-level `z-index` values to manage repeating elements that overlap one another (like buttons in a button group or items in a list group).\n\nLearn about our [`z-index` approach]([[docsref:/extend/approach#z-index-scales]]).\n\n## CSS\n\n### Sass maps\n\nCustomize this Sass map to change the available values and generated utilities.\n\n\u003CScssDocs name=\"zindex-levels-map\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nPosition utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-zindex\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/z-index.mdx","74e2a5798d9fa8b6","utilities/z-index.mdx"] \ No newline at end of file diff --git a/site/.astro/settings.json b/site/.astro/settings.json deleted file mode 100644 index ada0941e29..0000000000 --- a/site/.astro/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "_variables": { - "lastUpdateCheck": 1741204124871 - } -} \ No newline at end of file diff --git a/site/.astro/types.d.ts b/site/.astro/types.d.ts deleted file mode 100644 index 03d7cc43f1..0000000000 --- a/site/.astro/types.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// \ No newline at end of file diff --git a/site/dist/404.html b/site/dist/404.html deleted file mode 100644 index eeb514b3a2..0000000000 --- a/site/dist/404.html +++ /dev/null @@ -1,21 +0,0 @@ - 404 - File not found · Bootstrap v5.3

404

File not found

\ No newline at end of file diff --git a/site/dist/CNAME b/site/dist/CNAME deleted file mode 100644 index 52c853392c..0000000000 --- a/site/dist/CNAME +++ /dev/null @@ -1 +0,0 @@ -getbootstrap.com diff --git a/site/dist/_astro/Code.astro_astro_type_script_index_0_lang.BEd1At9B.js b/site/dist/_astro/Code.astro_astro_type_script_index_0_lang.BEd1At9B.js deleted file mode 100644 index ce7a9d09c5..0000000000 --- a/site/dist/_astro/Code.astro_astro_type_script_index_0_lang.BEd1At9B.js +++ /dev/null @@ -1,6 +0,0 @@ -function Q(y){return y&&y.__esModule&&Object.prototype.hasOwnProperty.call(y,"default")?y.default:y}var L={exports:{}};/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */var W=L.exports,D;function Z(){return D||(D=1,function(y,w){(function(E,b){y.exports=b()})(W,function(){return function(){var T={686:function(l,a,t){t.d(a,{default:function(){return G}});var c=t(279),s=t.n(c),f=t(370),g=t.n(f),h=t(817),m=t.n(h);function p(i){try{return document.execCommand(i)}catch{return!1}}var v=function(n){var e=m()(n);return p("cut"),e},d=v;function _(i){var n=document.documentElement.getAttribute("dir")==="rtl",e=document.createElement("textarea");e.style.fontSize="12pt",e.style.border="0",e.style.padding="0",e.style.margin="0",e.style.position="absolute",e.style[n?"right":"left"]="-9999px";var r=window.pageYOffset||document.documentElement.scrollTop;return e.style.top="".concat(r,"px"),e.setAttribute("readonly",""),e.value=i,e}var M=function(n,e){var r=_(n);e.container.appendChild(r);var o=m()(r);return p("copy"),r.remove(),o},q=function(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},r="";return typeof n=="string"?r=M(n,e):n instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(n?.type)?r=M(n.value,e):(r=m()(n),p("copy")),r},k=q;function x(i){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?x=function(e){return typeof e}:x=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},x(i)}var H=function(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=n.action,r=e===void 0?"copy":e,o=n.container,u=n.target,S=n.text;if(r!=="copy"&&r!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(u!==void 0)if(u&&x(u)==="object"&&u.nodeType===1){if(r==="copy"&&u.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(r==="cut"&&(u.hasAttribute("readonly")||u.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(S)return k(S,{container:o});if(u)return r==="cut"?d(u):k(u,{container:o})},z=H;function C(i){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?C=function(e){return typeof e}:C=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},C(i)}function B(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function j(i,n){for(var e=0;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function A(i){return A=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},A(i)}function P(i,n){var e="data-clipboard-".concat(i);if(n.hasAttribute(e))return n.getAttribute(e)}var V=function(i){U(e,i);var n=Y(e);function e(r,o){var u;return B(this,e),u=n.call(this),u.resolveOptions(o),u.listenClick(r),u}return $(e,[{key:"resolveOptions",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof o.action=="function"?o.action:this.defaultAction,this.target=typeof o.target=="function"?o.target:this.defaultTarget,this.text=typeof o.text=="function"?o.text:this.defaultText,this.container=C(o.container)==="object"?o.container:document.body}},{key:"listenClick",value:function(o){var u=this;this.listener=g()(o,"click",function(S){return u.onClick(S)})}},{key:"onClick",value:function(o){var u=o.delegateTarget||o.currentTarget,S=this.action(u)||"copy",O=z({action:S,container:this.container,target:this.target(u),text:this.text(u)});this.emit(O?"success":"error",{action:S,text:O,trigger:u,clearSelection:function(){u&&u.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(o){return P("action",o)}},{key:"defaultTarget",value:function(o){var u=P("target",o);if(u)return document.querySelector(u)}},{key:"defaultText",value:function(o){return P("text",o)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(o){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return k(o,u)}},{key:"cut",value:function(o){return d(o)}},{key:"isSupported",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],u=typeof o=="string"?[o]:o,S=!!document.queryCommandSupported;return u.forEach(function(O){S=S&&!!document.queryCommandSupported(O)}),S}}]),e}(s()),G=V},828:function(l){var a=9;if(typeof Element<"u"&&!Element.prototype.matches){var t=Element.prototype;t.matches=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector}function c(s,f){for(;s&&s.nodeType!==a;){if(typeof s.matches=="function"&&s.matches(f))return s;s=s.parentNode}}l.exports=c},438:function(l,a,t){var c=t(828);function s(h,m,p,v,d){var _=g.apply(this,arguments);return h.addEventListener(p,_,d),{destroy:function(){h.removeEventListener(p,_,d)}}}function f(h,m,p,v,d){return typeof h.addEventListener=="function"?s.apply(null,arguments):typeof p=="function"?s.bind(null,document).apply(null,arguments):(typeof h=="string"&&(h=document.querySelectorAll(h)),Array.prototype.map.call(h,function(_){return s(_,m,p,v,d)}))}function g(h,m,p,v){return function(d){d.delegateTarget=c(d.target,m),d.delegateTarget&&v.call(h,d)}}l.exports=f},879:function(l,a){a.node=function(t){return t!==void 0&&t instanceof HTMLElement&&t.nodeType===1},a.nodeList=function(t){var c=Object.prototype.toString.call(t);return t!==void 0&&(c==="[object NodeList]"||c==="[object HTMLCollection]")&&"length"in t&&(t.length===0||a.node(t[0]))},a.string=function(t){return typeof t=="string"||t instanceof String},a.fn=function(t){var c=Object.prototype.toString.call(t);return c==="[object Function]"}},370:function(l,a,t){var c=t(879),s=t(438);function f(p,v,d){if(!p&&!v&&!d)throw new Error("Missing required arguments");if(!c.string(v))throw new TypeError("Second argument must be a String");if(!c.fn(d))throw new TypeError("Third argument must be a Function");if(c.node(p))return g(p,v,d);if(c.nodeList(p))return h(p,v,d);if(c.string(p))return m(p,v,d);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function g(p,v,d){return p.addEventListener(v,d),{destroy:function(){p.removeEventListener(v,d)}}}function h(p,v,d){return Array.prototype.forEach.call(p,function(_){_.addEventListener(v,d)}),{destroy:function(){Array.prototype.forEach.call(p,function(_){_.removeEventListener(v,d)})}}}function m(p,v,d){return s(document.body,p,v,d)}l.exports=f},817:function(l){function a(t){var c;if(t.nodeName==="SELECT")t.focus(),c=t.value;else if(t.nodeName==="INPUT"||t.nodeName==="TEXTAREA"){var s=t.hasAttribute("readonly");s||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),s||t.removeAttribute("readonly"),c=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var f=window.getSelection(),g=document.createRange();g.selectNodeContents(t),f.removeAllRanges(),f.addRange(g),c=f.toString()}return c}l.exports=a},279:function(l){function a(){}a.prototype={on:function(t,c,s){var f=this.e||(this.e={});return(f[t]||(f[t]=[])).push({fn:c,ctx:s}),this},once:function(t,c,s){var f=this;function g(){f.off(t,g),c.apply(s,arguments)}return g._=c,this.on(t,g,s)},emit:function(t){var c=[].slice.call(arguments,1),s=((this.e||(this.e={}))[t]||[]).slice(),f=0,g=s.length;for(f;f{bootstrap.Tooltip.getOrCreateInstance(T,{title:w})})}I(".btn-clipboard",R);I(".btn-edit",nt);const F=new et(".btn-clipboard",{target:y=>y.closest(".bd-code-snippet")?.querySelector(".highlight"),text:y=>y.closest(".bd-code-snippet")?.querySelector(".highlight").textContent?.trim()});F.on("success",y=>{const w=y.trigger.querySelector(".bi")?.firstElementChild,T=bootstrap.Tooltip.getInstance(y.trigger),E="http://www.w3.org/1999/xlink",b=w?.getAttributeNS(E,"href");T?.setContent({".tooltip-inner":"Copied!"}),y.trigger.addEventListener("hidden.bs.tooltip",()=>{T?.setContent({".tooltip-inner":R})},{once:!0}),y.clearSelection(),b&&w?.setAttributeNS(E,"href",b.replace("clipboard","check2")),setTimeout(()=>{b&&w?.setAttributeNS(E,"href",b)},2e3)});F.on("error",y=>{const T=`Press ${/mac/i.test(navigator.userAgent)?"⌘":"Ctrl-"}C to copy`,E=bootstrap.Tooltip.getInstance(y.trigger);E?.setContent({".tooltip-inner":T}),y.trigger.addEventListener("hidden.bs.tooltip",()=>{E?.setContent({".tooltip-inner":R})},{once:!0})}); diff --git a/site/dist/_astro/Scripts.astro_astro_type_script_index_0_lang.lFiTneBv.js b/site/dist/_astro/Scripts.astro_astro_type_script_index_0_lang.lFiTneBv.js deleted file mode 100644 index 07f8a346fc..0000000000 --- a/site/dist/_astro/Scripts.astro_astro_type_script_index_0_lang.lFiTneBv.js +++ /dev/null @@ -1,191 +0,0 @@ -const x="https://stackblitz.com",S=["angular-cli","create-react-app","html","javascript","node","polymer","typescript","vue"],C=["project","search","ports","settings"],L=["light","dark"],N=["editor","preview"],_={clickToLoad:e=>d("ctl",e),devToolsHeight:e=>T("devtoolsheight",e),forceEmbedLayout:e=>d("embed",e),hideDevTools:e=>d("hidedevtools",e),hideExplorer:e=>d("hideExplorer",e),hideNavigation:e=>d("hideNavigation",e),openFile:e=>m("file",e),showSidebar:e=>B("showSidebar",e),sidebarView:e=>f("sidebarView",e,C),startScript:e=>m("startScript",e),terminalHeight:e=>T("terminalHeight",e),theme:e=>f("theme",e,L),view:e=>f("view",e,N),zenMode:e=>d("zenMode",e),organization:e=>`${m("orgName",e?.name)}&${m("orgProvider",e?.provider)}`,crossOriginIsolated:e=>d("corp",e)};function I(e={}){const t=Object.entries(e).map(([n,o])=>o!=null&&_.hasOwnProperty(n)?_[n](o):"").filter(Boolean);return t.length?`?${t.join("&")}`:""}function d(e,t){return t===!0?`${e}=1`:""}function B(e,t){return typeof t=="boolean"?`${e}=${t?"1":"0"}`:""}function T(e,t){if(typeof t=="number"&&!Number.isNaN(t)){const n=Math.min(100,Math.max(0,t));return`${e}=${encodeURIComponent(Math.round(n))}`}return""}function f(e,t="",n=[]){return n.includes(t)?`${e}=${encodeURIComponent(t)}`:""}function m(e,t){return(Array.isArray(t)?t:[t]).filter(o=>typeof o=="string"&&o.trim()!=="").map(o=>`${e}=${encodeURIComponent(o)}`).join("&")}function j(){return Math.random().toString(36).slice(2,6)+Math.random().toString(36).slice(2,6)}function y(e,t){return`${P(t)}${e}${I(t)}`}function b(e,t){const n={forceEmbedLayout:!0};return t&&typeof t=="object"&&Object.assign(n,t),`${P(n)}${e}${I(n)}`}function P(e={}){return(typeof e.origin=="string"?e.origin:x).replace(/\/$/,"")}function E(e,t,n){if(!t||!e||!e.parentNode)throw new Error("Invalid Element");e.id&&(t.id=e.id),e.className&&(t.className=e.className),O(t,n),k(e,t,n),e.replaceWith(t)}function v(e){if(typeof e=="string"){const t=document.getElementById(e);if(!t)throw new Error(`Could not find element with id '${e}'`);return t}else if(e instanceof HTMLElement)return e;throw new Error(`Invalid element: ${e}`)}function w(e){return e&&e.newWindow===!1?"_self":"_blank"}function O(e,t={}){const n=Object.hasOwnProperty.call(t,"height")?`${t.height}`:"300",o=Object.hasOwnProperty.call(t,"width")?`${t.width}`:void 0;e.setAttribute("height",n),o?e.setAttribute("width",o):e.setAttribute("style","width:100%;")}function k(e,t,n={}){const o=e.allow?.split(";")?.map(r=>r.trim())??[];n.crossOriginIsolated&&!o.includes("cross-origin-isolated")&&o.push("cross-origin-isolated"),o.length>0&&(t.allow=o.join("; "))}class M{constructor(t){this.pending={},this.port=t,this.port.onmessage=this.messageListener.bind(this)}request({type:t,payload:n}){return new Promise((o,r)=>{const s=j();this.pending[s]={resolve:o,reject:r},this.port.postMessage({type:t,payload:{...n,__reqid:s}})})}messageListener(t){if(typeof t.data.payload?.__reqid!="string")return;const{type:n,payload:o}=t.data,{__reqid:r,__success:s,__error:i}=o;this.pending[r]&&(s?this.pending[r].resolve(this.cleanResult(o)):this.pending[r].reject(i?`${n}: ${i}`:n),delete this.pending[r])}cleanResult(t){const n={...t};return delete n.__reqid,delete n.__success,delete n.__error,Object.keys(n).length?n:null}}class D{constructor(t,n){this.editor={openFile:o=>this._rdc.request({type:"SDK_OPEN_FILE",payload:{path:o}}),setCurrentFile:o=>this._rdc.request({type:"SDK_SET_CURRENT_FILE",payload:{path:o}}),setTheme:o=>this._rdc.request({type:"SDK_SET_UI_THEME",payload:{theme:o}}),setView:o=>this._rdc.request({type:"SDK_SET_UI_VIEW",payload:{view:o}}),showSidebar:(o=!0)=>this._rdc.request({type:"SDK_TOGGLE_SIDEBAR",payload:{visible:o}})},this.preview={origin:"",getUrl:()=>this._rdc.request({type:"SDK_GET_PREVIEW_URL",payload:{}}).then(o=>o?.url??null),setUrl:(o="/")=>{if(typeof o!="string"||!o.startsWith("/"))throw new Error(`Invalid argument: expected a path starting with '/', got '${o}'`);return this._rdc.request({type:"SDK_SET_PREVIEW_URL",payload:{path:o}})}},this._rdc=new M(t),Object.defineProperty(this.preview,"origin",{value:typeof n.previewOrigin=="string"?n.previewOrigin:null,writable:!1})}applyFsDiff(t){const n=o=>o!==null&&typeof o=="object";if(!n(t)||!n(t.create))throw new Error("Invalid diff object: expected diff.create to be an object.");if(!Array.isArray(t.destroy))throw new Error("Invalid diff object: expected diff.destroy to be an array.");return this._rdc.request({type:"SDK_APPLY_FS_DIFF",payload:t})}getDependencies(){return this._rdc.request({type:"SDK_GET_DEPS_SNAPSHOT",payload:{}})}getFsSnapshot(){return this._rdc.request({type:"SDK_GET_FS_SNAPSHOT",payload:{}})}}const u=[];class q{constructor(t){this.id=j(),this.element=t,this.pending=new Promise((n,o)=>{const r=({data:a,ports:c})=>{a?.action==="SDK_INIT_SUCCESS"&&a.id===this.id&&(this.vm=new D(c[0],a.payload),n(this.vm),i())},s=()=>{this.element.contentWindow?.postMessage({action:"SDK_INIT",id:this.id},"*")};function i(){window.clearInterval(p),window.removeEventListener("message",r)}window.addEventListener("message",r),s();let l=0;const p=window.setInterval(()=>{if(this.vm){i();return}if(l>=20){i(),o("Timeout: Unable to establish a connection with the StackBlitz VM"),u.forEach((a,c)=>{a.id===this.id&&u.splice(c,1)});return}l++,s()},500)}),u.push(this)}}const F=e=>{const t=e instanceof Element?"element":"id";return u.find(n=>n[t]===e)??null};function U(e,t){const n=document.createElement("input");return n.type="hidden",n.name=e,n.value=t,n}function R(e){return e.replace(/\[/g,"%5B").replace(/\]/g,"%5D")}function $({template:e,title:t,description:n,dependencies:o,files:r,settings:s}){if(!S.includes(e)){const a=S.map(c=>`'${c}'`).join(", ");console.warn(`Unsupported project.template: must be one of ${a}`)}const i=[],l=(a,c,A="")=>{i.push(U(a,typeof c=="string"?c:A))};l("project[title]",t),typeof n=="string"&&n.length>0&&l("project[description]",n),l("project[template]",e,"javascript"),o&&(e==="node"?console.warn("Invalid project.dependencies: dependencies must be provided as a 'package.json' file when using the 'node' template."):l("project[dependencies]",JSON.stringify(o))),s&&l("project[settings]",JSON.stringify(s)),Object.entries(r).forEach(([a,c])=>{l(`project[files][${R(a)}]`,c)});const p=document.createElement("form");return p.method="POST",p.setAttribute("style","display:none!important;"),p.append(...i),p}function H(e,t){const n=$(e);return n.action=b("/run",t),n.id="sb_run",` - - - - ${n.outerHTML} -

Brand guidelines

Documentation and examples for Bootstrap's logo and brand usage guidelines.

On this page

Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well.

- -

When referencing Bootstrap, use our logo mark. Do not modify our logos in any way. Do not use Bootstrap's branding for your own open or closed source projects.

-
Bootstrap
-

Our logo mark is also available in black and white. All rules for our primary logo apply to these as well.

-
Bootstrap
Bootstrap
-

Name

-

Bootstrap should always be referred to as just Bootstrap. No capital s.

-
Bootstrap
Correct
BootStrap
Incorrect
\ No newline at end of file diff --git a/site/dist/docs/5.3/about/index.html b/site/dist/docs/5.3/about/index.html deleted file mode 100644 index 20b605dea1..0000000000 --- a/site/dist/docs/5.3/about/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/about/license/index.html b/site/dist/docs/5.3/about/license/index.html deleted file mode 100644 index 3e7559ea35..0000000000 --- a/site/dist/docs/5.3/about/license/index.html +++ /dev/null @@ -1,50 +0,0 @@ - License FAQs · Bootstrap v5.3

License FAQs

Commonly asked questions about Bootstrap's open source license.

Bootstrap is released under the MIT license and is copyright 2025. Boiled down to smaller chunks, it can be described with the following conditions.

-

It requires you to:

-
    -
  • Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works
  • -
-

It permits you to:

-
    -
  • Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes
  • -
  • Use Bootstrap in packages or distributions that you create
  • -
  • Modify the source code
  • -
  • Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license
  • -
-

It forbids you to:

-
    -
  • Hold the authors and license owners liable for damages as Bootstrap is provided without warranty
  • -
  • Hold the creators or copyright holders of Bootstrap liable
  • -
  • Redistribute any piece of Bootstrap without proper attribution
  • -
  • Use any marks owned by Bootstrap in any way that might state or imply that Bootstrap endorses your distribution
  • -
  • Use any marks owned by Bootstrap in any way that might state or imply that you created the Bootstrap software in question
  • -
-

It does not require you to:

-
    -
  • Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it
  • -
  • Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)
  • -
-

The full Bootstrap license is located in the project repository for more information.

\ No newline at end of file diff --git a/site/dist/docs/5.3/about/overview/index.html b/site/dist/docs/5.3/about/overview/index.html deleted file mode 100644 index a9181a6cca..0000000000 --- a/site/dist/docs/5.3/about/overview/index.html +++ /dev/null @@ -1,34 +0,0 @@ - About Bootstrap · Bootstrap v5.3

About Bootstrap

Learn more about the team maintaining Bootstrap, how and why the project started, and how to get involved.

Team

-

Bootstrap is maintained by a small team of developers on GitHub. We're actively looking to grow this team and would love to hear from you if you're excited about CSS at scale, writing and maintaining vanilla JavaScript plugins, and improving build tooling processes for frontend code.

-

History

-

Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world.

-

Bootstrap was created at Twitter in mid-2010 by @mdo and @fat. Prior to being an open-sourced framework, Bootstrap was known as Twitter Blueprint. A few months into development, Twitter held its first Hack Week and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today.

-

Originally released on , we've since had over twenty releases, including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach.

-

With Bootstrap 4, we once again rewrote the project to account for two key architectural changes: a migration to Sass and the move to CSS's flexbox. Our intention is to help in a small way to move the web development community forward by pushing for newer CSS properties, fewer dependencies, and new technologies across more modern browsers.

-

Our latest release, Bootstrap 5, focuses on improving v4's codebase with as few major breaking changes as possible. We improved existing features and components, removed support for older browsers, dropped jQuery for regular JavaScript, and embraced more future-friendly technologies like CSS custom properties as part of our tooling.

-

Get involved

-

Get involved with Bootstrap development by opening an issue or submitting a pull request. Read our contributing guidelines for information on how we develop.

\ No newline at end of file diff --git a/site/dist/docs/5.3/about/team/index.html b/site/dist/docs/5.3/about/team/index.html deleted file mode 100644 index fab16f009a..0000000000 --- a/site/dist/docs/5.3/about/team/index.html +++ /dev/null @@ -1,27 +0,0 @@ - Team · Bootstrap v5.3

An overview of the founding team and core contributors to Bootstrap.

Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community.

- -

Get involved with Bootstrap development by opening an issue or submitting a pull request. Read our contributing guidelines for information on how we develop.

\ No newline at end of file diff --git a/site/dist/docs/5.3/about/translations/index.html b/site/dist/docs/5.3/about/translations/index.html deleted file mode 100644 index d8bdd0261b..0000000000 --- a/site/dist/docs/5.3/about/translations/index.html +++ /dev/null @@ -1,28 +0,0 @@ - Translations · Bootstrap v5.3

Translations

Links to community-translated Bootstrap documentation sites.

Community members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up-to-date.

- -

We don't help organize or host translations, we just link to them.

-

Finished a new or better translation? Open a pull request to add it to our list.

\ No newline at end of file diff --git a/site/dist/docs/5.3/assets/CNAME b/site/dist/docs/5.3/assets/CNAME deleted file mode 100644 index 52c853392c..0000000000 --- a/site/dist/docs/5.3/assets/CNAME +++ /dev/null @@ -1 +0,0 @@ -getbootstrap.com diff --git a/site/dist/docs/5.3/assets/apple-touch-icon.png b/site/dist/docs/5.3/assets/apple-touch-icon.png deleted file mode 100644 index 8f8ff8a810..0000000000 Binary files a/site/dist/docs/5.3/assets/apple-touch-icon.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/brand/bootstrap-logo-black.svg b/site/dist/docs/5.3/assets/brand/bootstrap-logo-black.svg deleted file mode 100644 index 31e66e1e9c..0000000000 --- a/site/dist/docs/5.3/assets/brand/bootstrap-logo-black.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/site/dist/docs/5.3/assets/brand/bootstrap-logo-shadow.png b/site/dist/docs/5.3/assets/brand/bootstrap-logo-shadow.png deleted file mode 100644 index cf0bf70951..0000000000 Binary files a/site/dist/docs/5.3/assets/brand/bootstrap-logo-shadow.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/brand/bootstrap-logo-shadow@2x.png b/site/dist/docs/5.3/assets/brand/bootstrap-logo-shadow@2x.png deleted file mode 100644 index fd4eaffb29..0000000000 Binary files a/site/dist/docs/5.3/assets/brand/bootstrap-logo-shadow@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/brand/bootstrap-logo-white.svg b/site/dist/docs/5.3/assets/brand/bootstrap-logo-white.svg deleted file mode 100644 index f73d7ca2a4..0000000000 --- a/site/dist/docs/5.3/assets/brand/bootstrap-logo-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/site/dist/docs/5.3/assets/brand/bootstrap-logo.svg b/site/dist/docs/5.3/assets/brand/bootstrap-logo.svg deleted file mode 100644 index f0189652b8..0000000000 --- a/site/dist/docs/5.3/assets/brand/bootstrap-logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/site/dist/docs/5.3/assets/brand/bootstrap-social.png b/site/dist/docs/5.3/assets/brand/bootstrap-social.png deleted file mode 100644 index 898e396c1d..0000000000 Binary files a/site/dist/docs/5.3/assets/brand/bootstrap-social.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/favicon.ico b/site/dist/docs/5.3/assets/favicon.ico deleted file mode 100644 index 0549906208..0000000000 Binary files a/site/dist/docs/5.3/assets/favicon.ico and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/bootstrap-icons.png b/site/dist/docs/5.3/assets/img/bootstrap-icons.png deleted file mode 100644 index 0000e83825..0000000000 Binary files a/site/dist/docs/5.3/assets/img/bootstrap-icons.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/bootstrap-icons@2x.png b/site/dist/docs/5.3/assets/img/bootstrap-icons@2x.png deleted file mode 100644 index ca04965670..0000000000 Binary files a/site/dist/docs/5.3/assets/img/bootstrap-icons@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/bootstrap-themes-collage.png b/site/dist/docs/5.3/assets/img/bootstrap-themes-collage.png deleted file mode 100644 index da99b30a8a..0000000000 Binary files a/site/dist/docs/5.3/assets/img/bootstrap-themes-collage.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/bootstrap-themes-collage@2x.png b/site/dist/docs/5.3/assets/img/bootstrap-themes-collage@2x.png deleted file mode 100644 index 2ffb1ce9ea..0000000000 Binary files a/site/dist/docs/5.3/assets/img/bootstrap-themes-collage@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/bootstrap-themes.png b/site/dist/docs/5.3/assets/img/bootstrap-themes.png deleted file mode 100644 index d43dba2a7d..0000000000 Binary files a/site/dist/docs/5.3/assets/img/bootstrap-themes.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/bootstrap-themes@2x.png b/site/dist/docs/5.3/assets/img/bootstrap-themes@2x.png deleted file mode 100644 index 13c32337d6..0000000000 Binary files a/site/dist/docs/5.3/assets/img/bootstrap-themes@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/album-rtl.png b/site/dist/docs/5.3/assets/img/examples/album-rtl.png deleted file mode 100644 index d998c56272..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/album-rtl.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/album-rtl@2x.png b/site/dist/docs/5.3/assets/img/examples/album-rtl@2x.png deleted file mode 100644 index d44ee0de11..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/album-rtl@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/album.png b/site/dist/docs/5.3/assets/img/examples/album.png deleted file mode 100644 index f0af624013..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/album.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/album@2x.png b/site/dist/docs/5.3/assets/img/examples/album@2x.png deleted file mode 100644 index bd43a51e1a..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/album@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/badges.png b/site/dist/docs/5.3/assets/img/examples/badges.png deleted file mode 100644 index af4a9ac6b6..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/badges.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/badges@2x.png b/site/dist/docs/5.3/assets/img/examples/badges@2x.png deleted file mode 100644 index 8c3fd3f722..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/badges@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/blog-rtl.png b/site/dist/docs/5.3/assets/img/examples/blog-rtl.png deleted file mode 100644 index 5d01bb0924..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/blog-rtl.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/blog-rtl@2x.png b/site/dist/docs/5.3/assets/img/examples/blog-rtl@2x.png deleted file mode 100644 index 56554e2bf1..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/blog-rtl@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/blog.png b/site/dist/docs/5.3/assets/img/examples/blog.png deleted file mode 100644 index 3ce428418e..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/blog.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/blog@2x.png b/site/dist/docs/5.3/assets/img/examples/blog@2x.png deleted file mode 100644 index f5480314b4..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/blog@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/breadcrumbs.png b/site/dist/docs/5.3/assets/img/examples/breadcrumbs.png deleted file mode 100644 index 4417e95b3a..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/breadcrumbs.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/breadcrumbs@2x.png b/site/dist/docs/5.3/assets/img/examples/breadcrumbs@2x.png deleted file mode 100644 index 0eb36d1362..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/breadcrumbs@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/buttons.png b/site/dist/docs/5.3/assets/img/examples/buttons.png deleted file mode 100644 index 4da03f7917..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/buttons.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/buttons@2x.png b/site/dist/docs/5.3/assets/img/examples/buttons@2x.png deleted file mode 100644 index 752e659028..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/buttons@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/carousel-rtl.png b/site/dist/docs/5.3/assets/img/examples/carousel-rtl.png deleted file mode 100644 index 2290943f98..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/carousel-rtl.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/carousel-rtl@2x.png b/site/dist/docs/5.3/assets/img/examples/carousel-rtl@2x.png deleted file mode 100644 index 9afa5a5d1a..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/carousel-rtl@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/carousel.png b/site/dist/docs/5.3/assets/img/examples/carousel.png deleted file mode 100644 index e2bbba6c80..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/carousel.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/carousel@2x.png b/site/dist/docs/5.3/assets/img/examples/carousel@2x.png deleted file mode 100644 index bc5d4a09d0..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/carousel@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/cheatsheet-rtl.png b/site/dist/docs/5.3/assets/img/examples/cheatsheet-rtl.png deleted file mode 100644 index 93fd59324f..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/cheatsheet-rtl.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/cheatsheet-rtl@2x.png b/site/dist/docs/5.3/assets/img/examples/cheatsheet-rtl@2x.png deleted file mode 100644 index fa895cec03..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/cheatsheet-rtl@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/cheatsheet.png b/site/dist/docs/5.3/assets/img/examples/cheatsheet.png deleted file mode 100644 index 074be00155..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/cheatsheet.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/cheatsheet@2x.png b/site/dist/docs/5.3/assets/img/examples/cheatsheet@2x.png deleted file mode 100644 index c958b6cb60..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/cheatsheet@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/checkout-rtl.png b/site/dist/docs/5.3/assets/img/examples/checkout-rtl.png deleted file mode 100644 index 1edd0a9336..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/checkout-rtl.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/checkout-rtl@2x.png b/site/dist/docs/5.3/assets/img/examples/checkout-rtl@2x.png deleted file mode 100644 index 41d0009053..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/checkout-rtl@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/checkout.png b/site/dist/docs/5.3/assets/img/examples/checkout.png deleted file mode 100644 index cb81ef2d7c..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/checkout.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/checkout@2x.png b/site/dist/docs/5.3/assets/img/examples/checkout@2x.png deleted file mode 100644 index 79c7b4bb82..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/checkout@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/cover.png b/site/dist/docs/5.3/assets/img/examples/cover.png deleted file mode 100644 index 5458ff11d3..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/cover.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/cover@2x.png b/site/dist/docs/5.3/assets/img/examples/cover@2x.png deleted file mode 100644 index eacd82e983..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/cover@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/dashboard-rtl.png b/site/dist/docs/5.3/assets/img/examples/dashboard-rtl.png deleted file mode 100644 index 7f5b5bb9de..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/dashboard-rtl.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/dashboard-rtl@2x.png b/site/dist/docs/5.3/assets/img/examples/dashboard-rtl@2x.png deleted file mode 100644 index 7e57520257..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/dashboard-rtl@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/dashboard.png b/site/dist/docs/5.3/assets/img/examples/dashboard.png deleted file mode 100644 index 52988da739..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/dashboard.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/dashboard@2x.png b/site/dist/docs/5.3/assets/img/examples/dashboard@2x.png deleted file mode 100644 index 52b23dff69..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/dashboard@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/dropdowns.png b/site/dist/docs/5.3/assets/img/examples/dropdowns.png deleted file mode 100644 index 64fc8f2f00..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/dropdowns.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/dropdowns@2x.png b/site/dist/docs/5.3/assets/img/examples/dropdowns@2x.png deleted file mode 100644 index 6978dcb563..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/dropdowns@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/features.png b/site/dist/docs/5.3/assets/img/examples/features.png deleted file mode 100644 index c77ed09bbc..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/features.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/features@2x.png b/site/dist/docs/5.3/assets/img/examples/features@2x.png deleted file mode 100644 index 28bcbf1f5a..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/features@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/footers.png b/site/dist/docs/5.3/assets/img/examples/footers.png deleted file mode 100644 index 74fe820653..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/footers.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/footers@2x.png b/site/dist/docs/5.3/assets/img/examples/footers@2x.png deleted file mode 100644 index 2700392156..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/footers@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/grid.png b/site/dist/docs/5.3/assets/img/examples/grid.png deleted file mode 100644 index 9b8afb78b9..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/grid.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/grid@2x.png b/site/dist/docs/5.3/assets/img/examples/grid@2x.png deleted file mode 100644 index 78ade65f50..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/grid@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/headers.png b/site/dist/docs/5.3/assets/img/examples/headers.png deleted file mode 100644 index 9895762460..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/headers.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/headers@2x.png b/site/dist/docs/5.3/assets/img/examples/headers@2x.png deleted file mode 100644 index e8de7498cc..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/headers@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/heroes.png b/site/dist/docs/5.3/assets/img/examples/heroes.png deleted file mode 100644 index e9bc3e627a..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/heroes.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/heroes@2x.png b/site/dist/docs/5.3/assets/img/examples/heroes@2x.png deleted file mode 100644 index fff3a72c70..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/heroes@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/jumbotron.png b/site/dist/docs/5.3/assets/img/examples/jumbotron.png deleted file mode 100644 index 48e0c9c0e0..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/jumbotron.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/jumbotron@2x.png b/site/dist/docs/5.3/assets/img/examples/jumbotron@2x.png deleted file mode 100644 index 229b630076..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/jumbotron@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/jumbotrons.png b/site/dist/docs/5.3/assets/img/examples/jumbotrons.png deleted file mode 100644 index daafe594ba..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/jumbotrons.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/jumbotrons@2x.png b/site/dist/docs/5.3/assets/img/examples/jumbotrons@2x.png deleted file mode 100644 index 4e549a484c..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/jumbotrons@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/list-groups.png b/site/dist/docs/5.3/assets/img/examples/list-groups.png deleted file mode 100644 index 6c63f93ca1..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/list-groups.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/list-groups@2x.png b/site/dist/docs/5.3/assets/img/examples/list-groups@2x.png deleted file mode 100644 index 6181038a61..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/list-groups@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/masonry.png b/site/dist/docs/5.3/assets/img/examples/masonry.png deleted file mode 100644 index 67e0d8a838..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/masonry.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/masonry@2x.png b/site/dist/docs/5.3/assets/img/examples/masonry@2x.png deleted file mode 100644 index fe6d1569eb..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/masonry@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/modals.png b/site/dist/docs/5.3/assets/img/examples/modals.png deleted file mode 100644 index 0c8876a676..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/modals.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/modals@2x.png b/site/dist/docs/5.3/assets/img/examples/modals@2x.png deleted file mode 100644 index 34ab6d61b3..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/modals@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbar-bottom.png b/site/dist/docs/5.3/assets/img/examples/navbar-bottom.png deleted file mode 100644 index 77f1dc83a8..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbar-bottom.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbar-bottom@2x.png b/site/dist/docs/5.3/assets/img/examples/navbar-bottom@2x.png deleted file mode 100644 index 031e12d2ae..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbar-bottom@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbar-fixed.png b/site/dist/docs/5.3/assets/img/examples/navbar-fixed.png deleted file mode 100644 index 1b18d79dd8..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbar-fixed.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbar-fixed@2x.png b/site/dist/docs/5.3/assets/img/examples/navbar-fixed@2x.png deleted file mode 100644 index 6d2a644f78..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbar-fixed@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbar-static.png b/site/dist/docs/5.3/assets/img/examples/navbar-static.png deleted file mode 100644 index eb09fca836..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbar-static.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbar-static@2x.png b/site/dist/docs/5.3/assets/img/examples/navbar-static@2x.png deleted file mode 100644 index 6cf7c52eaf..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbar-static@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbars-offcanvas.png b/site/dist/docs/5.3/assets/img/examples/navbars-offcanvas.png deleted file mode 100644 index a628dffc0f..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbars-offcanvas.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbars-offcanvas@2x.png b/site/dist/docs/5.3/assets/img/examples/navbars-offcanvas@2x.png deleted file mode 100644 index 83acbca562..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbars-offcanvas@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbars.png b/site/dist/docs/5.3/assets/img/examples/navbars.png deleted file mode 100644 index a81e85cbdf..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbars.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/navbars@2x.png b/site/dist/docs/5.3/assets/img/examples/navbars@2x.png deleted file mode 100644 index dc0cea0854..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/navbars@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/offcanvas-navbar.png b/site/dist/docs/5.3/assets/img/examples/offcanvas-navbar.png deleted file mode 100644 index 9540fe5962..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/offcanvas-navbar.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/offcanvas-navbar@2x.png b/site/dist/docs/5.3/assets/img/examples/offcanvas-navbar@2x.png deleted file mode 100644 index abb13bc379..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/offcanvas-navbar@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/pricing.png b/site/dist/docs/5.3/assets/img/examples/pricing.png deleted file mode 100644 index ea7224615a..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/pricing.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/pricing@2x.png b/site/dist/docs/5.3/assets/img/examples/pricing@2x.png deleted file mode 100644 index 543b0a3f28..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/pricing@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/product.png b/site/dist/docs/5.3/assets/img/examples/product.png deleted file mode 100644 index a95eff6221..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/product.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/product@2x.png b/site/dist/docs/5.3/assets/img/examples/product@2x.png deleted file mode 100644 index 1dfe454821..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/product@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/sidebars.png b/site/dist/docs/5.3/assets/img/examples/sidebars.png deleted file mode 100644 index 00efb311e7..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/sidebars.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/sidebars@2x.png b/site/dist/docs/5.3/assets/img/examples/sidebars@2x.png deleted file mode 100644 index cb167e5351..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/sidebars@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/sign-in.png b/site/dist/docs/5.3/assets/img/examples/sign-in.png deleted file mode 100644 index 8d57f561ca..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/sign-in.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/sign-in@2x.png b/site/dist/docs/5.3/assets/img/examples/sign-in@2x.png deleted file mode 100644 index 477335984d..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/sign-in@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/starter-template.png b/site/dist/docs/5.3/assets/img/examples/starter-template.png deleted file mode 100644 index d4b20217ac..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/starter-template.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/starter-template@2x.png b/site/dist/docs/5.3/assets/img/examples/starter-template@2x.png deleted file mode 100644 index 9323837caa..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/starter-template@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/sticky-footer-navbar.png b/site/dist/docs/5.3/assets/img/examples/sticky-footer-navbar.png deleted file mode 100644 index 8417cc8300..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/sticky-footer-navbar.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/sticky-footer-navbar@2x.png b/site/dist/docs/5.3/assets/img/examples/sticky-footer-navbar@2x.png deleted file mode 100644 index 1abb382230..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/sticky-footer-navbar@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/sticky-footer.png b/site/dist/docs/5.3/assets/img/examples/sticky-footer.png deleted file mode 100644 index c5ea6ef820..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/sticky-footer.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/examples/sticky-footer@2x.png b/site/dist/docs/5.3/assets/img/examples/sticky-footer@2x.png deleted file mode 100644 index 5a008a0ac3..0000000000 Binary files a/site/dist/docs/5.3/assets/img/examples/sticky-footer@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/favicons/android-chrome-192x192.png b/site/dist/docs/5.3/assets/img/favicons/android-chrome-192x192.png deleted file mode 100644 index 17e5ce11cd..0000000000 Binary files a/site/dist/docs/5.3/assets/img/favicons/android-chrome-192x192.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/favicons/android-chrome-512x512.png b/site/dist/docs/5.3/assets/img/favicons/android-chrome-512x512.png deleted file mode 100644 index 621c3641d8..0000000000 Binary files a/site/dist/docs/5.3/assets/img/favicons/android-chrome-512x512.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/favicons/apple-touch-icon.png b/site/dist/docs/5.3/assets/img/favicons/apple-touch-icon.png deleted file mode 100644 index 8f8ff8a810..0000000000 Binary files a/site/dist/docs/5.3/assets/img/favicons/apple-touch-icon.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/favicons/favicon-16x16.png b/site/dist/docs/5.3/assets/img/favicons/favicon-16x16.png deleted file mode 100644 index f4754c1a3b..0000000000 Binary files a/site/dist/docs/5.3/assets/img/favicons/favicon-16x16.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/favicons/favicon-32x32.png b/site/dist/docs/5.3/assets/img/favicons/favicon-32x32.png deleted file mode 100644 index 7f99a91e30..0000000000 Binary files a/site/dist/docs/5.3/assets/img/favicons/favicon-32x32.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/favicons/favicon.ico b/site/dist/docs/5.3/assets/img/favicons/favicon.ico deleted file mode 100644 index 0549906208..0000000000 Binary files a/site/dist/docs/5.3/assets/img/favicons/favicon.ico and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/favicons/manifest.json b/site/dist/docs/5.3/assets/img/favicons/manifest.json deleted file mode 100644 index 8f2f0f76bf..0000000000 --- a/site/dist/docs/5.3/assets/img/favicons/manifest.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Bootstrap", - "short_name": "Bootstrap", - "icons": [ - { - "src": "android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "start_url": "/?utm_source=a2hs", - "theme_color": "#7952b3", - "background_color": "#7952b3", - "display": "standalone" -} diff --git a/site/dist/docs/5.3/assets/img/favicons/safari-pinned-tab.svg b/site/dist/docs/5.3/assets/img/favicons/safari-pinned-tab.svg deleted file mode 100644 index aa6e85cb91..0000000000 --- a/site/dist/docs/5.3/assets/img/favicons/safari-pinned-tab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/site/dist/docs/5.3/assets/img/guides/bootstrap-parcel.png b/site/dist/docs/5.3/assets/img/guides/bootstrap-parcel.png deleted file mode 100644 index 50fc799513..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/bootstrap-parcel.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/bootstrap-parcel@2x.png b/site/dist/docs/5.3/assets/img/guides/bootstrap-parcel@2x.png deleted file mode 100644 index fe0ec4c638..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/bootstrap-parcel@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/bootstrap-vite.png b/site/dist/docs/5.3/assets/img/guides/bootstrap-vite.png deleted file mode 100644 index de4cad7343..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/bootstrap-vite.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/bootstrap-vite@2x.png b/site/dist/docs/5.3/assets/img/guides/bootstrap-vite@2x.png deleted file mode 100644 index f8d4858088..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/bootstrap-vite@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/bootstrap-webpack.png b/site/dist/docs/5.3/assets/img/guides/bootstrap-webpack.png deleted file mode 100644 index c7be9fc390..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/bootstrap-webpack.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/bootstrap-webpack@2x.png b/site/dist/docs/5.3/assets/img/guides/bootstrap-webpack@2x.png deleted file mode 100644 index 58fdb9cab8..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/bootstrap-webpack@2x.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/parcel-dev-server-bootstrap.png b/site/dist/docs/5.3/assets/img/guides/parcel-dev-server-bootstrap.png deleted file mode 100644 index 59538797c6..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/parcel-dev-server-bootstrap.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/parcel-dev-server.png b/site/dist/docs/5.3/assets/img/guides/parcel-dev-server.png deleted file mode 100644 index aaca949b4a..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/parcel-dev-server.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/vite-dev-server-bootstrap.png b/site/dist/docs/5.3/assets/img/guides/vite-dev-server-bootstrap.png deleted file mode 100644 index a3ae0953fe..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/vite-dev-server-bootstrap.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/vite-dev-server.png b/site/dist/docs/5.3/assets/img/guides/vite-dev-server.png deleted file mode 100644 index 4b1f1f69e5..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/vite-dev-server.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/webpack-dev-server-bootstrap.png b/site/dist/docs/5.3/assets/img/guides/webpack-dev-server-bootstrap.png deleted file mode 100644 index 0bf8304e95..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/webpack-dev-server-bootstrap.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/guides/webpack-dev-server.png b/site/dist/docs/5.3/assets/img/guides/webpack-dev-server.png deleted file mode 100644 index 2802d891c5..0000000000 Binary files a/site/dist/docs/5.3/assets/img/guides/webpack-dev-server.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/parcel.png b/site/dist/docs/5.3/assets/img/parcel.png deleted file mode 100644 index b48b46a784..0000000000 Binary files a/site/dist/docs/5.3/assets/img/parcel.png and /dev/null differ diff --git a/site/dist/docs/5.3/assets/img/vite.svg b/site/dist/docs/5.3/assets/img/vite.svg deleted file mode 100644 index 831cb16105..0000000000 --- a/site/dist/docs/5.3/assets/img/vite.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/site/dist/docs/5.3/assets/img/webpack.svg b/site/dist/docs/5.3/assets/img/webpack.svg deleted file mode 100644 index ed885f2fe1..0000000000 --- a/site/dist/docs/5.3/assets/img/webpack.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/site/dist/docs/5.3/assets/js/color-modes.js b/site/dist/docs/5.3/assets/js/color-modes.js deleted file mode 100644 index 18bc849443..0000000000 --- a/site/dist/docs/5.3/assets/js/color-modes.js +++ /dev/null @@ -1,80 +0,0 @@ -/*! - * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/) - * Copyright 2011-2025 The Bootstrap Authors - * Licensed under the Creative Commons Attribution 3.0 Unported License. - */ - -(() => { - 'use strict' - - const getStoredTheme = () => localStorage.getItem('theme') - const setStoredTheme = theme => localStorage.setItem('theme', theme) - - const getPreferredTheme = () => { - const storedTheme = getStoredTheme() - if (storedTheme) { - return storedTheme - } - - return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' - } - - const setTheme = theme => { - if (theme === 'auto') { - document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) - } else { - document.documentElement.setAttribute('data-bs-theme', theme) - } - } - - setTheme(getPreferredTheme()) - - const showActiveTheme = (theme, focus = false) => { - const themeSwitcher = document.querySelector('#bd-theme') - - if (!themeSwitcher) { - return - } - - const themeSwitcherText = document.querySelector('#bd-theme-text') - const activeThemeIcon = document.querySelector('.theme-icon-active use') - const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`) - const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href') - - document.querySelectorAll('[data-bs-theme-value]').forEach(element => { - element.classList.remove('active') - element.setAttribute('aria-pressed', 'false') - }) - - btnToActive.classList.add('active') - btnToActive.setAttribute('aria-pressed', 'true') - activeThemeIcon.setAttribute('href', svgOfActiveBtn) - const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})` - themeSwitcher.setAttribute('aria-label', themeSwitcherLabel) - - if (focus) { - themeSwitcher.focus() - } - } - - window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { - const storedTheme = getStoredTheme() - if (storedTheme !== 'light' && storedTheme !== 'dark') { - setTheme(getPreferredTheme()) - } - }) - - window.addEventListener('DOMContentLoaded', () => { - showActiveTheme(getPreferredTheme()) - - document.querySelectorAll('[data-bs-theme-value]') - .forEach(toggle => { - toggle.addEventListener('click', () => { - const theme = toggle.getAttribute('data-bs-theme-value') - setStoredTheme(theme) - setTheme(theme) - showActiveTheme(theme, true) - }) - }) - }) -})() diff --git a/site/dist/docs/5.3/assets/js/validate-forms.js b/site/dist/docs/5.3/assets/js/validate-forms.js deleted file mode 100644 index 30ea0aa6b1..0000000000 --- a/site/dist/docs/5.3/assets/js/validate-forms.js +++ /dev/null @@ -1,19 +0,0 @@ -// Example starter JavaScript for disabling form submissions if there are invalid fields -(() => { - 'use strict' - - // Fetch all the forms we want to apply custom Bootstrap validation styles to - const forms = document.querySelectorAll('.needs-validation') - - // Loop over them and prevent submission - Array.from(forms).forEach(form => { - form.addEventListener('submit', event => { - if (!form.checkValidity()) { - event.preventDefault() - event.stopPropagation() - } - - form.classList.add('was-validated') - }, false) - }) -})() diff --git a/site/dist/docs/5.3/assets/sw.js b/site/dist/docs/5.3/assets/sw.js deleted file mode 100644 index dcebfd2d67..0000000000 --- a/site/dist/docs/5.3/assets/sw.js +++ /dev/null @@ -1,27 +0,0 @@ -// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT -// IT'S ALL JUST JUNK FOR OUR DOCS! -// ++++++++++++++++++++++++++++++++++++++++++ - -(function () { - 'use strict' - - if ('serviceWorker' in navigator) { - window.addEventListener('load', function () { - navigator.serviceWorker.getRegistrations().then(function (registrations) { - for (var registration of registrations) { - registration.unregister() - .then(function () { - return self.clients.matchAll() - }) - .then(function (clients) { - clients.forEach(function (client) { - if (client.url && 'navigate' in client) { - client.navigate(client.url) - } - }) - }) - } - }) - }) - } -})() diff --git a/site/dist/docs/5.3/components/accordion/index.html b/site/dist/docs/5.3/components/accordion/index.html deleted file mode 100644 index f14a8b641f..0000000000 --- a/site/dist/docs/5.3/components/accordion/index.html +++ /dev/null @@ -1,316 +0,0 @@ - Accordion · Bootstrap v5.3

Build vertically collapsing accordions in combination with our Collapse JavaScript plugin.

How it works

-

The accordion uses collapse internally to make it collapsible.

-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Example

-

Click the accordions below to expand/collapse the accordion content.

-

To render an accordion that's expanded by default:

-
    -
  • add the .show class on the .accordion-collapse element.
  • -
  • drop the .collapsed class from the .accordion-button element and set its aria-expanded attribute to true.
  • -
-
-
-

- -

-
-
- This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
html
<div class="accordion" id="accordionExample">
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
-      Accordion Item #1
-    </button>
-  </h2>
-  <div id="collapseOne" class="accordion-collapse collapse show" data-bs-parent="#accordionExample">
-    <div class="accordion-body">
-      <strong>This is the first item's accordion body.</strong> It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
-    </div>
-  </div>
-</div>
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
-      Accordion Item #2
-    </button>
-  </h2>
-  <div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
-    <div class="accordion-body">
-      <strong>This is the second item's accordion body.</strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
-    </div>
-  </div>
-</div>
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
-      Accordion Item #3
-    </button>
-  </h2>
-  <div id="collapseThree" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
-    <div class="accordion-body">
-      <strong>This is the third item's accordion body.</strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
-    </div>
-  </div>
-</div>
-</div>
-

Flush

-

Add .accordion-flush to remove some borders and rounded corners to render accordions edge-to-edge with their parent container.

-
-
-

- -

-
-
Placeholder content for this accordion, which is intended to demonstrate the .accordion-flush class. This is the first item's accordion body.
-
-
-
-

- -

-
-
Placeholder content for this accordion, which is intended to demonstrate the .accordion-flush class. This is the second item's accordion body. Let's imagine this being filled with some actual content.
-
-
-
-

- -

-
-
Placeholder content for this accordion, which is intended to demonstrate the .accordion-flush class. This is the third item's accordion body. Nothing more exciting happening here in terms of content, but just filling up the space to make it look, at least at first glance, a bit more representative of how this would look in a real-world application.
-
-
-
html
<div class="accordion accordion-flush" id="accordionFlushExample">
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne">
-      Accordion Item #1
-    </button>
-  </h2>
-  <div id="flush-collapseOne" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample">
-    <div class="accordion-body">Placeholder content for this accordion, which is intended to demonstrate the <code>.accordion-flush</code> class. This is the first item's accordion body.</div>
-  </div>
-</div>
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseTwo" aria-expanded="false" aria-controls="flush-collapseTwo">
-      Accordion Item #2
-    </button>
-  </h2>
-  <div id="flush-collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample">
-    <div class="accordion-body">Placeholder content for this accordion, which is intended to demonstrate the <code>.accordion-flush</code> class. This is the second item's accordion body. Let's imagine this being filled with some actual content.</div>
-  </div>
-</div>
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseThree" aria-expanded="false" aria-controls="flush-collapseThree">
-      Accordion Item #3
-    </button>
-  </h2>
-  <div id="flush-collapseThree" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample">
-    <div class="accordion-body">Placeholder content for this accordion, which is intended to demonstrate the <code>.accordion-flush</code> class. This is the third item's accordion body. Nothing more exciting happening here in terms of content, but just filling up the space to make it look, at least at first glance, a bit more representative of how this would look in a real-world application.</div>
-  </div>
-</div>
-</div>
-

Always open

-

Omit the data-bs-parent attribute on each .accordion-collapse to make accordion items stay open when another item is opened.

-
-
-

- -

-
-
- This is the first item's accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
html
<div class="accordion" id="accordionPanelsStayOpenExample">
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="true" aria-controls="panelsStayOpen-collapseOne">
-      Accordion Item #1
-    </button>
-  </h2>
-  <div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse show">
-    <div class="accordion-body">
-      <strong>This is the first item's accordion body.</strong> It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
-    </div>
-  </div>
-</div>
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseTwo" aria-expanded="false" aria-controls="panelsStayOpen-collapseTwo">
-      Accordion Item #2
-    </button>
-  </h2>
-  <div id="panelsStayOpen-collapseTwo" class="accordion-collapse collapse">
-    <div class="accordion-body">
-      <strong>This is the second item's accordion body.</strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
-    </div>
-  </div>
-</div>
-<div class="accordion-item">
-  <h2 class="accordion-header">
-    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseThree" aria-expanded="false" aria-controls="panelsStayOpen-collapseThree">
-      Accordion Item #3
-    </button>
-  </h2>
-  <div id="panelsStayOpen-collapseThree" class="accordion-collapse collapse">
-    <div class="accordion-body">
-      <strong>This is the third item's accordion body.</strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
-    </div>
-  </div>
-</div>
-</div>
-

Accessibility

-

Please read the collapse accessibility section for more information.

-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, accordions now use local CSS variables on .accordion for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}accordion-color: #{$accordion-color};
-  --#{$prefix}accordion-bg: #{$accordion-bg};
-  --#{$prefix}accordion-transition: #{$accordion-transition};
-  --#{$prefix}accordion-border-color: #{$accordion-border-color};
-  --#{$prefix}accordion-border-width: #{$accordion-border-width};
-  --#{$prefix}accordion-border-radius: #{$accordion-border-radius};
-  --#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
-  --#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};
-  --#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
-  --#{$prefix}accordion-btn-color: #{$accordion-button-color};
-  --#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
-  --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};
-  --#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};
-  --#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};
-  --#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};
-  --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};
-  --#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};
-  --#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};
-  --#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
-  --#{$prefix}accordion-active-color: #{$accordion-button-active-color};
-  --#{$prefix}accordion-active-bg: #{$accordion-button-active-bg};
-  
-

Sass variables

-
$accordion-padding-y:                     1rem;
-$accordion-padding-x:                     1.25rem;
-$accordion-color:                         var(--#{$prefix}body-color);
-$accordion-bg:                            var(--#{$prefix}body-bg);
-$accordion-border-width:                  var(--#{$prefix}border-width);
-$accordion-border-color:                  var(--#{$prefix}border-color);
-$accordion-border-radius:                 var(--#{$prefix}border-radius);
-$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width);
-
-$accordion-body-padding-y:                $accordion-padding-y;
-$accordion-body-padding-x:                $accordion-padding-x;
-
-$accordion-button-padding-y:              $accordion-padding-y;
-$accordion-button-padding-x:              $accordion-padding-x;
-$accordion-button-color:                  var(--#{$prefix}body-color);
-$accordion-button-bg:                     var(--#{$prefix}accordion-bg);
-$accordion-transition:                    $btn-transition, border-radius .15s ease;
-$accordion-button-active-bg:              var(--#{$prefix}primary-bg-subtle);
-$accordion-button-active-color:           var(--#{$prefix}primary-text-emphasis);
-
-// fusv-disable
-$accordion-button-focus-border-color:     $input-focus-border-color; // Deprecated in v5.3.3
-// fusv-enable
-$accordion-button-focus-box-shadow:       $btn-focus-box-shadow;
-
-$accordion-icon-width:                    1.25rem;
-$accordion-icon-color:                    $body-color;
-$accordion-icon-active-color:             $primary-text-emphasis;
-$accordion-icon-transition:               transform .2s ease-in-out;
-$accordion-icon-transform:                rotate(-180deg);
-
-$accordion-button-icon:         url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>");
-$accordion-button-active-icon:  url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>");
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/alerts/index.html b/site/dist/docs/5.3/components/alerts/index.html deleted file mode 100644 index 3eb43b6638..0000000000 --- a/site/dist/docs/5.3/components/alerts/index.html +++ /dev/null @@ -1,400 +0,0 @@ - Alerts · Bootstrap v5.3

Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.

Examples

-

Alerts are available for any length of text, as well as an optional close button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success). For inline dismissal, use the alerts JavaScript plugin.

-

Heads up! As of v5.3.0, the alert-variant() Sass mixin is deprecated. Alert variants now have their CSS variables overridden in a Sass loop.

-
- - - - - - -
html
<div class="alert alert-primary" role="alert">
-A simple primary alert—check it out!
-</div>
-<div class="alert alert-secondary" role="alert">
-A simple secondary alert—check it out!
-</div>
-<div class="alert alert-success" role="alert">
-A simple success alert—check it out!
-</div>
-<div class="alert alert-danger" role="alert">
-A simple danger alert—check it out!
-</div>
-<div class="alert alert-warning" role="alert">
-A simple warning alert—check it out!
-</div>
-<div class="alert alert-info" role="alert">
-A simple info alert—check it out!
-</div>
-<div class="alert alert-light" role="alert">
-A simple light alert—check it out!
-</div>
-<div class="alert alert-dark" role="alert">
-A simple dark alert—check it out!
-</div>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

Live example

-

Click the button below to show an alert (hidden with inline styles to start), then dismiss (and destroy) it with the built-in close button.

-
-
html
<div id="liveAlertPlaceholder"></div>
-<button type="button" class="btn btn-primary" id="liveAlertBtn">Show live alert</button>
-

We use the following JavaScript to trigger our live alert demo:

-
  const alertPlaceholder = document.getElementById('liveAlertPlaceholder')
-  const appendAlert = (message, type) => {
-    const wrapper = document.createElement('div')
-    wrapper.innerHTML = [
-      `<div class="alert alert-${type} alert-dismissible" role="alert">`,
-      `   <div>${message}</div>`,
-      '   <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>',
-      '</div>'
-    ].join('')
-
-    alertPlaceholder.append(wrapper)
-  }
-
-  const alertTrigger = document.getElementById('liveAlertBtn')
-  if (alertTrigger) {
-    alertTrigger.addEventListener('click', () => {
-      appendAlert('Nice, you triggered this alert message!', 'success')
-    })
-  }
-  
- -

Use the .alert-link utility class to quickly provide matching colored links within any alert.

-
- - - - - - -
html
<div class="alert alert-primary" role="alert">
-A simple primary alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
-</div>
-<div class="alert alert-secondary" role="alert">
-A simple secondary alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
-</div>
-<div class="alert alert-success" role="alert">
-A simple success alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
-</div>
-<div class="alert alert-danger" role="alert">
-A simple danger alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
-</div>
-<div class="alert alert-warning" role="alert">
-A simple warning alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
-</div>
-<div class="alert alert-info" role="alert">
-A simple info alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
-</div>
-<div class="alert alert-light" role="alert">
-A simple light alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
-</div>
-<div class="alert alert-dark" role="alert">
-A simple dark alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
-</div>
-

Additional content

-

Alerts can also contain additional HTML elements like headings, paragraphs and dividers.

-
html
<div class="alert alert-success" role="alert">
-<h4 class="alert-heading">Well done!</h4>
-<p>Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.</p>
-<hr>
-<p class="mb-0">Whenever you need to, be sure to use margin utilities to keep things nice and tidy.</p>
-</div>
-

Icons

-

Similarly, you can use flexbox utilities and Bootstrap Icons to create alerts with icons. Depending on your icons and content, you may want to add more utilities or custom styles.

-
html
<div class="alert alert-primary d-flex align-items-center" role="alert">
-<svg xmlns="http://www.w3.org/2000/svg" class="bi flex-shrink-0 me-2" viewBox="0 0 16 16" role="img" aria-label="Warning:">
-  <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
-</svg>
-<div>
-  An example alert with an icon
-</div>
-</div>
-

Need more than one icon for your alerts? Consider using more Bootstrap Icons and making a local SVG sprite like so to easily reference the same icons repeatedly.

-
- - - - - - - - - - - - - - -
html
<svg xmlns="http://www.w3.org/2000/svg" class="d-none">
-<symbol id="check-circle-fill" viewBox="0 0 16 16">
-  <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
-</symbol>
-<symbol id="info-fill" viewBox="0 0 16 16">
-  <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
-</symbol>
-<symbol id="exclamation-triangle-fill" viewBox="0 0 16 16">
-  <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
-</symbol>
-</svg>
-
-<div class="alert alert-primary d-flex align-items-center" role="alert">
-<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Info:"><use xlink:href="#info-fill"/></svg>
-<div>
-  An example alert with an icon
-</div>
-</div>
-<div class="alert alert-success d-flex align-items-center" role="alert">
-<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Success:"><use xlink:href="#check-circle-fill"/></svg>
-<div>
-  An example success alert with an icon
-</div>
-</div>
-<div class="alert alert-warning d-flex align-items-center" role="alert">
-<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Warning:"><use xlink:href="#exclamation-triangle-fill"/></svg>
-<div>
-  An example warning alert with an icon
-</div>
-</div>
-<div class="alert alert-danger d-flex align-items-center" role="alert">
-<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
-<div>
-  An example danger alert with an icon
-</div>
-</div>
-

Dismissing

-

Using the alert JavaScript plugin, it's possible to dismiss any alert inline. Here's how:

-
    -
  • Be sure you've loaded the alert plugin, or the compiled Bootstrap JavaScript.
  • -
  • Add a close button and the .alert-dismissible class, which adds extra padding to the right of the alert and positions the close button.
  • -
  • On the close button, add the data-bs-dismiss="alert" attribute, which triggers the JavaScript functionality. Be sure to use the <button> element with it for proper behavior across all devices.
  • -
  • To animate alerts when dismissing them, be sure to add the .fade and .show classes.
  • -
-

You can see this in action with a live demo:

-
html
<div class="alert alert-warning alert-dismissible fade show" role="alert">
-<strong>Holy guacamole!</strong> You should check in on some of those fields below.
-<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
-</div>
-

When an alert is dismissed, the element is completely removed from the page structure. If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. For this reason, we recommend including additional JavaScript that listens for the closed.bs.alert event and programmatically sets focus() to the most appropriate location in the page. If you're planning to move focus to a non-interactive element that normally does not receive focus, make sure to add tabindex="-1" to the element.

-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, alerts now use local CSS variables on .alert for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}alert-bg: transparent;
-  --#{$prefix}alert-padding-x: #{$alert-padding-x};
-  --#{$prefix}alert-padding-y: #{$alert-padding-y};
-  --#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
-  --#{$prefix}alert-color: inherit;
-  --#{$prefix}alert-border-color: transparent;
-  --#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
-  --#{$prefix}alert-border-radius: #{$alert-border-radius};
-  --#{$prefix}alert-link-color: inherit;
-  
-

Sass variables

-
$alert-padding-y:               $spacer;
-$alert-padding-x:               $spacer;
-$alert-margin-bottom:           1rem;
-$alert-border-radius:           var(--#{$prefix}border-radius);
-$alert-link-font-weight:        $font-weight-bold;
-$alert-border-width:            var(--#{$prefix}border-width);
-$alert-dismissible-padding-r:   $alert-padding-x * 3; // 3x covers width of x plus default padding on either side
-
-

Sass mixins

- -Deprecated in v5.3.0 -
@mixin alert-variant($background, $border, $color) {
-  --#{$prefix}alert-color: #{$color};
-  --#{$prefix}alert-bg: #{$background};
-  --#{$prefix}alert-border-color: #{$border};
-  --#{$prefix}alert-link-color: #{shade-color($color, 20%)};
-
-  @if $enable-gradients {
-    background-image: var(--#{$prefix}gradient);
-  }
-
-  .alert-link {
-    color: var(--#{$prefix}alert-link-color);
-  }
-}
-
-

Sass loops

-

Loop that generates the modifier classes with an overriding of CSS variables.

-
// Generate contextual modifier classes for colorizing the alert
-@each $state in map-keys($theme-colors) {
-  .alert-#{$state} {
-    --#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
-    --#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
-    --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
-    --#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
-  }
-}
-
-

JavaScript behavior

-

Initialize

-

Initialize elements as alerts

-
const alertList = document.querySelectorAll('.alert')
-const alerts = [...alertList].map(element => new bootstrap.Alert(element))
-
-

For the sole purpose of dismissing an alert, it isn't necessary to initialize the component manually via the JS API. By making use of data-bs-dismiss="alert", the component will be initialized automatically and properly dismissed.

See the triggers section for more details.

-

Triggers

-

-Dismissal can be achieved with the data-bs-dismiss attribute on a button within the alert as demonstrated below: -

<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

-or on a button outside the alert using the additional data-bs-target as demonstrated below: -

<button type="button" class="btn-close" data-bs-dismiss="alert" data-bs-target="#my-alert" aria-label="Close"></button>
-

Note that closing an alert will remove it from the DOM.

-

Methods

-

You can create an alert instance with the alert constructor, for example:

-
const bsAlert = new bootstrap.Alert('#myAlert')
-
-

This makes an alert listen for click events on descendant elements which have the data-bs-dismiss="alert" attribute. (Not necessary when using the data-api’s auto-initialization.)

-
- - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
closeCloses an alert by removing it from the DOM. If the .fade and .show classes are present on the element, the alert will fade out before it is removed.
disposeDestroys an element's alert. (Removes stored data on the DOM element)
getInstanceStatic method which allows you to get the alert instance associated to a DOM element. For example: bootstrap.Alert.getInstance(alert).
getOrCreateInstanceStatic method which returns an alert instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: bootstrap.Alert.getOrCreateInstance(element).
-

Basic usage:

-
const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
-alert.close()
-
-

Events

-

Bootstrap's alert plugin exposes a few events for hooking into alert functionality.

-
- - - - - - - - - - - - - - - - -
EventDescription
close.bs.alertFires immediately when the close instance method is called.
closed.bs.alertFired when the alert has been closed and CSS transitions have completed.
-
const myAlert = document.getElementById('myAlert')
-myAlert.addEventListener('closed.bs.alert', event => {
-  // do something, for instance, explicitly move focus to the most appropriate element,
-  // so it doesn't get lost/reset to the start of the page
-  // document.getElementById('...').focus()
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/badge/index.html b/site/dist/docs/5.3/components/badge/index.html deleted file mode 100644 index 133f145f80..0000000000 --- a/site/dist/docs/5.3/components/badge/index.html +++ /dev/null @@ -1,131 +0,0 @@ - Badges · Bootstrap v5.3

Documentation and examples for badges, our small count and labeling component.

Examples

-

Badges scale to match the size of the immediate parent element by using relative font sizing and em units. As of v5, badges no longer have focus or hover styles for links.

-

Headings

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-
Example heading New
-
Example heading New
html
<h1>Example heading <span class="badge text-bg-secondary">New</span></h1>
-<h2>Example heading <span class="badge text-bg-secondary">New</span></h2>
-<h3>Example heading <span class="badge text-bg-secondary">New</span></h3>
-<h4>Example heading <span class="badge text-bg-secondary">New</span></h4>
-<h5>Example heading <span class="badge text-bg-secondary">New</span></h5>
-<h6>Example heading <span class="badge text-bg-secondary">New</span></h6>
-

Buttons

-

Badges can be used as part of links or buttons to provide a counter.

-
html
<button type="button" class="btn btn-primary">
-Notifications <span class="badge text-bg-secondary">4</span>
-</button>
-

Note that depending on how they are used, badges may be confusing for users of screen readers and similar assistive technologies. While the styling of badges provides a visual cue as to their purpose, these users will simply be presented with the content of the badge. Depending on the specific situation, these badges may seem like random additional words or numbers at the end of a sentence, link, or button.

-

Unless the context is clear (as with the "Notifications" example, where it is understood that the "4" is the number of notifications), consider including additional context with a visually hidden piece of additional text.

-

Positioned

-

Use utilities to modify a .badge and position it in the corner of a link or button.

-
html
<button type="button" class="btn btn-primary position-relative">
-Inbox
-<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
-  99+
-  <span class="visually-hidden">unread messages</span>
-</span>
-</button>
-

You can also replace the .badge class with a few more utilities without a count for a more generic indicator.

-
html
<button type="button" class="btn btn-primary position-relative">
-Profile
-<span class="position-absolute top-0 start-100 translate-middle p-2 bg-danger border border-light rounded-circle">
-  <span class="visually-hidden">New alerts</span>
-</span>
-</button>
-

Background colors

-Added in v5.2.0 -

Set a background-color with contrasting foreground color with our .text-bg-{color} helpers. Previously it was required to manually pair your choice of .text-{color} and .bg-{color} utilities for styling, which you still may use if you prefer.

-
Primary -Secondary -Success -Danger -Warning -Info -Light -Dark
html
<span class="badge text-bg-primary">Primary</span>
-<span class="badge text-bg-secondary">Secondary</span>
-<span class="badge text-bg-success">Success</span>
-<span class="badge text-bg-danger">Danger</span>
-<span class="badge text-bg-warning">Warning</span>
-<span class="badge text-bg-info">Info</span>
-<span class="badge text-bg-light">Light</span>
-<span class="badge text-bg-dark">Dark</span>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

Pill badges

-

Use the .rounded-pill utility class to make badges more rounded with a larger border-radius.

-
Primary -Secondary -Success -Danger -Warning -Info -Light -Dark
html
<span class="badge rounded-pill text-bg-primary">Primary</span>
-<span class="badge rounded-pill text-bg-secondary">Secondary</span>
-<span class="badge rounded-pill text-bg-success">Success</span>
-<span class="badge rounded-pill text-bg-danger">Danger</span>
-<span class="badge rounded-pill text-bg-warning">Warning</span>
-<span class="badge rounded-pill text-bg-info">Info</span>
-<span class="badge rounded-pill text-bg-light">Light</span>
-<span class="badge rounded-pill text-bg-dark">Dark</span>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, badges now use local CSS variables on .badge for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}badge-padding-x: #{$badge-padding-x};
-  --#{$prefix}badge-padding-y: #{$badge-padding-y};
-  @include rfs($badge-font-size, --#{$prefix}badge-font-size);
-  --#{$prefix}badge-font-weight: #{$badge-font-weight};
-  --#{$prefix}badge-color: #{$badge-color};
-  --#{$prefix}badge-border-radius: #{$badge-border-radius};
-  
-

Sass variables

-
$badge-font-size:                   .75em;
-$badge-font-weight:                 $font-weight-bold;
-$badge-color:                       $white;
-$badge-padding-y:                   .35em;
-$badge-padding-x:                   .65em;
-$badge-border-radius:               var(--#{$prefix}border-radius);
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/breadcrumb/index.html b/site/dist/docs/5.3/components/breadcrumb/index.html deleted file mode 100644 index 64043f2d5f..0000000000 --- a/site/dist/docs/5.3/components/breadcrumb/index.html +++ /dev/null @@ -1,142 +0,0 @@ - Breadcrumb · Bootstrap v5.3

Breadcrumb

Indicate the current page's location within a navigational hierarchy that automatically adds separators via CSS.

On this page

Example

-

Use an ordered or unordered list with linked list items to create a minimally styled breadcrumb. Use our utilities to add additional styles as desired.

-
- - - -
html
<nav aria-label="breadcrumb">
-<ol class="breadcrumb">
-  <li class="breadcrumb-item active" aria-current="page">Home</li>
-</ol>
-</nav>
-
-<nav aria-label="breadcrumb">
-<ol class="breadcrumb">
-  <li class="breadcrumb-item"><a href="#">Home</a></li>
-  <li class="breadcrumb-item active" aria-current="page">Library</li>
-</ol>
-</nav>
-
-<nav aria-label="breadcrumb">
-<ol class="breadcrumb">
-  <li class="breadcrumb-item"><a href="#">Home</a></li>
-  <li class="breadcrumb-item"><a href="#">Library</a></li>
-  <li class="breadcrumb-item active" aria-current="page">Data</li>
-</ol>
-</nav>
-

Dividers

-

Dividers are automatically added in CSS through ::before and content. They can be changed by modifying a local CSS custom property --bs-breadcrumb-divider, or through the $breadcrumb-divider Sass variable — and $breadcrumb-divider-flipped for its RTL counterpart, if needed. We default to our Sass variable, which is set as a fallback to the custom property. This way, you get a global divider that you can override without recompiling CSS at any time.

-
html
<nav style="--bs-breadcrumb-divider: '>';" aria-label="breadcrumb">
-<ol class="breadcrumb">
-  <li class="breadcrumb-item"><a href="#">Home</a></li>
-  <li class="breadcrumb-item active" aria-current="page">Library</li>
-</ol>
-</nav>
-

When modifying via Sass, the quote function is required to generate the quotes around a string. For example, using > as the divider, you can use this:

-
$breadcrumb-divider: quote(">");
-
-

It's also possible to use an embedded SVG icon. Apply it via our CSS custom property, or use the Sass variable.

-

Inlined SVG requires properly escaped characters. Some reserved characters, such as <, > and #, must be URL-encoded or escaped. We do this with the $breadcrumb-divider variable using our escape-svg() Sass function. When customizing the CSS variable, you must handle this yourself. Read Kevin Weber's explanations on CodePen for more info.

-
html
<nav style="--bs-breadcrumb-divider: url(&#34;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%236c757d'/%3E%3C/svg%3E&#34;);" aria-label="breadcrumb">
-<ol class="breadcrumb">
-  <li class="breadcrumb-item"><a href="#">Home</a></li>
-  <li class="breadcrumb-item active" aria-current="page">Library</li>
-</ol>
-</nav>
-
$breadcrumb-divider: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8'><path d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='#{$breadcrumb-divider-color}'/></svg>");
-
-

You can also remove the divider setting --bs-breadcrumb-divider: ''; (empty strings in CSS custom properties counts as a value), or setting the Sass variable to $breadcrumb-divider: none;.

-
html
<nav style="--bs-breadcrumb-divider: '';" aria-label="breadcrumb">
-<ol class="breadcrumb">
-  <li class="breadcrumb-item"><a href="#">Home</a></li>
-  <li class="breadcrumb-item active" aria-current="page">Library</li>
-</ol>
-</nav>
-
$breadcrumb-divider: none;
-
-

Accessibility

-

Since breadcrumbs provide a navigation, it's a good idea to add a meaningful label such as aria-label="breadcrumb" to describe the type of navigation provided in the <nav> element, as well as applying an aria-current="page" to the last item of the set to indicate that it represents the current page.

-

For more information, see the ARIA Authoring Practices Guide breadcrumb pattern.

-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, breadcrumbs now use local CSS variables on .breadcrumb for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};
-  --#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};
-  --#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};
-  @include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size);
-  --#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};
-  --#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};
-  --#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};
-  --#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};
-  --#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};
-  
-

Sass variables

-
$breadcrumb-font-size:              null;
-$breadcrumb-padding-y:              0;
-$breadcrumb-padding-x:              0;
-$breadcrumb-item-padding-x:         .5rem;
-$breadcrumb-margin-bottom:          1rem;
-$breadcrumb-bg:                     null;
-$breadcrumb-divider-color:          var(--#{$prefix}secondary-color);
-$breadcrumb-active-color:           var(--#{$prefix}secondary-color);
-$breadcrumb-divider:                quote("/");
-$breadcrumb-divider-flipped:        $breadcrumb-divider;
-$breadcrumb-border-radius:          null;
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/button-group/index.html b/site/dist/docs/5.3/components/button-group/index.html deleted file mode 100644 index 3133b3a380..0000000000 --- a/site/dist/docs/5.3/components/button-group/index.html +++ /dev/null @@ -1,362 +0,0 @@ - Button group · Bootstrap v5.3

Button group

Group a series of buttons together on a single line or stack them in a vertical column.

Basic example

-

Wrap a series of buttons with .btn in .btn-group.

-
- - - -
html
<div class="btn-group" role="group" aria-label="Basic example">
-<button type="button" class="btn btn-primary">Left</button>
-<button type="button" class="btn btn-primary">Middle</button>
-<button type="button" class="btn btn-primary">Right</button>
-</div>
-

Button groups require an appropriate role attribute and explicit label to ensure assistive technologies like screen readers identify buttons as grouped and announce them. Use role="group" for button groups or role="toolbar" for button toolbars. Then use aria-label or aria-labelledby to label them.

-

These classes can also be added to groups of links, as an alternative to the .nav navigation components.

-
html
<div class="btn-group">
-<a href="#" class="btn btn-primary active" aria-current="page">Active link</a>
-<a href="#" class="btn btn-primary">Link</a>
-<a href="#" class="btn btn-primary">Link</a>
-</div>
-

Mixed styles

-
- - - -
html
<div class="btn-group" role="group" aria-label="Basic mixed styles example">
-<button type="button" class="btn btn-danger">Left</button>
-<button type="button" class="btn btn-warning">Middle</button>
-<button type="button" class="btn btn-success">Right</button>
-</div>
-

Outlined styles

-
- - - -
html
<div class="btn-group" role="group" aria-label="Basic outlined example">
-<button type="button" class="btn btn-outline-primary">Left</button>
-<button type="button" class="btn btn-outline-primary">Middle</button>
-<button type="button" class="btn btn-outline-primary">Right</button>
-</div>
-

Checkbox and radio button groups

-

Combine button-like checkbox and radio toggle buttons into a seamless looking button group.

-
- - - - - - - - -
html
<div class="btn-group" role="group" aria-label="Basic checkbox toggle button group">
-<input type="checkbox" class="btn-check" id="btncheck1" autocomplete="off">
-<label class="btn btn-outline-primary" for="btncheck1">Checkbox 1</label>
-
-<input type="checkbox" class="btn-check" id="btncheck2" autocomplete="off">
-<label class="btn btn-outline-primary" for="btncheck2">Checkbox 2</label>
-
-<input type="checkbox" class="btn-check" id="btncheck3" autocomplete="off">
-<label class="btn btn-outline-primary" for="btncheck3">Checkbox 3</label>
-</div>
-
- - - - - - - - -
html
<div class="btn-group" role="group" aria-label="Basic radio toggle button group">
-<input type="radio" class="btn-check" name="btnradio" id="btnradio1" autocomplete="off" checked>
-<label class="btn btn-outline-primary" for="btnradio1">Radio 1</label>
-
-<input type="radio" class="btn-check" name="btnradio" id="btnradio2" autocomplete="off">
-<label class="btn btn-outline-primary" for="btnradio2">Radio 2</label>
-
-<input type="radio" class="btn-check" name="btnradio" id="btnradio3" autocomplete="off">
-<label class="btn btn-outline-primary" for="btnradio3">Radio 3</label>
-</div>
-

Button toolbar

-

Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.

-
html
<div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
-<div class="btn-group me-2" role="group" aria-label="First group">
-  <button type="button" class="btn btn-primary">1</button>
-  <button type="button" class="btn btn-primary">2</button>
-  <button type="button" class="btn btn-primary">3</button>
-  <button type="button" class="btn btn-primary">4</button>
-</div>
-<div class="btn-group me-2" role="group" aria-label="Second group">
-  <button type="button" class="btn btn-secondary">5</button>
-  <button type="button" class="btn btn-secondary">6</button>
-  <button type="button" class="btn btn-secondary">7</button>
-</div>
-<div class="btn-group" role="group" aria-label="Third group">
-  <button type="button" class="btn btn-info">8</button>
-</div>
-</div>
-

Feel free to mix input groups with button groups in your toolbars. Similar to the example above, you'll likely need some utilities though to space things properly.

-
- -
html
<div class="btn-toolbar mb-3" role="toolbar" aria-label="Toolbar with button groups">
-<div class="btn-group me-2" role="group" aria-label="First group">
-  <button type="button" class="btn btn-outline-secondary">1</button>
-  <button type="button" class="btn btn-outline-secondary">2</button>
-  <button type="button" class="btn btn-outline-secondary">3</button>
-  <button type="button" class="btn btn-outline-secondary">4</button>
-</div>
-<div class="input-group">
-  <div class="input-group-text" id="btnGroupAddon">@</div>
-  <input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="btnGroupAddon">
-</div>
-</div>
-
-<div class="btn-toolbar justify-content-between" role="toolbar" aria-label="Toolbar with button groups">
-<div class="btn-group" role="group" aria-label="First group">
-  <button type="button" class="btn btn-outline-secondary">1</button>
-  <button type="button" class="btn btn-outline-secondary">2</button>
-  <button type="button" class="btn btn-outline-secondary">3</button>
-  <button type="button" class="btn btn-outline-secondary">4</button>
-</div>
-<div class="input-group">
-  <div class="input-group-text" id="btnGroupAddon2">@</div>
-  <input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="btnGroupAddon2">
-</div>
-</div>
-

Sizing

-

Instead of applying button sizing classes to every button in a group, just add .btn-group-* to each .btn-group, including each one when nesting multiple groups.

-
- - - -
-
-
- - - -
-
-
- - - -
html
<div class="btn-group btn-group-lg" role="group" aria-label="Large button group">
-<button type="button" class="btn btn-outline-primary">Left</button>
-<button type="button" class="btn btn-outline-primary">Middle</button>
-<button type="button" class="btn btn-outline-primary">Right</button>
-</div>
-<br>
-<div class="btn-group" role="group" aria-label="Default button group">
-<button type="button" class="btn btn-outline-primary">Left</button>
-<button type="button" class="btn btn-outline-primary">Middle</button>
-<button type="button" class="btn btn-outline-primary">Right</button>
-</div>
-<br>
-<div class="btn-group btn-group-sm" role="group" aria-label="Small button group">
-<button type="button" class="btn btn-outline-primary">Left</button>
-<button type="button" class="btn btn-outline-primary">Middle</button>
-<button type="button" class="btn btn-outline-primary">Right</button>
-</div>
-

Nesting

-

Place a .btn-group within another .btn-group when you want dropdown menus mixed with a series of buttons.

-
- - - -
- - -
-
html
<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
-<button type="button" class="btn btn-primary">1</button>
-<button type="button" class="btn btn-primary">2</button>
-
-<div class="btn-group" role="group">
-  <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-  </ul>
-</div>
-</div>
-

Vertical variation

-

Make a set of buttons appear vertically stacked rather than horizontally. Split button dropdowns are not supported here.

-
- - - - -
html
<div class="btn-group-vertical" role="group" aria-label="Vertical button group">
-<button type="button" class="btn btn-primary">Button</button>
-<button type="button" class="btn btn-primary">Button</button>
-<button type="button" class="btn btn-primary">Button</button>
-<button type="button" class="btn btn-primary">Button</button>
-</div>
-
-
- - -
- - -
- - -
-
- - -
-
- - -
-
html
<div class="btn-group-vertical" role="group" aria-label="Vertical button group">
-<div class="btn-group" role="group">
-  <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-  </ul>
-</div>
-<button type="button" class="btn btn-primary">Button</button>
-<button type="button" class="btn btn-primary">Button</button>
-<div class="btn-group dropstart" role="group">
-  <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-  </ul>
-</div>
-<div class="btn-group dropend" role="group">
-  <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-  </ul>
-</div>
-<div class="btn-group dropup" role="group">
-  <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-    <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-  </ul>
-</div>
-</div>
-
- - - - - - -
html
<div class="btn-group-vertical" role="group" aria-label="Vertical radio toggle button group">
-<input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio1" autocomplete="off" checked>
-<label class="btn btn-outline-danger" for="vbtn-radio1">Radio 1</label>
-<input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio2" autocomplete="off">
-<label class="btn btn-outline-danger" for="vbtn-radio2">Radio 2</label>
-<input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio3" autocomplete="off">
-<label class="btn btn-outline-danger" for="vbtn-radio3">Radio 3</label>
-</div>
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/buttons/index.html b/site/dist/docs/5.3/components/buttons/index.html deleted file mode 100644 index 797c7a4942..0000000000 --- a/site/dist/docs/5.3/components/buttons/index.html +++ /dev/null @@ -1,417 +0,0 @@ - Buttons · Bootstrap v5.3

Use Bootstrap's custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.

Base class

-

Bootstrap has a base .btn class that sets up basic styles such as padding and content alignment. By default, .btn controls have a transparent border and background color, and lack any explicit focus and hover styles.

-
html
<button type="button" class="btn">Base class</button>
-

The .btn class is intended to be used in conjunction with our button variants, or to serve as a basis for your own custom styles.

-

If you are using the .btn class on its own, remember to at least define some explicit :focus and/or :focus-visible styles.

-

Variants

-

Bootstrap includes several button variants, each serving its own semantic purpose, with a few extras thrown in for more control.

-
- - - - - - - - -
html
<button type="button" class="btn btn-primary">Primary</button>
-<button type="button" class="btn btn-secondary">Secondary</button>
-<button type="button" class="btn btn-success">Success</button>
-<button type="button" class="btn btn-danger">Danger</button>
-<button type="button" class="btn btn-warning">Warning</button>
-<button type="button" class="btn btn-info">Info</button>
-<button type="button" class="btn btn-light">Light</button>
-<button type="button" class="btn btn-dark">Dark</button>
-
-<button type="button" class="btn btn-link">Link</button>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

Disable text wrapping

-

If you don't want the button text to wrap, you can add the .text-nowrap class to the button. In Sass, you can set $btn-white-space: nowrap to disable text wrapping for each button.

-

Button tags

-

The .btn classes are designed to be used with the <button> element. However, you can also use these classes on <a> or <input> elements (though some browsers may apply a slightly different rendering).

-

When using button classes on <a> elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a role="button" to appropriately convey their purpose to assistive technologies such as screen readers.

-
Link - - - -
html
<a class="btn btn-primary" href="#" role="button">Link</a>
-<button class="btn btn-primary" type="submit">Button</button>
-<input class="btn btn-primary" type="button" value="Input">
-<input class="btn btn-primary" type="submit" value="Submit">
-<input class="btn btn-primary" type="reset" value="Reset">
-

Outline buttons

-

In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.

-
- - - - - - -
html
<button type="button" class="btn btn-outline-primary">primary</button>
-<button type="button" class="btn btn-outline-secondary">secondary</button>
-<button type="button" class="btn btn-outline-success">success</button>
-<button type="button" class="btn btn-outline-danger">danger</button>
-<button type="button" class="btn btn-outline-warning">warning</button>
-<button type="button" class="btn btn-outline-info">info</button>
-<button type="button" class="btn btn-outline-light">light</button>
-<button type="button" class="btn btn-outline-dark">dark</button>
-

Some of the button styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast.

-

Sizes

-

Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.

-
-
html
<button type="button" class="btn btn-primary btn-lg">Large button</button>
-<button type="button" class="btn btn-secondary btn-lg">Large button</button>
-
-
html
<button type="button" class="btn btn-primary btn-sm">Small button</button>
-<button type="button" class="btn btn-secondary btn-sm">Small button</button>
-

You can even roll your own custom sizing with CSS variables:

-
html
<button type="button" class="btn btn-primary"
-      style="--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;">
-Custom button
-</button>
-

Disabled state

-

Make buttons look inactive by adding the disabled boolean attribute to any <button> element. Disabled buttons have pointer-events: none applied to, preventing hover and active states from triggering.

-
- - -
html
<button type="button" class="btn btn-primary" disabled>Primary button</button>
-<button type="button" class="btn btn-secondary" disabled>Button</button>
-<button type="button" class="btn btn-outline-primary" disabled>Primary button</button>
-<button type="button" class="btn btn-outline-secondary" disabled>Button</button>
-

Disabled buttons using the <a> element behave a bit different:

-
    -
  • <a>s don't support the disabled attribute, so you must add the .disabled class to make it visually appear disabled.
  • -
  • Some future-friendly styles are included to disable all pointer-events on anchor buttons.
  • -
  • Disabled buttons using <a> should include the aria-disabled="true" attribute to indicate the state of the element to assistive technologies.
  • -
  • Disabled buttons using <a> should not include the href attribute.
  • -
-
html
<a class="btn btn-primary disabled" role="button" aria-disabled="true">Primary link</a>
-<a class="btn btn-secondary disabled" role="button" aria-disabled="true">Link</a>
- -

To cover cases where you have to keep the href attribute on a disabled link, the .disabled class uses pointer-events: none to try to disable the link functionality of <a>s. Note that this CSS property is not yet standardized for HTML, but all modern browsers support it. In addition, even in browsers that do support pointer-events: none, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, in addition to aria-disabled="true", also include a tabindex="-1" attribute on these links to prevent them from receiving keyboard focus, and use custom JavaScript to disable their functionality altogether.

-
html
<a href="#" class="btn btn-primary disabled" tabindex="-1" role="button" aria-disabled="true">Primary link</a>
-<a href="#" class="btn btn-secondary disabled" tabindex="-1" role="button" aria-disabled="true">Link</a>
-

Block buttons

-

Create responsive stacks of full-width, "block buttons" like those in Bootstrap 4 with a mix of our display and gap utilities. By using utilities instead of button-specific classes, we have much greater control over spacing, alignment, and responsive behaviors.

-
- - -
html
<div class="d-grid gap-2">
-<button class="btn btn-primary" type="button">Button</button>
-<button class="btn btn-primary" type="button">Button</button>
-</div>
-

Here we create a responsive variation, starting with vertically stacked buttons until the md breakpoint, where .d-md-block replaces the .d-grid class, thus nullifying the gap-2 utility. Resize your browser to see them change.

-
- - -
html
<div class="d-grid gap-2 d-md-block">
-<button class="btn btn-primary" type="button">Button</button>
-<button class="btn btn-primary" type="button">Button</button>
-</div>
-

You can adjust the width of your block buttons with grid column width classes. For example, for a half-width "block button", use .col-6. Center it horizontally with .mx-auto, too.

-
- - -
html
<div class="d-grid gap-2 col-6 mx-auto">
-<button class="btn btn-primary" type="button">Button</button>
-<button class="btn btn-primary" type="button">Button</button>
-</div>
-

Additional utilities can be used to adjust the alignment of buttons when horizontal. Here we've taken our previous responsive example and added some flex utilities and a margin utility on the button to right-align the buttons when they're no longer stacked.

-
- - -
html
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
-<button class="btn btn-primary me-md-2" type="button">Button</button>
-<button class="btn btn-primary" type="button">Button</button>
-</div>
-

Button plugin

-

The button plugin allows you to create simple on/off toggle buttons.

-

Visually, these toggle buttons are identical to the checkbox toggle buttons. However, they are conveyed differently by assistive technologies: the checkbox toggles will be announced by screen readers as "checked"/"not checked" (since, despite their appearance, they are fundamentally still checkboxes), whereas these toggle buttons will be announced as "button"/"button pressed". The choice between these two approaches will depend on the type of toggle you are creating, and whether or not the toggle will make sense to users when announced as a checkbox or as an actual button.

-

Toggle states

-

Add data-bs-toggle="button" to toggle a button's active state. If you're pre-toggling a button, you must manually add the .active class and aria-pressed="true" to ensure that it is conveyed appropriately to assistive technologies.

-

- - - -

-

- - - -

html
<p class="d-inline-flex gap-1">
-<button type="button" class="btn" data-bs-toggle="button">Toggle button</button>
-<button type="button" class="btn active" data-bs-toggle="button" aria-pressed="true">Active toggle button</button>
-<button type="button" class="btn" disabled data-bs-toggle="button">Disabled toggle button</button>
-</p>
-<p class="d-inline-flex gap-1">
-<button type="button" class="btn btn-primary" data-bs-toggle="button">Toggle button</button>
-<button type="button" class="btn btn-primary active" data-bs-toggle="button" aria-pressed="true">Active toggle button</button>
-<button type="button" class="btn btn-primary" disabled data-bs-toggle="button">Disabled toggle button</button>
-</p>
-
html
<p class="d-inline-flex gap-1">
-<a href="#" class="btn" role="button" data-bs-toggle="button">Toggle link</a>
-<a href="#" class="btn active" role="button" data-bs-toggle="button" aria-pressed="true">Active toggle link</a>
-<a class="btn disabled" aria-disabled="true" role="button" data-bs-toggle="button">Disabled toggle link</a>
-</p>
-<p class="d-inline-flex gap-1">
-<a href="#" class="btn btn-primary" role="button" data-bs-toggle="button">Toggle link</a>
-<a href="#" class="btn btn-primary active" role="button" data-bs-toggle="button" aria-pressed="true">Active toggle link</a>
-<a class="btn btn-primary disabled" aria-disabled="true" role="button" data-bs-toggle="button">Disabled toggle link</a>
-</p>
-

Methods

-

You can create a button instance with the button constructor, for example:

-
const bsButton = new bootstrap.Button('#myButton')
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's button. (Removes stored data on the DOM element)
getInstanceStatic method which allows you to get the button instance associated with a DOM element, you can use it like this: bootstrap.Button.getInstance(element).
getOrCreateInstanceStatic method which returns a button instance associated with a DOM element or creates a new one in case it wasn't initialized. You can use it like this: bootstrap.Button.getOrCreateInstance(element).
toggleToggles push state. Gives the button the appearance that it has been activated.
-

For example, to toggle all buttons

-
document.querySelectorAll('.btn').forEach(buttonElement => {
-  const button = bootstrap.Button.getOrCreateInstance(buttonElement)
-  button.toggle()
-})
-
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, buttons now use local CSS variables on .btn for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}btn-padding-x: #{$btn-padding-x};
-  --#{$prefix}btn-padding-y: #{$btn-padding-y};
-  --#{$prefix}btn-font-family: #{$btn-font-family};
-  @include rfs($btn-font-size, --#{$prefix}btn-font-size);
-  --#{$prefix}btn-font-weight: #{$btn-font-weight};
-  --#{$prefix}btn-line-height: #{$btn-line-height};
-  --#{$prefix}btn-color: #{$btn-color};
-  --#{$prefix}btn-bg: transparent;
-  --#{$prefix}btn-border-width: #{$btn-border-width};
-  --#{$prefix}btn-border-color: transparent;
-  --#{$prefix}btn-border-radius: #{$btn-border-radius};
-  --#{$prefix}btn-hover-border-color: transparent;
-  --#{$prefix}btn-box-shadow: #{$btn-box-shadow};
-  --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
-  --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);
-  
-

Each .btn-* modifier class updates the appropriate CSS variables to minimize additional CSS rules with our button-variant(), button-outline-variant(), and button-size() mixins.

-

Here's an example of building a custom .btn-* modifier class as we do for the buttons unique to our docs by reassigning Bootstrap's CSS variables with a mixture of our own CSS and Sass variables.

-
-
.btn-bd-primary {
-  --bs-btn-font-weight: 600;
-  --bs-btn-color: var(--bs-white);
-  --bs-btn-bg: var(--bd-violet-bg);
-  --bs-btn-border-color: var(--bd-violet-bg);
-  --bs-btn-hover-color: var(--bs-white);
-  --bs-btn-hover-bg: #{shade-color($bd-violet, 10%)};
-  --bs-btn-hover-border-color: #{shade-color($bd-violet, 10%)};
-  --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
-  --bs-btn-active-color: var(--bs-btn-hover-color);
-  --bs-btn-active-bg: #{shade-color($bd-violet, 20%)};
-  --bs-btn-active-border-color: #{shade-color($bd-violet, 20%)};
-}
-
-

Sass variables

-
$btn-color:                   var(--#{$prefix}body-color);
-$btn-padding-y:               $input-btn-padding-y;
-$btn-padding-x:               $input-btn-padding-x;
-$btn-font-family:             $input-btn-font-family;
-$btn-font-size:               $input-btn-font-size;
-$btn-line-height:             $input-btn-line-height;
-$btn-white-space:             null; // Set to `nowrap` to prevent text wrapping
-
-$btn-padding-y-sm:            $input-btn-padding-y-sm;
-$btn-padding-x-sm:            $input-btn-padding-x-sm;
-$btn-font-size-sm:            $input-btn-font-size-sm;
-
-$btn-padding-y-lg:            $input-btn-padding-y-lg;
-$btn-padding-x-lg:            $input-btn-padding-x-lg;
-$btn-font-size-lg:            $input-btn-font-size-lg;
-
-$btn-border-width:            $input-btn-border-width;
-
-$btn-font-weight:             $font-weight-normal;
-$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075);
-$btn-focus-width:             $input-btn-focus-width;
-$btn-focus-box-shadow:        $input-btn-focus-box-shadow;
-$btn-disabled-opacity:        .65;
-$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125);
-
-$btn-link-color:              var(--#{$prefix}link-color);
-$btn-link-hover-color:        var(--#{$prefix}link-hover-color);
-$btn-link-disabled-color:     $gray-600;
-$btn-link-focus-shadow-rgb:   to-rgb(mix(color-contrast($link-color), $link-color, 15%));
-
-// Allows for customizing button radius independently from global border radius
-$btn-border-radius:           var(--#{$prefix}border-radius);
-$btn-border-radius-sm:        var(--#{$prefix}border-radius-sm);
-$btn-border-radius-lg:        var(--#{$prefix}border-radius-lg);
-
-$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
-
-$btn-hover-bg-shade-amount:       15%;
-$btn-hover-bg-tint-amount:        15%;
-$btn-hover-border-shade-amount:   20%;
-$btn-hover-border-tint-amount:    10%;
-$btn-active-bg-shade-amount:      20%;
-$btn-active-bg-tint-amount:       20%;
-$btn-active-border-shade-amount:  25%;
-$btn-active-border-tint-amount:   10%;
-
-

Sass mixins

-

There are three mixins for buttons: button and button outline variant mixins (both based on $theme-colors), plus a button size mixin.

-
@mixin button-variant(
-  $background,
-  $border,
-  $color: color-contrast($background),
-  $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
-  $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
-  $hover-color: color-contrast($hover-background),
-  $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
-  $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
-  $active-color: color-contrast($active-background),
-  $disabled-background: $background,
-  $disabled-border: $border,
-  $disabled-color: color-contrast($disabled-background)
-) {
-  --#{$prefix}btn-color: #{$color};
-  --#{$prefix}btn-bg: #{$background};
-  --#{$prefix}btn-border-color: #{$border};
-  --#{$prefix}btn-hover-color: #{$hover-color};
-  --#{$prefix}btn-hover-bg: #{$hover-background};
-  --#{$prefix}btn-hover-border-color: #{$hover-border};
-  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};
-  --#{$prefix}btn-active-color: #{$active-color};
-  --#{$prefix}btn-active-bg: #{$active-background};
-  --#{$prefix}btn-active-border-color: #{$active-border};
-  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
-  --#{$prefix}btn-disabled-color: #{$disabled-color};
-  --#{$prefix}btn-disabled-bg: #{$disabled-background};
-  --#{$prefix}btn-disabled-border-color: #{$disabled-border};
-}
-
-
@mixin button-outline-variant(
-  $color,
-  $color-hover: color-contrast($color),
-  $active-background: $color,
-  $active-border: $color,
-  $active-color: color-contrast($active-background)
-) {
-  --#{$prefix}btn-color: #{$color};
-  --#{$prefix}btn-border-color: #{$color};
-  --#{$prefix}btn-hover-color: #{$color-hover};
-  --#{$prefix}btn-hover-bg: #{$active-background};
-  --#{$prefix}btn-hover-border-color: #{$active-border};
-  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
-  --#{$prefix}btn-active-color: #{$active-color};
-  --#{$prefix}btn-active-bg: #{$active-background};
-  --#{$prefix}btn-active-border-color: #{$active-border};
-  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
-  --#{$prefix}btn-disabled-color: #{$color};
-  --#{$prefix}btn-disabled-bg: transparent;
-  --#{$prefix}btn-disabled-border-color: #{$color};
-  --#{$prefix}gradient: none;
-}
-
-
@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
-  --#{$prefix}btn-padding-y: #{$padding-y};
-  --#{$prefix}btn-padding-x: #{$padding-x};
-  @include rfs($font-size, --#{$prefix}btn-font-size);
-  --#{$prefix}btn-border-radius: #{$border-radius};
-}
-
-

Sass loops

-

Button variants (for regular and outline buttons) use their respective mixins with our $theme-colors map to generate the modifier classes in scss/_buttons.scss.

-
@each $color, $value in $theme-colors {
-  .btn-#{$color} {
-    @if $color == "light" {
-      @include button-variant(
-        $value,
-        $value,
-        $hover-background: shade-color($value, $btn-hover-bg-shade-amount),
-        $hover-border: shade-color($value, $btn-hover-border-shade-amount),
-        $active-background: shade-color($value, $btn-active-bg-shade-amount),
-        $active-border: shade-color($value, $btn-active-border-shade-amount)
-      );
-    } @else if $color == "dark" {
-      @include button-variant(
-        $value,
-        $value,
-        $hover-background: tint-color($value, $btn-hover-bg-tint-amount),
-        $hover-border: tint-color($value, $btn-hover-border-tint-amount),
-        $active-background: tint-color($value, $btn-active-bg-tint-amount),
-        $active-border: tint-color($value, $btn-active-border-tint-amount)
-      );
-    } @else {
-      @include button-variant($value, $value);
-    }
-  }
-}
-
-@each $color, $value in $theme-colors {
-  .btn-outline-#{$color} {
-    @include button-outline-variant($value);
-  }
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/card/index.html b/site/dist/docs/5.3/components/card/index.html deleted file mode 100644 index 6c5b7fa29d..0000000000 --- a/site/dist/docs/5.3/components/card/index.html +++ /dev/null @@ -1,1277 +0,0 @@ - Cards · Bootstrap v5.3

Bootstrap's cards provide a flexible and extensible content container with multiple variants and options.

About

-

A card is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options. If you're familiar with Bootstrap 3, cards replace our old panels, wells, and thumbnails. Similar functionality to those components is available as modifier classes for cards.

-

Example

-

Cards are built with as little markup and styles as possible, but still manage to deliver a ton of control and customization. Built with flexbox, they offer easy alignment and mix well with other Bootstrap components. They have no margin by default, so use spacing utilities as needed.

-

Below is an example of a basic card with mixed content and a fixed width. Cards have no fixed width to start, so they'll naturally fill the full width of its parent element. This is easily customized with our various sizing options.

-
-PlaceholderImage cap -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
-
html
<div class="card" style="width: 18rem;">
-<img src="..." class="card-img-top" alt="...">
-<div class="card-body">
-  <h5 class="card-title">Card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
-

Content types

-

Cards support a wide variety of content, including images, text, list groups, links, and more. Below are examples of what's supported.

-

Body

-

The building block of a card is the .card-body. Use it whenever you need a padded section within a card.

-
-
- This is some text within a card body. -
-
html
<div class="card">
-<div class="card-body">
-  This is some text within a card body.
-</div>
-</div>
- -

Card titles are used by adding .card-title to a <h*> tag. In the same way, links are added and placed next to each other by adding .card-link to an <a> tag.

-

Subtitles are used by adding a .card-subtitle to a <h*> tag. If the .card-title and the .card-subtitle items are placed in a .card-body item, the card title and subtitle are aligned nicely.

-
-
-
Card title
-
Card subtitle
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Card link - Another link -
-
html
<div class="card" style="width: 18rem;">
-<div class="card-body">
-  <h5 class="card-title">Card title</h5>
-  <h6 class="card-subtitle mb-2 text-body-secondary">Card subtitle</h6>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-  <a href="#" class="card-link">Card link</a>
-  <a href="#" class="card-link">Another link</a>
-</div>
-</div>
-

Images

-

.card-img-top and .card-img-bottom respectively set the top and bottom corners rounded to match the card's borders. With .card-text, text can be added to the card. Text within .card-text can also be styled with the standard HTML tags.

-
-PlaceholderImage cap -
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
html
<div class="card" style="width: 18rem;">
-<img src="..." class="card-img-top" alt="...">
-<div class="card-body">
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-

List groups

-

Create lists of content in a card with a flush list group.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
-
html
<div class="card" style="width: 18rem;">
-<ul class="list-group list-group-flush">
-  <li class="list-group-item">An item</li>
-  <li class="list-group-item">A second item</li>
-  <li class="list-group-item">A third item</li>
-</ul>
-</div>
-
-
- Featured -
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
-
html
<div class="card" style="width: 18rem;">
-<div class="card-header">
-  Featured
-</div>
-<ul class="list-group list-group-flush">
-  <li class="list-group-item">An item</li>
-  <li class="list-group-item">A second item</li>
-  <li class="list-group-item">A third item</li>
-</ul>
-</div>
-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
html
<div class="card" style="width: 18rem;">
-<ul class="list-group list-group-flush">
-  <li class="list-group-item">An item</li>
-  <li class="list-group-item">A second item</li>
-  <li class="list-group-item">A third item</li>
-</ul>
-<div class="card-footer">
-  Card footer
-</div>
-</div>
-

Kitchen sink

-

Mix and match multiple content types to create the card you need, or throw everything in there. Shown below are image styles, blocks, text styles, and a list group—all wrapped in a fixed-width card.

-
-PlaceholderImage cap -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
html
<div class="card" style="width: 18rem;">
-<img src="..." class="card-img-top" alt="...">
-<div class="card-body">
-  <h5 class="card-title">Card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-<ul class="list-group list-group-flush">
-  <li class="list-group-item">An item</li>
-  <li class="list-group-item">A second item</li>
-  <li class="list-group-item">A third item</li>
-</ul>
-<div class="card-body">
-  <a href="#" class="card-link">Card link</a>
-  <a href="#" class="card-link">Another link</a>
-</div>
-</div>
- -

Add an optional header and/or footer within a card.

-
-
- Featured -
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
html
<div class="card">
-<div class="card-header">
-  Featured
-</div>
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
-

Card headers can be styled by adding .card-header to <h*> elements.

-
-
Featured
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
html
<div class="card">
-<h5 class="card-header">Featured</h5>
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
-
-
- Quote -
-
-
-

A well-known quote, contained in a blockquote element.

-
Someone famous in Source Title
-
-
-
html
<div class="card">
-<div class="card-header">
-  Quote
-</div>
-<div class="card-body">
-  <blockquote class="blockquote mb-0">
-    <p>A well-known quote, contained in a blockquote element.</p>
-    <footer class="blockquote-footer">Someone famous in <cite title="Source Title">Source Title</cite></footer>
-  </blockquote>
-</div>
-</div>
-
-
- Featured -
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
- -
html
<div class="card text-center">
-<div class="card-header">
-  Featured
-</div>
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-<div class="card-footer text-body-secondary">
-  2 days ago
-</div>
-</div>
-

Sizing

-

Cards assume no specific width to start, so they'll be 100% wide unless otherwise stated. You can change this as needed with custom CSS, grid classes, grid Sass mixins, or utilities.

-

Using grid markup

-

Using the grid, wrap cards in columns and rows as needed.

-
-
-
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
-
-
-
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
-
-
html
<div class="row">
-<div class="col-sm-6 mb-3 mb-sm-0">
-  <div class="card">
-    <div class="card-body">
-      <h5 class="card-title">Special title treatment</h5>
-      <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-      <a href="#" class="btn btn-primary">Go somewhere</a>
-    </div>
-  </div>
-</div>
-<div class="col-sm-6">
-  <div class="card">
-    <div class="card-body">
-      <h5 class="card-title">Special title treatment</h5>
-      <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-      <a href="#" class="btn btn-primary">Go somewhere</a>
-    </div>
-  </div>
-</div>
-</div>
-

Using utilities

-

Use our handful of available sizing utilities to quickly set a card's width.

-
-
-
Card title
-

With supporting text below as a natural lead-in to additional content.

- Button -
-
- -
-
-
Card title
-

With supporting text below as a natural lead-in to additional content.

- Button -
-
html
<div class="card w-75 mb-3">
-<div class="card-body">
-  <h5 class="card-title">Card title</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Button</a>
-</div>
-</div>
-
-<div class="card w-50">
-<div class="card-body">
-  <h5 class="card-title">Card title</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Button</a>
-</div>
-</div>
-

Using custom CSS

-

Use custom CSS in your stylesheets or as inline styles to set a width.

-
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
html
<div class="card" style="width: 18rem;">
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
-

Text alignment

-

You can quickly change the text alignment of any card—in its entirety or specific parts—with our text align classes.

-
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
- -
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
- -
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
html
<div class="card mb-3" style="width: 18rem;">
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
-
-<div class="card text-center mb-3" style="width: 18rem;">
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
-
-<div class="card text-end" style="width: 18rem;">
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
- -

Add some navigation to a card's header (or block) with Bootstrap's nav components.

-
-
- -
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
html
<div class="card text-center">
-<div class="card-header">
-  <ul class="nav nav-tabs card-header-tabs">
-    <li class="nav-item">
-      <a class="nav-link active" aria-current="true" href="#">Active</a>
-    </li>
-    <li class="nav-item">
-      <a class="nav-link" href="#">Link</a>
-    </li>
-    <li class="nav-item">
-      <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-    </li>
-  </ul>
-</div>
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
-
-
- -
-
-
Special title treatment
-

With supporting text below as a natural lead-in to additional content.

- Go somewhere -
-
html
<div class="card text-center">
-<div class="card-header">
-  <ul class="nav nav-pills card-header-pills">
-    <li class="nav-item">
-      <a class="nav-link active" href="#">Active</a>
-    </li>
-    <li class="nav-item">
-      <a class="nav-link" href="#">Link</a>
-    </li>
-    <li class="nav-item">
-      <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-    </li>
-  </ul>
-</div>
-<div class="card-body">
-  <h5 class="card-title">Special title treatment</h5>
-  <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
-  <a href="#" class="btn btn-primary">Go somewhere</a>
-</div>
-</div>
-

Images

-

Cards include a few options for working with images. Choose from appending "image caps" at either end of a card, overlaying images with card content, or simply embedding the image in a card.

-

Image caps

-

Similar to headers and footers, cards can include top and bottom "image caps"—images at the top or bottom of a card.

-
-PlaceholderImage cap -
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-

Last updated 3 mins ago

-
-
-
-
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-

Last updated 3 mins ago

-
-PlaceholderImage cap -
html
<div class="card mb-3">
-<img src="..." class="card-img-top" alt="...">
-<div class="card-body">
-  <h5 class="card-title">Card title</h5>
-  <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-  <p class="card-text"><small class="text-body-secondary">Last updated 3 mins ago</small></p>
-</div>
-</div>
-<div class="card">
-<div class="card-body">
-  <h5 class="card-title">Card title</h5>
-  <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-  <p class="card-text"><small class="text-body-secondary">Last updated 3 mins ago</small></p>
-</div>
-<img src="..." class="card-img-bottom" alt="...">
-</div>
-

Image overlays

-

Turn an image into a card background and overlay your card's text. Depending on the image, you may or may not need additional styles or utilities.

-
-PlaceholderCard image -
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-

Last updated 3 mins ago

-
-
html
<div class="card text-bg-dark">
-<img src="..." class="card-img" alt="...">
-<div class="card-img-overlay">
-  <h5 class="card-title">Card title</h5>
-  <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-  <p class="card-text"><small>Last updated 3 mins ago</small></p>
-</div>
-</div>
-

Note that content should not be larger than the height of the image. If content is larger than the image the content will be displayed outside the image.

-

Horizontal

-

Using a combination of grid and utility classes, cards can be made horizontal in a mobile-friendly and responsive way. In the example below, we remove the grid gutters with .g-0 and use .col-md-* classes to make the card horizontal at the md breakpoint. Further adjustments may be needed depending on your card content.

-
-
-
- PlaceholderImage -
-
-
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-

Last updated 3 mins ago

-
-
-
-
html
<div class="card mb-3" style="max-width: 540px;">
-<div class="row g-0">
-  <div class="col-md-4">
-    <img src="..." class="img-fluid rounded-start" alt="...">
-  </div>
-  <div class="col-md-8">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-      <p class="card-text"><small class="text-body-secondary">Last updated 3 mins ago</small></p>
-    </div>
-  </div>
-</div>
-</div>
-

Card styles

-

Cards include various options for customizing their backgrounds, borders, and color.

-

Background and color

-Added in v5.2.0 -

Set a background-color with contrasting foreground color with our .text-bg-{color} helpers. Previously it was required to manually pair your choice of .text-{color} and .bg-{color} utilities for styling, which you still may use if you prefer.

-
-
Header
-
-
Primary card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Secondary card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Success card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Danger card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Warning card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Info card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Light card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Dark card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
html
<div class="card text-bg-primary mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Primary card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card text-bg-secondary mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Secondary card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card text-bg-success mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Success card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card text-bg-danger mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Danger card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card text-bg-warning mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Warning card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card text-bg-info mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Info card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card text-bg-light mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Light card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card text-bg-dark mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Dark card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

Border

-

Use border utilities to change just the border-color of a card. Note that you can put .text-{color} classes on the parent .card or a subset of the card's contents as shown below.

-
-
Header
-
-
Primary card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Secondary card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Success card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Danger card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Warning card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Info card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Light card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-
Dark card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
html
<div class="card border-primary mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body text-primary">
-  <h5 class="card-title">Primary card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card border-secondary mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body text-secondary">
-  <h5 class="card-title">Secondary card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card border-success mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body text-success">
-  <h5 class="card-title">Success card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card border-danger mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body text-danger">
-  <h5 class="card-title">Danger card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card border-warning mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Warning card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card border-info mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Info card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card border-light mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Light card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card border-dark mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <h5 class="card-title">Dark card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-

Mixins utilities

-

You can also change the borders on the card header and footer as needed, and even remove their background-color with .bg-transparent.

-
-
Header
-
-
Success card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
- -
html
<div class="card border-success mb-3" style="max-width: 18rem;">
-<div class="card-header bg-transparent border-success">Header</div>
-<div class="card-body text-success">
-  <h5 class="card-title">Success card title</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-<div class="card-footer bg-transparent border-success">Footer</div>
-</div>
-

Card layout

-

In addition to styling the content within cards, Bootstrap includes a few options for laying out series of cards. For the time being, these layout options are not yet responsive.

-

Card groups

-

Use card groups to render cards as a single, attached element with equal width and height columns. Card groups start off stacked and use display: flex; to become attached with uniform dimensions starting at the sm breakpoint.

-
-
- PlaceholderImage cap -
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-

Last updated 3 mins ago

-
-
-
- PlaceholderImage cap -
-
Card title
-

This card has supporting text below as a natural lead-in to additional content.

-

Last updated 3 mins ago

-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

-

Last updated 3 mins ago

-
-
-
html
<div class="card-group">
-<div class="card">
-  <img src="..." class="card-img-top" alt="...">
-  <div class="card-body">
-    <h5 class="card-title">Card title</h5>
-    <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    <p class="card-text"><small class="text-body-secondary">Last updated 3 mins ago</small></p>
-  </div>
-</div>
-<div class="card">
-  <img src="..." class="card-img-top" alt="...">
-  <div class="card-body">
-    <h5 class="card-title">Card title</h5>
-    <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
-    <p class="card-text"><small class="text-body-secondary">Last updated 3 mins ago</small></p>
-  </div>
-</div>
-<div class="card">
-  <img src="..." class="card-img-top" alt="...">
-  <div class="card-body">
-    <h5 class="card-title">Card title</h5>
-    <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
-    <p class="card-text"><small class="text-body-secondary">Last updated 3 mins ago</small></p>
-  </div>
-</div>
-</div>
-

When using card groups with footers, their content will automatically line up.

-
-
- PlaceholderImage cap -
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
- -
-
- PlaceholderImage cap -
-
Card title
-

This card has supporting text below as a natural lead-in to additional content.

-
- -
-
- PlaceholderImage cap -
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

-
- -
-
html
<div class="card-group">
-<div class="card">
-  <img src="..." class="card-img-top" alt="...">
-  <div class="card-body">
-    <h5 class="card-title">Card title</h5>
-    <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-  </div>
-  <div class="card-footer">
-    <small class="text-body-secondary">Last updated 3 mins ago</small>
-  </div>
-</div>
-<div class="card">
-  <img src="..." class="card-img-top" alt="...">
-  <div class="card-body">
-    <h5 class="card-title">Card title</h5>
-    <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
-  </div>
-  <div class="card-footer">
-    <small class="text-body-secondary">Last updated 3 mins ago</small>
-  </div>
-</div>
-<div class="card">
-  <img src="..." class="card-img-top" alt="...">
-  <div class="card-body">
-    <h5 class="card-title">Card title</h5>
-    <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
-  </div>
-  <div class="card-footer">
-    <small class="text-body-secondary">Last updated 3 mins ago</small>
-  </div>
-</div>
-</div>
-

Grid cards

-

Use the Bootstrap grid system and its .row-cols classes to control how many grid columns (wrapped around your cards) you show per row. For example, here's .row-cols-1 laying out the cards on one column, and .row-cols-md-2 splitting four cards to equal width across multiple rows, from the medium breakpoint up.

-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
html
<div class="row row-cols-1 row-cols-md-2 g-4">
-<div class="col">
-  <div class="card">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-  </div>
-</div>
-</div>
-

Change it to .row-cols-3 and you'll see the fourth card wrap.

-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
html
<div class="row row-cols-1 row-cols-md-3 g-4">
-<div class="col">
-  <div class="card">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-  </div>
-</div>
-</div>
-

When you need equal height, add .h-100 to the cards. If you want equal heights by default, you can set $card-height: 100% in Sass.

-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a short card.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content.

-
-
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
html
<div class="row row-cols-1 row-cols-md-3 g-4">
-<div class="col">
-  <div class="card h-100">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card h-100">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a short card.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card h-100">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content.</p>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card h-100">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-  </div>
-</div>
-</div>
-

Just like with card groups, card footers will automatically line up.

-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
- -
-
-
-
- PlaceholderImage cap -
-
Card title
-

This card has supporting text below as a natural lead-in to additional content.

-
- -
-
-
-
- PlaceholderImage cap -
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

-
- -
-
-
html
<div class="row row-cols-1 row-cols-md-3 g-4">
-<div class="col">
-  <div class="card h-100">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
-    </div>
-    <div class="card-footer">
-      <small class="text-body-secondary">Last updated 3 mins ago</small>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card h-100">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
-    </div>
-    <div class="card-footer">
-      <small class="text-body-secondary">Last updated 3 mins ago</small>
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="card h-100">
-    <img src="..." class="card-img-top" alt="...">
-    <div class="card-body">
-      <h5 class="card-title">Card title</h5>
-      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
-    </div>
-    <div class="card-footer">
-      <small class="text-body-secondary">Last updated 3 mins ago</small>
-    </div>
-  </div>
-</div>
-</div>
-

Masonry

-

In v4 we used a CSS-only technique to mimic the behavior of Masonry-like columns, but this technique came with lots of unpleasant side effects. If you want to have this type of layout in v5, you can just make use of Masonry plugin. Masonry is not included in Bootstrap, but we've made a demo example to help you get started.

-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, cards now use local CSS variables on .card for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}card-spacer-y: #{$card-spacer-y};
-  --#{$prefix}card-spacer-x: #{$card-spacer-x};
-  --#{$prefix}card-title-spacer-y: #{$card-title-spacer-y};
-  --#{$prefix}card-title-color: #{$card-title-color};
-  --#{$prefix}card-subtitle-color: #{$card-subtitle-color};
-  --#{$prefix}card-border-width: #{$card-border-width};
-  --#{$prefix}card-border-color: #{$card-border-color};
-  --#{$prefix}card-border-radius: #{$card-border-radius};
-  --#{$prefix}card-box-shadow: #{$card-box-shadow};
-  --#{$prefix}card-inner-border-radius: #{$card-inner-border-radius};
-  --#{$prefix}card-cap-padding-y: #{$card-cap-padding-y};
-  --#{$prefix}card-cap-padding-x: #{$card-cap-padding-x};
-  --#{$prefix}card-cap-bg: #{$card-cap-bg};
-  --#{$prefix}card-cap-color: #{$card-cap-color};
-  --#{$prefix}card-height: #{$card-height};
-  --#{$prefix}card-color: #{$card-color};
-  --#{$prefix}card-bg: #{$card-bg};
-  --#{$prefix}card-img-overlay-padding: #{$card-img-overlay-padding};
-  --#{$prefix}card-group-margin: #{$card-group-margin};
-  
-

Sass variables

-
$card-spacer-y:                     $spacer;
-$card-spacer-x:                     $spacer;
-$card-title-spacer-y:               $spacer * .5;
-$card-title-color:                  null;
-$card-subtitle-color:               null;
-$card-border-width:                 var(--#{$prefix}border-width);
-$card-border-color:                 var(--#{$prefix}border-color-translucent);
-$card-border-radius:                var(--#{$prefix}border-radius);
-$card-box-shadow:                   null;
-$card-inner-border-radius:          subtract($card-border-radius, $card-border-width);
-$card-cap-padding-y:                $card-spacer-y * .5;
-$card-cap-padding-x:                $card-spacer-x;
-$card-cap-bg:                       rgba(var(--#{$prefix}body-color-rgb), .03);
-$card-cap-color:                    null;
-$card-height:                       null;
-$card-color:                        null;
-$card-bg:                           var(--#{$prefix}body-bg);
-$card-img-overlay-padding:          $spacer;
-$card-group-margin:                 $grid-gutter-width * .5;
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/carousel/index.html b/site/dist/docs/5.3/components/carousel/index.html deleted file mode 100644 index e740ecaca0..0000000000 --- a/site/dist/docs/5.3/components/carousel/index.html +++ /dev/null @@ -1,727 +0,0 @@ - Carousel · Bootstrap v5.3

A slideshow component for cycling through elements—images or slides of text—like a carousel.

How it works

-
    -
  • -

    The carousel is a slideshow for cycling through a series of content, built with CSS 3D transforms and a bit of JavaScript. It works with a series of images, text, or custom markup. It also includes support for previous/next controls and indicators.

    -
  • -
  • -

    For performance reasons, carousels must be manually initialized using the carousel constructor method. Without initialization, some of the event listeners (specifically, the events needed touch/swipe support) will not be registered until a user has explicitly activated a control or indicator.

    -

    The only exception are autoplaying carousels with the data-bs-ride="carousel" attribute as these are initialized automatically on page load. If you're using autoplaying carousels with the data attribute, don't explicitly initialize the same carousels with the constructor method.

    -
  • -
  • -

    Nested carousels are not supported. You should also be aware that carousels in general can often cause usability and accessibility challenges.

    -
  • -
-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Basic examples

-

Here is a basic example of a carousel with three slides. Note the previous/next controls. We recommend using <button> elements, but you can also use <a> elements with role="button".

-
html
<div id="carouselExample" class="carousel slide">
-<div class="carousel-inner">
-  <div class="carousel-item active">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
-

Carousels don't automatically normalize slide dimensions. As such, you may need to use additional utilities or custom styles to appropriately size content. While carousels support previous/next controls and indicators, they're not explicitly required. Add and customize as you see fit.

-

You must add the .active class to one of the slides, otherwise the carousel will not be visible. Also be sure to set a unique id on the .carousel for optional controls, especially if you're using multiple carousels on a single page. Control and indicator elements must have a data-bs-target attribute (or href for links) that matches the id of the .carousel element.

-

Indicators

-

You can add indicators to the carousel, alongside the previous/next controls. The indicators let users jump directly to a particular slide.

-
html
<div id="carouselExampleIndicators" class="carousel slide">
-<div class="carousel-indicators">
-  <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
-  <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
-  <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
-</div>
-<div class="carousel-inner">
-  <div class="carousel-item active">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
-

Captions

-

You can add captions to your slides with the .carousel-caption element within any .carousel-item. They can be easily hidden on smaller viewports, as shown below, with optional display utilities. We hide them initially with .d-none and bring them back on medium-sized devices with .d-md-block.

-
html
<div id="carouselExampleCaptions" class="carousel slide">
-<div class="carousel-indicators">
-  <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
-  <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1" aria-label="Slide 2"></button>
-  <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="2" aria-label="Slide 3"></button>
-</div>
-<div class="carousel-inner">
-  <div class="carousel-item active">
-    <img src="..." class="d-block w-100" alt="...">
-    <div class="carousel-caption d-none d-md-block">
-      <h5>First slide label</h5>
-      <p>Some representative placeholder content for the first slide.</p>
-    </div>
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-    <div class="carousel-caption d-none d-md-block">
-      <h5>Second slide label</h5>
-      <p>Some representative placeholder content for the second slide.</p>
-    </div>
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-    <div class="carousel-caption d-none d-md-block">
-      <h5>Third slide label</h5>
-      <p>Some representative placeholder content for the third slide.</p>
-    </div>
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
-

Crossfade

-

Add .carousel-fade to your carousel to animate slides with a fade transition instead of a slide. Depending on your carousel content (e.g., text only slides), you may want to add .bg-body or some custom CSS to the .carousel-items for proper crossfading.

-
html
<div id="carouselExampleFade" class="carousel slide carousel-fade">
-<div class="carousel-inner">
-  <div class="carousel-item active">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
-

Autoplaying carousels

-

You can make your carousels autoplay on page load by setting the ride option to carousel. Autoplaying carousels automatically pause while hovered with the mouse. This behavior can be controlled with the pause option. In browsers that support the Page Visibility API, the carousel will stop cycling when the webpage is not visible to the user (such as when the browser tab is inactive, or when the browser window is minimized).

-

For accessibility reasons, we recommend avoiding the use of autoplaying carousels. If your page does include an autoplaying carousel, we recommend providing an additional button or control to explicitly pause/stop the carousel.

See WCAG 2.2 Success Criterion 2.2.2 Pause, Stop, Hide.

-
html
<div id="carouselExampleAutoplaying" class="carousel slide" data-bs-ride="carousel">
-<div class="carousel-inner">
-  <div class="carousel-item active">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleAutoplaying" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleAutoplaying" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
-

When the ride option is set to true, rather than carousel, the carousel won't automatically start to cycle on page load. Instead, it will only start after the first user interaction.

-
html
<div id="carouselExampleRide" class="carousel slide" data-bs-ride="true">
-<div class="carousel-inner">
-  <div class="carousel-item active">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleRide" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleRide" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
- -

Add data-bs-interval="" to a .carousel-item to change the amount of time to delay between automatically cycling to the next item.

-
html
<div id="carouselExampleInterval" class="carousel slide" data-bs-ride="carousel">
-<div class="carousel-inner">
-  <div class="carousel-item active" data-bs-interval="10000">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item" data-bs-interval="2000">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
-

Autoplaying carousels without controls

-

Here's a carousel with slides only. Note the presence of the .d-block and .w-100 on carousel images to prevent browser default image alignment.

-
html
<div id="carouselExampleSlidesOnly" class="carousel slide" data-bs-ride="carousel">
-<div class="carousel-inner">
-  <div class="carousel-item active">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-</div>
-</div>
-

Disable touch swiping

-

Carousels support swiping left/right on touchscreen devices to move between slides. This can be disabled by setting the touch option to false.

-
html
<div id="carouselExampleControlsNoTouching" class="carousel slide" data-bs-touch="false">
-<div class="carousel-inner">
-  <div class="carousel-item active">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
-

Dark variant

- -Deprecated in v5.3.0 -

Add .carousel-dark to the .carousel for darker controls, indicators, and captions. Controls are inverted compared to their default white fill with the filter CSS property. Captions and controls have additional Sass variables that customize the color and background-color.

-

Heads up! Dark variants for components were deprecated in v5.3.0 with the introduction of color modes. - Instead of adding .carousel-dark, set data-bs-theme="dark" on the root element, a parent - wrapper, or the component itself. -

-
html
<div id="carouselExampleDark" class="carousel carousel-dark slide">
-<div class="carousel-indicators">
-  <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
-  <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
-  <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
-</div>
-<div class="carousel-inner">
-  <div class="carousel-item active" data-bs-interval="10000">
-    <img src="..." class="d-block w-100" alt="...">
-    <div class="carousel-caption d-none d-md-block">
-      <h5>First slide label</h5>
-      <p>Some representative placeholder content for the first slide.</p>
-    </div>
-  </div>
-  <div class="carousel-item" data-bs-interval="2000">
-    <img src="..." class="d-block w-100" alt="...">
-    <div class="carousel-caption d-none d-md-block">
-      <h5>Second slide label</h5>
-      <p>Some representative placeholder content for the second slide.</p>
-    </div>
-  </div>
-  <div class="carousel-item">
-    <img src="..." class="d-block w-100" alt="...">
-    <div class="carousel-caption d-none d-md-block">
-      <h5>Third slide label</h5>
-      <p>Some representative placeholder content for the third slide.</p>
-    </div>
-  </div>
-</div>
-<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
-  <span class="carousel-control-prev-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Previous</span>
-</button>
-<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
-  <span class="carousel-control-next-icon" aria-hidden="true"></span>
-  <span class="visually-hidden">Next</span>
-</button>
-</div>
-

Custom transition

-

The transition duration of .carousel-item can be changed with the $carousel-transition-duration Sass variable before compiling or custom styles if you're using the compiled CSS. If multiple transitions are applied, make sure the transform transition is defined first (e.g. transition: transform 2s ease, opacity .5s ease-out).

-

CSS

-

Sass variables

-

Variables for all carousels:

-
$carousel-control-color:             $white;
-$carousel-control-width:             15%;
-$carousel-control-opacity:           .5;
-$carousel-control-hover-opacity:     .9;
-$carousel-control-transition:        opacity .15s ease;
-$carousel-control-icon-filter:       null;
-
-$carousel-indicator-width:           30px;
-$carousel-indicator-height:          3px;
-$carousel-indicator-hit-area-height: 10px;
-$carousel-indicator-spacer:          3px;
-$carousel-indicator-opacity:         .5;
-$carousel-indicator-active-bg:       $white;
-$carousel-indicator-active-opacity:  1;
-$carousel-indicator-transition:      opacity .6s ease;
-
-$carousel-caption-width:             70%;
-$carousel-caption-color:             $white;
-$carousel-caption-padding-y:         1.25rem;
-$carousel-caption-spacer:            1.25rem;
-
-$carousel-control-icon-width:        2rem;
-
-$carousel-control-prev-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>");
-$carousel-control-next-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>");
-
-$carousel-transition-duration:       .6s;
-$carousel-transition:                transform $carousel-transition-duration ease-in-out; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
-
-

Variables for the dark carousel:

-
$carousel-dark-indicator-active-bg:  $black; // Deprecated in v5.3.4
-$carousel-dark-caption-color:        $black; // Deprecated in v5.3.4
-$carousel-dark-control-icon-filter:  invert(1) grayscale(100); // Deprecated in v5.3.4
-
-

Usage

-

Via data attributes

-

Use data attributes to easily control the position of the carousel. data-bs-slide accepts the keywords prev or next, which alters the slide position relative to its current position. Alternatively, use data-bs-slide-to to pass a raw slide index to the carousel data-bs-slide-to="2", which shifts the slide position to a particular index beginning with 0.

-

Via JavaScript

-

Call carousel manually with:

-
const carousel = new bootstrap.Carousel('#myCarousel')
-
-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
intervalnumber5000The amount of time to delay between automatically cycling an item.
keyboardbooleantrueWhether the carousel should react to keyboard events.
pausestring, boolean"hover"If set to "hover", pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave. If set to false, hovering over the carousel won't pause it. On touch-enabled devices, when set to "hover", cycling will pause on touchend (once the user finished interacting with the carousel) for two intervals, before automatically resuming. This is in addition to the mouse behavior.
ridestring, booleanfalseIf set to true, autoplays the carousel after the user manually cycles the first item. If set to "carousel", autoplays the carousel on load.
touchbooleantrueWhether the carousel should support left/right swipe interactions on touchscreen devices.
wrapbooleantrueWhether the carousel should cycle continuously or have hard stops.
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-

You can create a carousel instance with the carousel constructor, and pass on any additional options. For example, to manually initialize an autoplaying carousel (assuming you're not using the data-bs-ride="carousel" attribute in the markup itself) with a specific interval and with touch support disabled, you can use:

-
const myCarouselElement = document.querySelector('#myCarousel')
-
-const carousel = new bootstrap.Carousel(myCarouselElement, {
-  interval: 2000,
-  touch: false
-})
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
cycleStarts cycling through the carousel items from left to right.
disposeDestroys an element's carousel. (Removes stored data on the DOM element)
getInstanceStatic method which allows you to get the carousel instance associated to a DOM element. You can use it like this: bootstrap.Carousel.getInstance(element).
getOrCreateInstanceStatic method which returns a carousel instance associated to a DOM element, or creates a new one in case it wasn't initialized. You can use it like this: bootstrap.Carousel.getOrCreateInstance(element).
nextCycles to the next item. Returns to the caller before the next item has been shown (e.g., before the slid.bs.carousel event occurs).
nextWhenVisibleDon't cycle carousel to next when the page, the carousel, or the carousel's parent aren't visible. Returns to the caller before the target item has been shown.
pauseStops the carousel from cycling through items.
prevCycles to the previous item. Returns to the caller before the previous item has been shown (e.g., before the slid.bs.carousel event occurs).
toCycles the carousel to a particular frame (0 based, similar to an array). Returns to the caller before the target item has been shown (e.g., before the slid.bs.carousel event occurs).
-

Events

-

Bootstrap's carousel class exposes two events for hooking into carousel functionality. Both events have the following additional properties:

-
    -
  • direction: The direction in which the carousel is sliding (either "left" or "right").
  • -
  • relatedTarget: The DOM element that is being slid into place as the active item.
  • -
  • from: The index of the current item
  • -
  • to: The index of the next item
  • -
-

All carousel events are fired at the carousel itself (i.e. at the <div class="carousel">).

-
- - - - - - - - - - - - - - - - -
Event typeDescription
slid.bs.carouselFired when the carousel has completed its slide transition.
slide.bs.carouselFires immediately when the slide instance method is invoked.
-
const myCarousel = document.getElementById('myCarousel')
-
-myCarousel.addEventListener('slide.bs.carousel', event => {
-  // do something...
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/close-button/index.html b/site/dist/docs/5.3/components/close-button/index.html deleted file mode 100644 index 411d9589ea..0000000000 --- a/site/dist/docs/5.3/components/close-button/index.html +++ /dev/null @@ -1,71 +0,0 @@ - Close button · Bootstrap v5.3

Close button

A generic close button for dismissing content like modals and alerts.

Example

-

Provide an option to dismiss or close a component with .btn-close. Default styling is limited, but highly customizable. Modify the Sass variables to replace the default background-image. Be sure to include text for screen readers, as we've done with aria-label.

-
html
<button type="button" class="btn-close" aria-label="Close"></button>
-

Disabled state

-

Disabled close buttons change their opacity. We've also applied pointer-events: none and user-select: none to preventing hover and active states from triggering.

-
html
<button type="button" class="btn-close" disabled aria-label="Close"></button>
-

Dark variant

- -Deprecated in v5.3.0 -

Heads up! As of v5.3.0, the .btn-close-white class is deprecated. Instead, use data-bs-theme="dark" to change the color mode of the close button.

-

Add data-bs-theme="dark" to the .btn-close, or to its parent element, to invert the close button. This uses the filter property to invert the background-image without overriding its value.

-
- - -
html
<div data-bs-theme="dark">
-<button type="button" class="btn-close" aria-label="Close"></button>
-<button type="button" class="btn-close" disabled aria-label="Close"></button>
-</div>
-

CSS

-

Variables

-Added in v5.3.0 -

As part of Bootstrap's evolving CSS variables approach, close button now uses local CSS variables on .btn-close for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}btn-close-color: #{$btn-close-color};
-  --#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
-  --#{$prefix}btn-close-opacity: #{$btn-close-opacity};
-  --#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
-  --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
-  --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
-  --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
-  
-

Sass variables

-
$btn-close-width:            1em;
-$btn-close-height:           $btn-close-width;
-$btn-close-padding-x:        .25em;
-$btn-close-padding-y:        $btn-close-padding-x;
-$btn-close-color:            $black;
-$btn-close-bg:               url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/></svg>");
-$btn-close-focus-shadow:     $focus-ring-box-shadow;
-$btn-close-opacity:          .5;
-$btn-close-hover-opacity:    .75;
-$btn-close-focus-opacity:    1;
-$btn-close-disabled-opacity: .25;
-$btn-close-filter:           null;
-$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%); // Deprecated in v5.3.4
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/collapse/index.html b/site/dist/docs/5.3/components/collapse/index.html deleted file mode 100644 index fab34f223f..0000000000 --- a/site/dist/docs/5.3/components/collapse/index.html +++ /dev/null @@ -1,280 +0,0 @@ - Collapse · Bootstrap v5.3

Toggle the visibility of content across your project with a few classes and our JavaScript plugins.

How it works

-

The collapse JavaScript plugin is used to show and hide content. Buttons or anchors are used as triggers that are mapped to specific elements you toggle. Collapsing an element will animate the height from its current value to 0. Given how CSS handles animations, you cannot use padding on a .collapse element. Instead, use the class as an independent wrapping element.

-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Example

-

Click the buttons below to show and hide another element via class changes:

-
    -
  • .collapse hides content
  • -
  • .collapsing is applied during transitions
  • -
  • .collapse.show shows content
  • -
-

Generally, we recommend using a <button> with the data-bs-target attribute. While not recommended from a semantic point of view, you can also use an <a> link with the href attribute (and a role="button"). In both cases, the data-bs-toggle="collapse" is required.

-

- - -

-
-
- Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger. -
-
html
<p class="d-inline-flex gap-1">
-<a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
-  Link with href
-</a>
-<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
-  Button with data-bs-target
-</button>
-</p>
-<div class="collapse" id="collapseExample">
-<div class="card card-body">
-  Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
-</div>
-</div>
-

Horizontal

-

The collapse plugin supports horizontal collapsing. Add the .collapse-horizontal modifier class to transition the width instead of height and set a width on the immediate child element. Feel free to write your own custom Sass, use inline styles, or use our width utilities.

-

Please note that while the example below has a min-height set to avoid excessive repaints in our docs, this is not explicitly required. Only the width on the child element is required.

-

- -

-
-
-
- This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered. -
-
-
html
<p>
-<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWidthExample" aria-expanded="false" aria-controls="collapseWidthExample">
-  Toggle width collapse
-</button>
-</p>
-<div style="min-height: 120px;">
-<div class="collapse collapse-horizontal" id="collapseWidthExample">
-  <div class="card card-body" style="width: 300px;">
-    This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.
-  </div>
-</div>
-</div>
-

Multiple toggles and targets

-

A <button> or <a> element can show and hide multiple elements by referencing them with a selector in its data-bs-target or href attribute. -Conversely, multiple <button> or <a> elements can show and hide the same element if they each reference it with their data-bs-target or href attribute.

-

- - - -

-
-
-
-
- Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger. -
-
-
-
-
-
- Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger. -
-
-
-
html
<p class="d-inline-flex gap-1">
-<a class="btn btn-primary" data-bs-toggle="collapse" href="#multiCollapseExample1" role="button" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
-<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
-<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
-</p>
-<div class="row">
-<div class="col">
-  <div class="collapse multi-collapse" id="multiCollapseExample1">
-    <div class="card card-body">
-      Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
-    </div>
-  </div>
-</div>
-<div class="col">
-  <div class="collapse multi-collapse" id="multiCollapseExample2">
-    <div class="card card-body">
-      Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
-    </div>
-  </div>
-</div>
-</div>
-

Accessibility

-

Be sure to add aria-expanded to the control element. This attribute explicitly conveys the current state of the collapsible element tied to the control to screen readers and similar assistive technologies. If the collapsible element is closed by default, the attribute on the control element should have a value of aria-expanded="false". If you've set the collapsible element to be open by default using the show class, set aria-expanded="true" on the control instead. The plugin will automatically toggle this attribute on the control based on whether or not the collapsible element has been opened or closed (via JavaScript, or because the user triggered another control element also tied to the same collapsible element). If the control element's HTML element is not a button (e.g., an <a> or <div>), the attribute role="button" should be added to the element.

-

If your control element is targeting a single collapsible element – i.e. the data-bs-target attribute is pointing to an id selector – you should add the aria-controls attribute to the control element, containing the id of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.

-

Note that Bootstrap's current implementation does not cover the various optional keyboard interactions described in the ARIA Authoring Practices Guide accordion pattern - you will need to include these yourself with custom JavaScript.

-

CSS

-

Sass variables

-
$transition-collapse:         height .35s ease;
-$transition-collapse-width:   width .35s ease;
-
-

Classes

-

Collapse transition classes can be found in scss/_transitions.scss as these are shared across multiple components (collapse and accordion).

-
.collapse {
-  &:not(.show) {
-    display: none;
-  }
-}
-
-.collapsing {
-  height: 0;
-  overflow: hidden;
-  @include transition($transition-collapse);
-
-  &.collapse-horizontal {
-    width: 0;
-    height: auto;
-    @include transition($transition-collapse-width);
-  }
-}
-
-

Usage

-

The collapse plugin utilizes a few classes to handle the heavy lifting:

-
    -
  • .collapse hides the content
  • -
  • .collapse.show shows the content
  • -
  • .collapsing is added when the transition starts, and removed when it finishes
  • -
-

These classes can be found in _transitions.scss.

-

Via data attributes

-

Just add data-bs-toggle="collapse" and a data-bs-target to the element to automatically assign control of one or more collapsible elements. The data-bs-target attribute accepts a CSS selector to apply the collapse to. Be sure to add the class collapse to the collapsible element. If you'd like it to default open, add the additional class show.

-

To add accordion-like group management to a collapsible area, add the data attribute data-bs-parent="#selector". Refer to the accordion page for more information.

-

Via JavaScript

-

Enable manually with:

-
const collapseElementList = document.querySelectorAll('.collapse')
-const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))
-
-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-
- - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
parentselector, DOM elementnullIf parent is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the card class). The attribute has to be set on the target collapsible area.
togglebooleantrueToggles the collapsible element on invocation.
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-

Activates your content as a collapsible element. Accepts an optional options object.

-

You can create a collapse instance with the constructor, for example:

-
const bsCollapse = new bootstrap.Collapse('#myCollapse', {
-  toggle: false
-})
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's collapse. (Removes stored data on the DOM element)
getInstanceStatic method which allows you to get the collapse instance associated to a DOM element, you can use it like this: bootstrap.Collapse.getInstance(element).
getOrCreateInstanceStatic method which returns a collapse instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: bootstrap.Collapse.getOrCreateInstance(element).
hideHides a collapsible element. Returns to the caller before the collapsible element has actually been hidden (e.g., before the hidden.bs.collapse event occurs).
showShows a collapsible element. Returns to the caller before the collapsible element has actually been shown (e.g., before the shown.bs.collapse event occurs).
toggleToggles a collapsible element to shown or hidden. Returns to the caller before the collapsible element has actually been shown or hidden (i.e. before the shown.bs.collapse or hidden.bs.collapse event occurs).
-

Events

-

Bootstrap's collapse class exposes a few events for hooking into collapse functionality.

-
- - - - - - - - - - - - - - - - - - - - - - - - -
Event typeDescription
hide.bs.collapseThis event is fired immediately when the hide method has been called.
hidden.bs.collapseThis event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete).
show.bs.collapseThis event fires immediately when the show instance method is called.
shown.bs.collapseThis event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete).
-
const myCollapsible = document.getElementById('myCollapsible')
-myCollapsible.addEventListener('hidden.bs.collapse', event => {
-  // do something...
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/dropdowns/index.html b/site/dist/docs/5.3/components/dropdowns/index.html deleted file mode 100644 index c7d5518ff5..0000000000 --- a/site/dist/docs/5.3/components/dropdowns/index.html +++ /dev/null @@ -1,1233 +0,0 @@ - Dropdowns · Bootstrap v5.3

Toggle contextual overlays for displaying lists of links and more with the Bootstrap dropdown plugin.

Overview

-

Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They're made interactive with the included Bootstrap dropdown JavaScript plugin. They're toggled by clicking, not by hovering; this is an intentional design decision.

-

Dropdowns are built on a third party library, Popper, which provides dynamic positioning and viewport detection. Be sure to include popper.min.js before Bootstrap's JavaScript or use bootstrap.bundle.min.js / bootstrap.bundle.js which contains Popper. Popper isn't used to position dropdowns in navbars though as dynamic positioning isn't required.

-

Accessibility

-

The WAI ARIA standard defines an actual role="menu" widget, but this is specific to application-like menus which trigger actions or functions. ARIA menus can only contain menu items, checkbox menu items, radio button menu items, radio button groups, and sub-menus.

-

Bootstrap's dropdowns, on the other hand, are designed to be generic and applicable to a variety of situations and markup structures. For instance, it is possible to create dropdowns that contain additional inputs and form controls, such as search fields or login forms. For this reason, Bootstrap does not expect (nor automatically add) any of the role and aria- attributes required for true ARIA menus. Authors will have to include these more specific attributes themselves.

-

However, Bootstrap does add built-in support for most standard keyboard menu interactions, such as the ability to move through individual .dropdown-item elements using the cursor keys and close the menu with the Esc key.

-

Examples

-

Wrap the dropdown's toggle (your button or link) and the dropdown menu within .dropdown, or another element that declares position: relative;. Ideally, you should use a <button> element as the dropdown trigger, but the plugin will work with <a> elements as well. The examples shown here use semantic <ul> elements where appropriate, but custom markup is supported.

-

Single button

-

Any single .btn can be turned into a dropdown toggle with some markup changes. Here's how you can put them to work with <button> elements:

-
html
<div class="dropdown">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-  Dropdown button
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-</ul>
-</div>
-

While <button> is the recommended control for a dropdown toggle, there might be situations where you have to use an <a> element. If you do, we recommend adding a role="button" attribute to appropriately convey control's purpose to assistive technologies such as screen readers.

-
html
<div class="dropdown">
-<a class="btn btn-secondary dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-  Dropdown link
-</a>
-
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-</ul>
-</div>
-

The best part is you can do this with any button variant, too:

- -
<!-- Example single danger button -->
-<div class="btn-group">
-  <button type="button" class="btn btn-danger dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Danger
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"/></li>
-    <li><a class="dropdown-item" href="#">Separated link</a></li>
-  </ul>
-</div>
-
-

Split button

-

Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of .dropdown-toggle-split for proper spacing around the dropdown caret.

-

We use this extra class to reduce the horizontal padding on either side of the caret by 25% and remove the margin-left that's added for regular button dropdowns. Those extra changes keep the caret centered in the split button and provide a more appropriately sized hit area next to the main button.

- -
<!-- Example split danger button -->
-<div class="btn-group">
-  <button type="button" class="btn btn-danger">Danger</button>
-  <button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-    <span class="visually-hidden">Toggle Dropdown</span>
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"/></li>
-    <li><a class="dropdown-item" href="#">Separated link</a></li>
-  </ul>
-</div>
-
-

Sizing

-

Button dropdowns work with buttons of all sizes, including default and split dropdown buttons.

- -
<!-- Large button groups (default and split) -->
-<div class="btn-group">
-  <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-    Large button
-  </button>
-  <ul class="dropdown-menu">
-    ...
-  </ul>
-</div>
-<div class="btn-group">
-  <button class="btn btn-secondary btn-lg" type="button">
-    Large split button
-  </button>
-  <button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-    <span class="visually-hidden">Toggle Dropdown</span>
-  </button>
-  <ul class="dropdown-menu">
-    ...
-  </ul>
-</div>
-
- -
<div class="btn-group">
-  <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-    Small button
-  </button>
-  <ul class="dropdown-menu">
-    ...
-  </ul>
-</div>
-<div class="btn-group">
-  <button class="btn btn-secondary btn-sm" type="button">
-    Small split button
-  </button>
-  <button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-    <span class="visually-hidden">Toggle Dropdown</span>
-  </button>
-  <ul class="dropdown-menu">
-    ...
-  </ul>
-</div>
-
-

Dark dropdowns

- -Deprecated in v5.3.0 -

Opt into darker dropdowns to match a dark navbar or custom style by adding .dropdown-menu-dark onto an existing .dropdown-menu. No changes are required to the dropdown items.

-

Heads up! Dark variants for components were deprecated in v5.3.0 with the introduction of color modes. - Instead of adding .dropdown-menu-dark, set data-bs-theme="dark" on the root element, a parent - wrapper, or the component itself. -

-
html
<div class="dropdown">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-  Dropdown button
-</button>
-<ul class="dropdown-menu dropdown-menu-dark">
-  <li><a class="dropdown-item active" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"/></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-</div>
-

And putting it to use in a navbar:

-
html
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDarkDropdown" aria-controls="navbarNavDarkDropdown" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarNavDarkDropdown">
-    <ul class="navbar-nav">
-      <li class="nav-item dropdown">
-        <button class="btn btn-dark dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-          Dropdown
-        </button>
-        <ul class="dropdown-menu dropdown-menu-dark">
-          <li><a class="dropdown-item" href="#">Action</a></li>
-          <li><a class="dropdown-item" href="#">Another action</a></li>
-          <li><a class="dropdown-item" href="#">Something else here</a></li>
-        </ul>
-      </li>
-    </ul>
-  </div>
-</div>
-</nav>
-

Directions

-

Directions are flipped in RTL mode. As such, .dropstart will appear on the right side.

-

Centered

-

Make the dropdown menu centered below the toggle with .dropdown-center on the parent element.

-
html
<div class="dropdown-center">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-  Centered dropdown
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Action two</a></li>
-  <li><a class="dropdown-item" href="#">Action three</a></li>
-</ul>
-</div>
-

Dropup

-

Trigger dropdown menus above elements by adding .dropup to the parent element.

- -
<!-- Default dropup button -->
-<div class="btn-group dropup">
-  <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropup
-  </button>
-  <ul class="dropdown-menu">
-    <!-- Dropdown menu links -->
-  </ul>
-</div>
-
-<!-- Split dropup button -->
-<div class="btn-group dropup">
-  <button type="button" class="btn btn-secondary">
-    Split dropup
-  </button>
-  <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-    <span class="visually-hidden">Toggle Dropdown</span>
-  </button>
-  <ul class="dropdown-menu">
-    <!-- Dropdown menu links -->
-  </ul>
-</div>
-
-

Dropup centered

-

Make the dropup menu centered above the toggle with .dropup-center on the parent element.

-
- - -
html
<div class="dropup-center dropup">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-  Centered dropup
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Action two</a></li>
-  <li><a class="dropdown-item" href="#">Action three</a></li>
-</ul>
-</div>
-

Dropend

-

Trigger dropdown menus at the right of the elements by adding .dropend to the parent element.

- -
<!-- Default dropend button -->
-<div class="btn-group dropend">
-  <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropend
-  </button>
-  <ul class="dropdown-menu">
-    <!-- Dropdown menu links -->
-  </ul>
-</div>
-
-<!-- Split dropend button -->
-<div class="btn-group dropend">
-  <button type="button" class="btn btn-secondary">
-    Split dropend
-  </button>
-  <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-    <span class="visually-hidden">Toggle Dropend</span>
-  </button>
-  <ul class="dropdown-menu">
-    <!-- Dropdown menu links -->
-  </ul>
-</div>
-
-

Dropstart

-

Trigger dropdown menus at the left of the elements by adding .dropstart to the parent element.

- -
<!-- Default dropstart button -->
-<div class="btn-group dropstart">
-  <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropstart
-  </button>
-  <ul class="dropdown-menu">
-    <!-- Dropdown menu links -->
-  </ul>
-</div>
-
-<!-- Split dropstart button -->
-<div class="btn-group dropstart">
-  <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-    <span class="visually-hidden">Toggle Dropstart</span>
-  </button>
-  <ul class="dropdown-menu">
-    <!-- Dropdown menu links -->
-  </ul>
-  <button type="button" class="btn btn-secondary">
-    Split dropstart
-  </button>
-</div>
-
- -

You can use <a> or <button> elements as dropdown items.

-
html
<div class="dropdown">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-  Dropdown
-</button>
-<ul class="dropdown-menu">
-  <li><button class="dropdown-item" type="button">Action</button></li>
-  <li><button class="dropdown-item" type="button">Another action</button></li>
-  <li><button class="dropdown-item" type="button">Something else here</button></li>
-</ul>
-</div>
-

You can also create non-interactive dropdown items with .dropdown-item-text. Feel free to style further with custom CSS or text utilities.

-
html
<ul class="dropdown-menu">
-<li><span class="dropdown-item-text">Dropdown item text</span></li>
-<li><a class="dropdown-item" href="#">Action</a></li>
-<li><a class="dropdown-item" href="#">Another action</a></li>
-<li><a class="dropdown-item" href="#">Something else here</a></li>
-</ul>
-

Active

-

Add .active to items in the dropdown to style them as active. To convey the active state to assistive technologies, use the aria-current attribute — using the page value for the current page, or true for the current item in a set.

-
html
<ul class="dropdown-menu">
-<li><a class="dropdown-item" href="#">Regular link</a></li>
-<li><a class="dropdown-item active" href="#" aria-current="true">Active link</a></li>
-<li><a class="dropdown-item" href="#">Another link</a></li>
-</ul>
-

Disabled

-

Add .disabled to items in the dropdown to style them as disabled.

-
html
<ul class="dropdown-menu">
-<li><a class="dropdown-item" href="#">Regular link</a></li>
-<li><a class="dropdown-item disabled" aria-disabled="true">Disabled link</a></li>
-<li><a class="dropdown-item" href="#">Another link</a></li>
-</ul>
- -

By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. You can change this with the directional .drop* classes, but you can also control them with additional modifier classes.

-

Add .dropdown-menu-end to a .dropdown-menu to right align the dropdown menu. Directions are mirrored when using Bootstrap in RTL, meaning .dropdown-menu-end will appear on the left side.

-

Heads up! Dropdowns are positioned thanks to Popper except when they are contained in a navbar.

-
- - -
html
<div class="btn-group">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-  Right-aligned menu example
-</button>
-<ul class="dropdown-menu dropdown-menu-end">
-  <li><button class="dropdown-item" type="button">Action</button></li>
-  <li><button class="dropdown-item" type="button">Another action</button></li>
-  <li><button class="dropdown-item" type="button">Something else here</button></li>
-</ul>
-</div>
-

Responsive alignment

-

If you want to use responsive alignment, disable dynamic positioning by adding the data-bs-display="static" attribute and use the responsive variation classes.

-

To align right the dropdown menu with the given breakpoint or larger, add .dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end.

-
- - -
html
<div class="btn-group">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
-  Left-aligned but right aligned when large screen
-</button>
-<ul class="dropdown-menu dropdown-menu-lg-end">
-  <li><button class="dropdown-item" type="button">Action</button></li>
-  <li><button class="dropdown-item" type="button">Another action</button></li>
-  <li><button class="dropdown-item" type="button">Something else here</button></li>
-</ul>
-</div>
-

To align left the dropdown menu with the given breakpoint or larger, add .dropdown-menu-end and .dropdown-menu{-sm|-md|-lg|-xl|-xxl}-start.

-
- - -
html
<div class="btn-group">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
-  Right-aligned but left aligned when large screen
-</button>
-<ul class="dropdown-menu dropdown-menu-end dropdown-menu-lg-start">
-  <li><button class="dropdown-item" type="button">Action</button></li>
-  <li><button class="dropdown-item" type="button">Another action</button></li>
-  <li><button class="dropdown-item" type="button">Something else here</button></li>
-</ul>
-</div>
-

Note that you don't need to add a data-bs-display="static" attribute to dropdown buttons in navbars, since Popper isn't used in navbars.

-

Alignment options

-

Taking most of the options shown above, here's a small kitchen sink demo of various dropdown alignment options in one place.

-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
html
<div class="btn-group">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-  Dropdown
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-  Right-aligned menu
-</button>
-<ul class="dropdown-menu dropdown-menu-end">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
-  Left-aligned, right-aligned lg
-</button>
-<ul class="dropdown-menu dropdown-menu-lg-end">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
-  Right-aligned, left-aligned lg
-</button>
-<ul class="dropdown-menu dropdown-menu-end dropdown-menu-lg-start">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group dropstart">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-  Dropstart
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group dropend">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-  Dropend
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group dropup">
-<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-  Dropup
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
- -

Headers

-

Add a header to label sections of actions in any dropdown menu.

-
html
<ul class="dropdown-menu">
-<li><h6 class="dropdown-header">Dropdown header</h6></li>
-<li><a class="dropdown-item" href="#">Action</a></li>
-<li><a class="dropdown-item" href="#">Another action</a></li>
-</ul>
-

Dividers

-

Separate groups of related menu items with a divider.

-
html
<ul class="dropdown-menu">
-<li><a class="dropdown-item" href="#">Action</a></li>
-<li><a class="dropdown-item" href="#">Another action</a></li>
-<li><a class="dropdown-item" href="#">Something else here</a></li>
-<li><hr class="dropdown-divider"/></li>
-<li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-

Text

-

Place any freeform text within a dropdown menu with text and use spacing utilities. Note that you'll likely need additional sizing styles to constrain the menu width.

-
html
<div class="dropdown-menu p-4 text-body-secondary" style="max-width: 200px;">
-<p>
-  Some example text that's free-flowing within the dropdown menu.
-</p>
-<p class="mb-0">
-  And this is more example text.
-</p>
-</div>
-

Forms

-

Put a form within a dropdown menu, or make it into a dropdown menu, and use margin or padding utilities to give it the negative space you require.

-
html
<div class="dropdown-menu">
-<form class="px-4 py-3">
-  <div class="mb-3">
-    <label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
-    <input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com">
-  </div>
-  <div class="mb-3">
-    <label for="exampleDropdownFormPassword1" class="form-label">Password</label>
-    <input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
-  </div>
-  <div class="mb-3">
-    <div class="form-check">
-      <input type="checkbox" class="form-check-input" id="dropdownCheck">
-      <label class="form-check-label" for="dropdownCheck">
-        Remember me
-      </label>
-    </div>
-  </div>
-  <button type="submit" class="btn btn-primary">Sign in</button>
-</form>
-<div class="dropdown-divider"></div>
-<a class="dropdown-item" href="#">New around here? Sign up</a>
-<a class="dropdown-item" href="#">Forgot password?</a>
-</div>
-
html
<div class="dropdown">
-<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">
-  Dropdown form
-</button>
-<form class="dropdown-menu p-4">
-  <div class="mb-3">
-    <label for="exampleDropdownFormEmail2" class="form-label">Email address</label>
-    <input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="email@example.com">
-  </div>
-  <div class="mb-3">
-    <label for="exampleDropdownFormPassword2" class="form-label">Password</label>
-    <input type="password" class="form-control" id="exampleDropdownFormPassword2" placeholder="Password">
-  </div>
-  <div class="mb-3">
-    <div class="form-check">
-      <input type="checkbox" class="form-check-input" id="dropdownCheck2">
-      <label class="form-check-label" for="dropdownCheck2">
-        Remember me
-      </label>
-    </div>
-  </div>
-  <button type="submit" class="btn btn-primary">Sign in</button>
-</form>
-</div>
- -

Use data-bs-offset or data-bs-reference to change the location of the dropdown.

-
- -
- - - -
-
html
<div class="d-flex">
-<div class="dropdown me-1">
-  <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="10,20">
-    Offset
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-  </ul>
-</div>
-<div class="btn-group">
-  <button type="button" class="btn btn-secondary">Reference</button>
-  <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent">
-    <span class="visually-hidden">Toggle Dropdown</span>
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"/></li>
-    <li><a class="dropdown-item" href="#">Separated link</a></li>
-  </ul>
-</div>
-</div>
-

Auto close behavior

-

By default, the dropdown menu is closed when clicking inside or outside the dropdown menu. You can use the autoClose option to change this behavior of the dropdown.

-
- - -
- -
- - -
- -
- - -
- -
- - -
html
<div class="btn-group">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false">
-  Default dropdown
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="inside" aria-expanded="false">
-  Clickable inside
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
-  Clickable outside
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-
-<div class="btn-group">
-<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="false" aria-expanded="false">
-  Manual close
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-  <li><a class="dropdown-item" href="#">Menu item</a></li>
-</ul>
-</div>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, dropdowns now use local CSS variables on .dropdown-menu for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}dropdown-zindex: #{$zindex-dropdown};
-  --#{$prefix}dropdown-min-width: #{$dropdown-min-width};
-  --#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};
-  --#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};
-  --#{$prefix}dropdown-spacer: #{$dropdown-spacer};
-  @include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size);
-  --#{$prefix}dropdown-color: #{$dropdown-color};
-  --#{$prefix}dropdown-bg: #{$dropdown-bg};
-  --#{$prefix}dropdown-border-color: #{$dropdown-border-color};
-  --#{$prefix}dropdown-border-radius: #{$dropdown-border-radius};
-  --#{$prefix}dropdown-border-width: #{$dropdown-border-width};
-  --#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius};
-  --#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg};
-  --#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y};
-  --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow};
-  --#{$prefix}dropdown-link-color: #{$dropdown-link-color};
-  --#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color};
-  --#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg};
-  --#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color};
-  --#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg};
-  --#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color};
-  --#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x};
-  --#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y};
-  --#{$prefix}dropdown-header-color: #{$dropdown-header-color};
-  --#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x};
-  --#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y};
-  
-

Dropdown items include at least one variable that is not set on .dropdown. This allows you to provide a new value while Bootstrap defaults to a fallback value.

    -
  • --bs-dropdown-item-border-radius
  • -
-

Customization through CSS variables can be seen on the .dropdown-menu-dark class where we override specific values without adding duplicate CSS selectors.

-
  --#{$prefix}dropdown-color: #{$dropdown-dark-color};
-  --#{$prefix}dropdown-bg: #{$dropdown-dark-bg};
-  --#{$prefix}dropdown-border-color: #{$dropdown-dark-border-color};
-  --#{$prefix}dropdown-box-shadow: #{$dropdown-dark-box-shadow};
-  --#{$prefix}dropdown-link-color: #{$dropdown-dark-link-color};
-  --#{$prefix}dropdown-link-hover-color: #{$dropdown-dark-link-hover-color};
-  --#{$prefix}dropdown-divider-bg: #{$dropdown-dark-divider-bg};
-  --#{$prefix}dropdown-link-hover-bg: #{$dropdown-dark-link-hover-bg};
-  --#{$prefix}dropdown-link-active-color: #{$dropdown-dark-link-active-color};
-  --#{$prefix}dropdown-link-active-bg: #{$dropdown-dark-link-active-bg};
-  --#{$prefix}dropdown-link-disabled-color: #{$dropdown-dark-link-disabled-color};
-  --#{$prefix}dropdown-header-color: #{$dropdown-dark-header-color};
-  
-

Sass variables

-

Variables for all dropdowns:

-
$dropdown-min-width:                10rem;
-$dropdown-padding-x:                0;
-$dropdown-padding-y:                .5rem;
-$dropdown-spacer:                   .125rem;
-$dropdown-font-size:                $font-size-base;
-$dropdown-color:                    var(--#{$prefix}body-color);
-$dropdown-bg:                       var(--#{$prefix}body-bg);
-$dropdown-border-color:             var(--#{$prefix}border-color-translucent);
-$dropdown-border-radius:            var(--#{$prefix}border-radius);
-$dropdown-border-width:             var(--#{$prefix}border-width);
-$dropdown-inner-border-radius:      calc(#{$dropdown-border-radius} - #{$dropdown-border-width}); // stylelint-disable-line function-disallowed-list
-$dropdown-divider-bg:               $dropdown-border-color;
-$dropdown-divider-margin-y:         $spacer * .5;
-$dropdown-box-shadow:               var(--#{$prefix}box-shadow);
-
-$dropdown-link-color:               var(--#{$prefix}body-color);
-$dropdown-link-hover-color:         $dropdown-link-color;
-$dropdown-link-hover-bg:            var(--#{$prefix}tertiary-bg);
-
-$dropdown-link-active-color:        $component-active-color;
-$dropdown-link-active-bg:           $component-active-bg;
-
-$dropdown-link-disabled-color:      var(--#{$prefix}tertiary-color);
-
-$dropdown-item-padding-y:           $spacer * .25;
-$dropdown-item-padding-x:           $spacer;
-
-$dropdown-header-color:             $gray-600;
-$dropdown-header-padding-x:         $dropdown-item-padding-x;
-$dropdown-header-padding-y:         $dropdown-padding-y;
-// fusv-disable
-$dropdown-header-padding:           $dropdown-header-padding-y $dropdown-header-padding-x; // Deprecated in v5.2.0
-// fusv-enable
-
-

Variables for the dark dropdown:

-
$dropdown-dark-color:               $gray-300;
-$dropdown-dark-bg:                  $gray-800;
-$dropdown-dark-border-color:        $dropdown-border-color;
-$dropdown-dark-divider-bg:          $dropdown-divider-bg;
-$dropdown-dark-box-shadow:          null;
-$dropdown-dark-link-color:          $dropdown-dark-color;
-$dropdown-dark-link-hover-color:    $white;
-$dropdown-dark-link-hover-bg:       rgba($white, .15);
-$dropdown-dark-link-active-color:   $dropdown-link-active-color;
-$dropdown-dark-link-active-bg:      $dropdown-link-active-bg;
-$dropdown-dark-link-disabled-color: $gray-500;
-$dropdown-dark-header-color:        $gray-500;
-
-

Variables for the CSS-based carets that indicate a dropdown's interactivity:

-
$caret-width:                 .3em;
-$caret-vertical-align:        $caret-width * .85;
-$caret-spacing:               $caret-width * .85;
-
-

Sass mixins

-

Mixins are used to generate the CSS-based carets and can be found in scss/mixins/_caret.scss.

-
@mixin caret-down($width: $caret-width) {
-  border-top: $width solid;
-  border-right: $width solid transparent;
-  border-bottom: 0;
-  border-left: $width solid transparent;
-}
-
-@mixin caret-up($width: $caret-width) {
-  border-top: 0;
-  border-right: $width solid transparent;
-  border-bottom: $width solid;
-  border-left: $width solid transparent;
-}
-
-@mixin caret-end($width: $caret-width) {
-  border-top: $width solid transparent;
-  border-right: 0;
-  border-bottom: $width solid transparent;
-  border-left: $width solid;
-}
-
-@mixin caret-start($width: $caret-width) {
-  border-top: $width solid transparent;
-  border-right: $width solid;
-  border-bottom: $width solid transparent;
-}
-
-@mixin caret(
-  $direction: down,
-  $width: $caret-width,
-  $spacing: $caret-spacing,
-  $vertical-align: $caret-vertical-align
-) {
-  @if $enable-caret {
-    &::after {
-      display: inline-block;
-      margin-left: $spacing;
-      vertical-align: $vertical-align;
-      content: "";
-      @if $direction == down {
-        @include caret-down($width);
-      } @else if $direction == up {
-        @include caret-up($width);
-      } @else if $direction == end {
-        @include caret-end($width);
-      }
-    }
-
-    @if $direction == start {
-      &::after {
-        display: none;
-      }
-
-      &::before {
-        display: inline-block;
-        margin-right: $spacing;
-        vertical-align: $vertical-align;
-        content: "";
-        @include caret-start($width);
-      }
-    }
-
-    &:empty::after {
-      margin-left: 0;
-    }
-  }
-}
-
-

Usage

-

Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the .show class on the parent .dropdown-menu. The data-bs-toggle="dropdown" attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.

-

On touch-enabled devices, opening a dropdown adds empty mouseover handlers to the immediate children of the <body> element. This admittedly ugly hack is necessary to work around a quirk in iOS' event delegation, which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code that closes the dropdown. Once the dropdown is closed, these additional empty mouseover handlers are removed.

-

Via data attributes

-

Add data-bs-toggle="dropdown" to a link or button to toggle a dropdown.

-
<div class="dropdown">
-  <button type="button" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown trigger
-  </button>
-  <ul class="dropdown-menu">
-    ...
-  </ul>
-</div>
-
-

Via JavaScript

-

Dropdowns must have data-bs-toggle="dropdown" on their trigger element, regardless of whether you call your dropdown via JavaScript or use the data-api.

-

Call the dropdowns via JavaScript:

-
const dropdownElementList = document.querySelectorAll('.dropdown-toggle')
-const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl))
-
-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
autoCloseboolean, stringtrueConfigure the auto close behavior of the dropdown:
  • true - the dropdown will be closed by clicking outside or inside the dropdown menu.
  • false - the dropdown will be closed by clicking the toggle button and manually calling hide or toggle method. (Also will not be closed by pressing Esc key)
  • 'inside' - the dropdown will be closed (only) by clicking inside the dropdown menu.
  • 'outside' - the dropdown will be closed (only) by clicking outside the dropdown menu.
Note: the dropdown can always be closed with the Esc key.
boundarystring, element'clippingParents'Overflow constraint boundary of the dropdown menu (applies only to Popper's preventOverflow modifier). By default it's clippingParents and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's detectOverflow docs.
displaystring'dynamic'By default, we use Popper for dynamic positioning. Disable this with static.
offsetarray, string, function[0, 2]Offset of the dropdown relative to its target. You can pass a string in data attributes with comma separated values like: data-bs-offset="10,20". When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: skidding, distance. For more information refer to Popper's offset docs.
popperConfignull, object, functionnullTo change Bootstrap's default Popper config, see Popper's configuration. When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper.
referencestring, element, object'toggle'Reference element of the dropdown menu. Accepts the values of 'toggle', 'parent', an HTMLElement reference or an object providing getBoundingClientRect. For more information refer to Popper's constructor docs and virtual element docs.
-

Using function with popperConfig

-
const dropdown = new bootstrap.Dropdown(element, {
-  popperConfig(defaultBsPopperConfig) {
-    // const newPopperConfig = {...}
-    // use defaultBsPopperConfig if needed...
-    // return newPopperConfig
-  }
-})
-
-

Methods

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's dropdown. (Removes stored data on the DOM element)
getInstanceStatic method which allows you to get the dropdown instance associated to a DOM element, you can use it like this: bootstrap.Dropdown.getInstance(element).
getOrCreateInstanceStatic method which returns a dropdown instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: bootstrap.Dropdown.getOrCreateInstance(element).
hideHides the dropdown menu of a given navbar or tabbed navigation.
showShows the dropdown menu of a given navbar or tabbed navigation.
toggleToggles the dropdown menu of a given navbar or tabbed navigation.
updateUpdates the position of an element's dropdown.
-

Events

-

All dropdown events are fired at the toggling element and then bubbled up. So you can also add event listeners on the .dropdown-menu's parent element. hide.bs.dropdown and hidden.bs.dropdown events have a clickEvent property (only when the original Event type is click) that contains an Event Object for the click event.

-
- - - - - - - - - - - - - - - - - - - - - - - - -
Event typeDescription
hide.bs.dropdownFires immediately when the hide instance method has been called.
hidden.bs.dropdownFired when the dropdown has finished being hidden from the user and CSS transitions have completed.
show.bs.dropdownFires immediately when the show instance method is called.
shown.bs.dropdownFired when the dropdown has been made visible to the user and CSS transitions have completed.
-
const myDropdown = document.getElementById('myDropdown')
-myDropdown.addEventListener('show.bs.dropdown', event => {
-  // do something...
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/index.html b/site/dist/docs/5.3/components/index.html deleted file mode 100644 index 6b199d7367..0000000000 --- a/site/dist/docs/5.3/components/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/components/list-group/index.html b/site/dist/docs/5.3/components/list-group/index.html deleted file mode 100644 index b204f9b283..0000000000 --- a/site/dist/docs/5.3/components/list-group/index.html +++ /dev/null @@ -1,703 +0,0 @@ - List group · Bootstrap v5.3

List group

List groups are a flexible and powerful component for displaying a series of content. Modify and extend them to support just about any content within.

Basic example

-

The most basic list group is an unordered list with list items and the proper classes. Build upon it with the options that follow, or with your own CSS as needed.

-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • -
html
<ul class="list-group">
-<li class="list-group-item">An item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-<li class="list-group-item">A fourth item</li>
-<li class="list-group-item">And a fifth one</li>
-</ul>
-

Active items

-

Add .active to a .list-group-item to indicate the current active selection.

-
    -
  • An active item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • -
html
<ul class="list-group">
-<li class="list-group-item active" aria-current="true">An active item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-<li class="list-group-item">A fourth item</li>
-<li class="list-group-item">And a fifth one</li>
-</ul>
-

Disabled items

-

Add .disabled to a .list-group-item to make it appear disabled. Note that some elements with .disabled will also require custom JavaScript to fully disable their click events (e.g., links).

-
    -
  • A disabled item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • -
html
<ul class="list-group">
-<li class="list-group-item disabled" aria-disabled="true">A disabled item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-<li class="list-group-item">A fourth item</li>
-<li class="list-group-item">And a fifth one</li>
-</ul>
- -

Use <a>s or <button>s to create actionable list group items with hover, disabled, and active states by adding .list-group-item-action. We separate these pseudo-classes to ensure list groups made of non-interactive elements (like <li>s or <div>s) don't provide a click or tap affordance.

-

Be sure to not use the standard .btn classes here.

-
html
<div class="list-group">
-<a href="#" class="list-group-item list-group-item-action active" aria-current="true">
-  The current link item
-</a>
-<a href="#" class="list-group-item list-group-item-action">A second link item</a>
-<a href="#" class="list-group-item list-group-item-action">A third link item</a>
-<a href="#" class="list-group-item list-group-item-action">A fourth link item</a>
-<a class="list-group-item list-group-item-action disabled" aria-disabled="true">A disabled link item</a>
-</div>
-

With <button>s, you can also make use of the disabled attribute instead of the .disabled class. Sadly, <a>s don't support the disabled attribute.

-
- - - - - -
html
<div class="list-group">
-<button type="button" class="list-group-item list-group-item-action active" aria-current="true">
-  The current button
-</button>
-<button type="button" class="list-group-item list-group-item-action">A second button item</button>
-<button type="button" class="list-group-item list-group-item-action">A third button item</button>
-<button type="button" class="list-group-item list-group-item-action">A fourth button item</button>
-<button type="button" class="list-group-item list-group-item-action" disabled>A disabled button item</button>
-</div>
-

Flush

-

Add .list-group-flush to remove some borders and rounded corners to render list group items edge-to-edge in a parent container (e.g., cards).

-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • -
html
<ul class="list-group list-group-flush">
-<li class="list-group-item">An item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-<li class="list-group-item">A fourth item</li>
-<li class="list-group-item">And a fifth one</li>
-</ul>
-

Numbered

-

Add the .list-group-numbered modifier class (and optionally use an <ol> element) to opt into numbered list group items. Numbers are generated via CSS (as opposed to a <ol>s default browser styling) for better placement inside list group items and to allow for better customization.

-

Numbers are generated by counter-reset on the <ol>, and then styled and placed with a ::before pseudo-element on the <li> with counter-increment and content.

-
    -
  1. A list item
  2. -
  3. A list item
  4. -
  5. A list item
  6. -
html
<ol class="list-group list-group-numbered">
-<li class="list-group-item">A list item</li>
-<li class="list-group-item">A list item</li>
-<li class="list-group-item">A list item</li>
-</ol>
-

These work great with custom content as well.

-
    -
  1. -
    -
    Subheading
    - Content for list item -
    - 14 -
  2. -
  3. -
    -
    Subheading
    - Content for list item -
    - 14 -
  4. -
  5. -
    -
    Subheading
    - Content for list item -
    - 14 -
  6. -
html
<ol class="list-group list-group-numbered">
-<li class="list-group-item d-flex justify-content-between align-items-start">
-  <div class="ms-2 me-auto">
-    <div class="fw-bold">Subheading</div>
-    Content for list item
-  </div>
-  <span class="badge text-bg-primary rounded-pill">14</span>
-</li>
-<li class="list-group-item d-flex justify-content-between align-items-start">
-  <div class="ms-2 me-auto">
-    <div class="fw-bold">Subheading</div>
-    Content for list item
-  </div>
-  <span class="badge text-bg-primary rounded-pill">14</span>
-</li>
-<li class="list-group-item d-flex justify-content-between align-items-start">
-  <div class="ms-2 me-auto">
-    <div class="fw-bold">Subheading</div>
-    Content for list item
-  </div>
-  <span class="badge text-bg-primary rounded-pill">14</span>
-</li>
-</ol>
-

Horizontal

-

Add .list-group-horizontal to change the layout of list group items from vertical to horizontal across all breakpoints. Alternatively, choose a responsive variant .list-group-horizontal-{sm|md|lg|xl|xxl} to make a list group horizontal starting at that breakpoint's min-width. Currently horizontal list groups cannot be combined with flush list groups.

-

ProTip: Want equal-width list group items when horizontal? Add .flex-fill to each list group item.

-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
html
<ul class="list-group list-group-horizontal">
-<li class="list-group-item">An item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-</ul>
-<ul class="list-group list-group-horizontal-sm">
-<li class="list-group-item">An item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-</ul>
-<ul class="list-group list-group-horizontal-md">
-<li class="list-group-item">An item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-</ul>
-<ul class="list-group list-group-horizontal-lg">
-<li class="list-group-item">An item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-</ul>
-<ul class="list-group list-group-horizontal-xl">
-<li class="list-group-item">An item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-</ul>
-<ul class="list-group list-group-horizontal-xxl">
-<li class="list-group-item">An item</li>
-<li class="list-group-item">A second item</li>
-<li class="list-group-item">A third item</li>
-</ul>
-

Variants

-

Heads up! As of v5.3.0, the list-group-item-variant() Sass mixin is deprecated. List group item variants now have their CSS variables overridden in a Sass loop.

-

Use contextual classes to style list items with a stateful background and color.

-
    -
  • A simple default list group item
  • - -
  • A simple primary list group item
  • -
  • A simple secondary list group item
  • -
  • A simple success list group item
  • -
  • A simple danger list group item
  • -
  • A simple warning list group item
  • -
  • A simple info list group item
  • -
  • A simple light list group item
  • -
  • A simple dark list group item
  • -
html
<ul class="list-group">
-<li class="list-group-item">A simple default list group item</li>
-
-  <li class="list-group-item list-group-item-primary">A simple primary list group item</li>
-  <li class="list-group-item list-group-item-secondary">A simple secondary list group item</li>
-  <li class="list-group-item list-group-item-success">A simple success list group item</li>
-  <li class="list-group-item list-group-item-danger">A simple danger list group item</li>
-  <li class="list-group-item list-group-item-warning">A simple warning list group item</li>
-  <li class="list-group-item list-group-item-info">A simple info list group item</li>
-  <li class="list-group-item list-group-item-light">A simple light list group item</li>
-  <li class="list-group-item list-group-item-dark">A simple dark list group item</li>
-</ul>
- -

Contextual classes also work with .list-group-item-action for <a> and <button> elements. Note the addition of the hover styles here not present in the previous example. Also supported is the .active state; apply it to indicate an active selection on a contextual list group item.

-
html
<div class="list-group">
-<a href="#" class="list-group-item list-group-item-action">A simple default list group item</a>
-
-  <a href="#" class="list-group-item list-group-item-action list-group-item-primary">A simple primary list group item</a>
-  <a href="#" class="list-group-item list-group-item-action list-group-item-secondary">A simple secondary list group item</a>
-  <a href="#" class="list-group-item list-group-item-action list-group-item-success">A simple success list group item</a>
-  <a href="#" class="list-group-item list-group-item-action list-group-item-danger">A simple danger list group item</a>
-  <a href="#" class="list-group-item list-group-item-action list-group-item-warning">A simple warning list group item</a>
-  <a href="#" class="list-group-item list-group-item-action list-group-item-info">A simple info list group item</a>
-  <a href="#" class="list-group-item list-group-item-action list-group-item-light">A simple light list group item</a>
-  <a href="#" class="list-group-item list-group-item-action list-group-item-dark">A simple dark list group item</a>
-</div>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

With badges

-

Add badges to any list group item to show unread counts, activity, and more with the help of some utilities.

-
    -
  • - A list item - 14 -
  • -
  • - A second list item - 2 -
  • -
  • - A third list item - 1 -
  • -
html
<ul class="list-group">
-<li class="list-group-item d-flex justify-content-between align-items-center">
-  A list item
-  <span class="badge text-bg-primary rounded-pill">14</span>
-</li>
-<li class="list-group-item d-flex justify-content-between align-items-center">
-  A second list item
-  <span class="badge text-bg-primary rounded-pill">2</span>
-</li>
-<li class="list-group-item d-flex justify-content-between align-items-center">
-  A third list item
-  <span class="badge text-bg-primary rounded-pill">1</span>
-</li>
-</ul>
-

Custom content

-

Add nearly any HTML within, even for linked list groups like the one below, with the help of flexbox utilities.

-
html
<div class="list-group">
-<a href="#" class="list-group-item list-group-item-action active" aria-current="true">
-  <div class="d-flex w-100 justify-content-between">
-    <h5 class="mb-1">List group item heading</h5>
-    <small>3 days ago</small>
-  </div>
-  <p class="mb-1">Some placeholder content in a paragraph.</p>
-  <small>And some small print.</small>
-</a>
-<a href="#" class="list-group-item list-group-item-action">
-  <div class="d-flex w-100 justify-content-between">
-    <h5 class="mb-1">List group item heading</h5>
-    <small class="text-body-secondary">3 days ago</small>
-  </div>
-  <p class="mb-1">Some placeholder content in a paragraph.</p>
-  <small class="text-body-secondary">And some muted small print.</small>
-</a>
-<a href="#" class="list-group-item list-group-item-action">
-  <div class="d-flex w-100 justify-content-between">
-    <h5 class="mb-1">List group item heading</h5>
-    <small class="text-body-secondary">3 days ago</small>
-  </div>
-  <p class="mb-1">Some placeholder content in a paragraph.</p>
-  <small class="text-body-secondary">And some muted small print.</small>
-</a>
-</div>
-

Checkboxes and radios

-

Place Bootstrap's checkboxes and radios within list group items and customize as needed. You can use them without <label>s, but please remember to include an aria-label attribute and value for accessibility.

-
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
html
<ul class="list-group">
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="checkbox" value="" id="firstCheckbox">
-  <label class="form-check-label" for="firstCheckbox">First checkbox</label>
-</li>
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="checkbox" value="" id="secondCheckbox">
-  <label class="form-check-label" for="secondCheckbox">Second checkbox</label>
-</li>
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="checkbox" value="" id="thirdCheckbox">
-  <label class="form-check-label" for="thirdCheckbox">Third checkbox</label>
-</li>
-</ul>
-
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
html
<ul class="list-group">
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="radio" name="listGroupRadio" value="" id="firstRadio" checked>
-  <label class="form-check-label" for="firstRadio">First radio</label>
-</li>
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="radio" name="listGroupRadio" value="" id="secondRadio">
-  <label class="form-check-label" for="secondRadio">Second radio</label>
-</li>
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="radio" name="listGroupRadio" value="" id="thirdRadio">
-  <label class="form-check-label" for="thirdRadio">Third radio</label>
-</li>
-</ul>
-

You can use .stretched-link on <label>s to make the whole list group item clickable.

-
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
html
<ul class="list-group">
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="checkbox" value="" id="firstCheckboxStretched">
-  <label class="form-check-label stretched-link" for="firstCheckboxStretched">First checkbox</label>
-</li>
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="checkbox" value="" id="secondCheckboxStretched">
-  <label class="form-check-label stretched-link" for="secondCheckboxStretched">Second checkbox</label>
-</li>
-<li class="list-group-item">
-  <input class="form-check-input me-1" type="checkbox" value="" id="thirdCheckboxStretched">
-  <label class="form-check-label stretched-link" for="thirdCheckboxStretched">Third checkbox</label>
-</li>
-</ul>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, list groups now use local CSS variables on .list-group for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}list-group-color: #{$list-group-color};
-  --#{$prefix}list-group-bg: #{$list-group-bg};
-  --#{$prefix}list-group-border-color: #{$list-group-border-color};
-  --#{$prefix}list-group-border-width: #{$list-group-border-width};
-  --#{$prefix}list-group-border-radius: #{$list-group-border-radius};
-  --#{$prefix}list-group-item-padding-x: #{$list-group-item-padding-x};
-  --#{$prefix}list-group-item-padding-y: #{$list-group-item-padding-y};
-  --#{$prefix}list-group-action-color: #{$list-group-action-color};
-  --#{$prefix}list-group-action-hover-color: #{$list-group-action-hover-color};
-  --#{$prefix}list-group-action-hover-bg: #{$list-group-hover-bg};
-  --#{$prefix}list-group-action-active-color: #{$list-group-action-active-color};
-  --#{$prefix}list-group-action-active-bg: #{$list-group-action-active-bg};
-  --#{$prefix}list-group-disabled-color: #{$list-group-disabled-color};
-  --#{$prefix}list-group-disabled-bg: #{$list-group-disabled-bg};
-  --#{$prefix}list-group-active-color: #{$list-group-active-color};
-  --#{$prefix}list-group-active-bg: #{$list-group-active-bg};
-  --#{$prefix}list-group-active-border-color: #{$list-group-active-border-color};
-  
-

Sass variables

-
$list-group-color:                  var(--#{$prefix}body-color);
-$list-group-bg:                     var(--#{$prefix}body-bg);
-$list-group-border-color:           var(--#{$prefix}border-color);
-$list-group-border-width:           var(--#{$prefix}border-width);
-$list-group-border-radius:          var(--#{$prefix}border-radius);
-
-$list-group-item-padding-y:         $spacer * .5;
-$list-group-item-padding-x:         $spacer;
-// fusv-disable
-$list-group-item-bg-scale:          -80%; // Deprecated in v5.3.0
-$list-group-item-color-scale:       40%; // Deprecated in v5.3.0
-// fusv-enable
-
-$list-group-hover-bg:               var(--#{$prefix}tertiary-bg);
-$list-group-active-color:           $component-active-color;
-$list-group-active-bg:              $component-active-bg;
-$list-group-active-border-color:    $list-group-active-bg;
-
-$list-group-disabled-color:         var(--#{$prefix}secondary-color);
-$list-group-disabled-bg:            $list-group-bg;
-
-$list-group-action-color:           var(--#{$prefix}secondary-color);
-$list-group-action-hover-color:     var(--#{$prefix}emphasis-color);
-
-$list-group-action-active-color:    var(--#{$prefix}body-color);
-$list-group-action-active-bg:       var(--#{$prefix}secondary-bg);
-
-

Sass mixins

- -Deprecated in v5.3.0 -
@mixin list-group-item-variant($state, $background, $color) {
-  .list-group-item-#{$state} {
-    color: $color;
-    background-color: $background;
-
-    &.list-group-item-action {
-      &:hover,
-      &:focus {
-        color: $color;
-        background-color: shade-color($background, 10%);
-      }
-
-      &.active {
-        color: $white;
-        background-color: $color;
-        border-color: $color;
-      }
-    }
-  }
-}
-
-

Sass loops

-

Loop that generates the modifier classes with an overriding of CSS variables.

-
// List group contextual variants
-//
-// Add modifier classes to change text and background color on individual items.
-// Organizationally, this must come after the `:hover` states.
-
-@each $state in map-keys($theme-colors) {
-  .list-group-item-#{$state} {
-    --#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text-emphasis);
-    --#{$prefix}list-group-bg: var(--#{$prefix}#{$state}-bg-subtle);
-    --#{$prefix}list-group-border-color: var(--#{$prefix}#{$state}-border-subtle);
-    --#{$prefix}list-group-action-hover-color: var(--#{$prefix}emphasis-color);
-    --#{$prefix}list-group-action-hover-bg: var(--#{$prefix}#{$state}-border-subtle);
-    --#{$prefix}list-group-action-active-color: var(--#{$prefix}emphasis-color);
-    --#{$prefix}list-group-action-active-bg: var(--#{$prefix}#{$state}-border-subtle);
-    --#{$prefix}list-group-active-color: var(--#{$prefix}#{$state}-bg-subtle);
-    --#{$prefix}list-group-active-bg: var(--#{$prefix}#{$state}-text-emphasis);
-    --#{$prefix}list-group-active-border-color: var(--#{$prefix}#{$state}-text-emphasis);
-  }
-}
-
-

JavaScript behavior

-

Use the tab JavaScript plugin—include it individually or through the compiled bootstrap.js file—to extend our list group to create tabbable panes of local content.

-
-
<div class="row">
-  <div class="col-4">
-    <div class="list-group" id="list-tab" role="tablist">
-      <a class="list-group-item list-group-item-action active" id="list-home-list" data-bs-toggle="list" href="#list-home" role="tab" aria-controls="list-home">Home</a>
-      <a class="list-group-item list-group-item-action" id="list-profile-list" data-bs-toggle="list" href="#list-profile" role="tab" aria-controls="list-profile">Profile</a>
-      <a class="list-group-item list-group-item-action" id="list-messages-list" data-bs-toggle="list" href="#list-messages" role="tab" aria-controls="list-messages">Messages</a>
-      <a class="list-group-item list-group-item-action" id="list-settings-list" data-bs-toggle="list" href="#list-settings" role="tab" aria-controls="list-settings">Settings</a>
-    </div>
-  </div>
-  <div class="col-8">
-    <div class="tab-content" id="nav-tabContent">
-      <div class="tab-pane fade show active" id="list-home" role="tabpanel" aria-labelledby="list-home-list">...</div>
-      <div class="tab-pane fade" id="list-profile" role="tabpanel" aria-labelledby="list-profile-list">...</div>
-      <div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">...</div>
-      <div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list">...</div>
-    </div>
-  </div>
-</div>
-
-

Using data attributes

-

You can activate a list group navigation without writing any JavaScript by simply specifying data-bs-toggle="list" or on an element. Use these data attributes on .list-group-item.

-
<div role="tabpanel">
-  <!-- List group -->
-  <div class="list-group" id="myList" role="tablist">
-    <a class="list-group-item list-group-item-action active" data-bs-toggle="list" href="#home" role="tab">Home</a>
-    <a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#profile" role="tab">Profile</a>
-    <a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#messages" role="tab">Messages</a>
-    <a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#settings" role="tab">Settings</a>
-  </div>
-
-  <!-- Tab panes -->
-  <div class="tab-content">
-    <div class="tab-pane active" id="home" role="tabpanel">...</div>
-    <div class="tab-pane" id="profile" role="tabpanel">...</div>
-    <div class="tab-pane" id="messages" role="tabpanel">...</div>
-    <div class="tab-pane" id="settings" role="tabpanel">...</div>
-  </div>
-</div>
-
-

Via JavaScript

-

Enable tabbable list item via JavaScript (each list item needs to be activated individually):

-
const triggerTabList = document.querySelectorAll('#myTab a')
-triggerTabList.forEach(triggerEl => {
-  const tabTrigger = new bootstrap.Tab(triggerEl)
-
-  triggerEl.addEventListener('click', event => {
-    event.preventDefault()
-    tabTrigger.show()
-  })
-})
-
-

You can activate individual list item in several ways:

-
const triggerEl = document.querySelector('#myTab a[href="#profile"]')
-bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
-
-const triggerFirstTabEl = document.querySelector('#myTab li:first-child a')
-bootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab
-
-

Fade effect

-

To make tabs panel fade in, add .fade to each .tab-pane. The first tab pane must also have .show to make the initial content visible.

-
<div class="tab-content">
-  <div class="tab-pane fade show active" id="home" role="tabpanel">...</div>
-  <div class="tab-pane fade" id="profile" role="tabpanel">...</div>
-  <div class="tab-pane fade" id="messages" role="tabpanel">...</div>
-  <div class="tab-pane fade" id="settings" role="tabpanel">...</div>
-</div>
-
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-

Activates your content as a tab element.

-

You can create a tab instance with the constructor, for example:

-
const bsTab = new bootstrap.Tab('#myTab')
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's tab.
getInstanceStatic method which allows you to get the tab instance associated with a DOM element, you can use it like this: bootstrap.Tab.getInstance(element).
getOrCreateInstanceStatic method which returns a tab instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: bootstrap.Tab.getOrCreateInstance(element).
showSelects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. Returns to the caller before the tab pane has actually been shown (i.e. before the shown.bs.tab event occurs).
-

Events

-

When showing a new tab, the events fire in the following order:

-
    -
  1. hide.bs.tab (on the current active tab)
  2. -
  3. show.bs.tab (on the to-be-shown tab)
  4. -
  5. hidden.bs.tab (on the previous active tab, the same one as for the hide.bs.tab event)
  6. -
  7. shown.bs.tab (on the newly-active just-shown tab, the same one as for the show.bs.tab event)
  8. -
-

If no tab was already active, then the hide.bs.tab and hidden.bs.tab events will not be fired.

-
- - - - - - - - - - - - - - - - - - - - - - - - -
Event typeDescription
hide.bs.tabThis event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use event.target and event.relatedTarget to target the current active tab and the new soon-to-be-active tab, respectively.
hidden.bs.tabThis event fires after a new tab is shown (and thus the previous active tab is hidden). Use event.target and event.relatedTarget to target the previous active tab and the new active tab, respectively.
show.bs.tabThis event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
shown.bs.tabThis event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
-
const tabElms = document.querySelectorAll('a[data-bs-toggle="list"]')
-tabElms.forEach(tabElm => {
-  tabElm.addEventListener('shown.bs.tab', event => {
-    event.target // newly activated tab
-    event.relatedTarget // previous active tab
-  })
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/modal/index.html b/site/dist/docs/5.3/components/modal/index.html deleted file mode 100644 index 57edd8a1b7..0000000000 --- a/site/dist/docs/5.3/components/modal/index.html +++ /dev/null @@ -1,689 +0,0 @@ - Modal · Bootstrap v5.3

Use Bootstrap's JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

How it works

-

Before getting started with Bootstrap's modal component, be sure to read the following as our menu options have recently changed.

-
    -
  • Modals are built with HTML, CSS, and JavaScript. They're positioned over everything else in the document and remove scroll from the <body> so that modal content scrolls instead.
  • -
  • Clicking on the modal "backdrop" will automatically close the modal.
  • -
  • Bootstrap only supports one modal window at a time. Nested modals aren't supported as we believe them to be poor user experiences.
  • -
  • Modals use position: fixed, which can sometimes be a bit particular about its rendering. Whenever possible, place your modal HTML in a top-level position to avoid potential interference from other elements. You'll likely run into issues when nesting a .modal within another fixed element.
  • -
  • Once again, due to position: fixed, there are some caveats with using modals on mobile devices. See our browser support docs for details.
  • -
  • Due to how HTML5 defines its semantics, the autofocus HTML attribute has no effect in Bootstrap modals. To achieve the same effect, use some custom JavaScript:
  • -
-
const myModal = document.getElementById('myModal')
-const myInput = document.getElementById('myInput')
-
-myModal.addEventListener('shown.bs.modal', () => {
-  myInput.focus()
-})
-
-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Keep reading for demos and usage guidelines.

-

Examples

- -

Below is a static modal example (meaning its position and display have been overridden). Included are the modal header, modal body (required for padding), and modal footer (optional). We ask that you include modal headers with dismiss actions whenever possible, or provide another explicit dismiss action.

-
-
<div class="modal" tabindex="-1">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-header">
-        <h5 class="modal-title">Modal title</h5>
-        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-      </div>
-      <div class="modal-body">
-        <p>Modal body text goes here.</p>
-      </div>
-      <div class="modal-footer">
-        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
-        <button type="button" class="btn btn-primary">Save changes</button>
-      </div>
-    </div>
-  </div>
-</div>
-
-

In the above static example, we use <h5>, to avoid issues with the heading hierarchy in the documentation page. Structurally, however, a modal dialog represents its own separate document/context, so the .modal-title should ideally be an <h1>. If necessary, you can use the font size utilities to control the heading's appearance. All the following live examples use this approach.

-

Live demo

-

Toggle a working modal demo by clicking the button below. It will slide down and fade in from the top of the page.

- -
-
<!-- Button trigger modal -->
-<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
-  Launch demo modal
-</button>
-
-<!-- Modal -->
-<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-header">
-        <h1 class="modal-title fs-5" id="exampleModalLabel">Modal title</h1>
-        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-      </div>
-      <div class="modal-body">
-        ...
-      </div>
-      <div class="modal-footer">
-        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
-        <button type="button" class="btn btn-primary">Save changes</button>
-      </div>
-    </div>
-  </div>
-</div>
-
-

Static backdrop

-

When backdrop is set to static, the modal will not close when clicking outside of it. Click the button below to try it.

- -
-
<!-- Button trigger modal -->
-<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#staticBackdrop">
-  Launch static backdrop modal
-</button>
-
-<!-- Modal -->
-<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-header">
-        <h1 class="modal-title fs-5" id="staticBackdropLabel">Modal title</h1>
-        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-      </div>
-      <div class="modal-body">
-        ...
-      </div>
-      <div class="modal-footer">
-        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
-        <button type="button" class="btn btn-primary">Understood</button>
-      </div>
-    </div>
-  </div>
-</div>
-
-

Scrolling long content

-

When modals become too long for the user's viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean.

- -
-

You can also create a scrollable modal that allows scrolling the modal body by adding .modal-dialog-scrollable to .modal-dialog.

- -
-
<!-- Scrollable modal -->
-<div class="modal-dialog modal-dialog-scrollable">
-  ...
-</div>
-
-

Vertically centered

-

Add .modal-dialog-centered to .modal-dialog to vertically center the modal.

- - -
-
<!-- Vertically centered modal -->
-<div class="modal-dialog modal-dialog-centered">
-  ...
-</div>
-
-<!-- Vertically centered scrollable modal -->
-<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
-  ...
-</div>
-
-

Tooltips and popovers

-

Tooltips and popovers can be placed within modals as needed. When modals are closed, any tooltips and popovers within are also automatically dismissed.

- -
-
<div class="modal-body">
-  <h2 class="fs-5">Popover in a modal</h2>
-  <p>This <button class="btn btn-secondary" data-bs-toggle="popover" title="Popover title" data-bs-content="Popover body content is set in this attribute.">button</button> triggers a popover on click.</p>
-  <hr/>
-  <h2 class="fs-5">Tooltips in a modal</h2>
-  <p><a href="#" data-bs-toggle="tooltip" title="Tooltip">This link</a> and <a href="#" data-bs-toggle="tooltip" title="Tooltip">that link</a> have tooltips on hover.</p>
-</div>
-
-

Using the grid

-

Utilize the Bootstrap grid system within a modal by nesting .container-fluid within the .modal-body. Then, use the normal grid system classes as you would anywhere else.

- -
-
<div class="modal-body">
-  <div class="container-fluid">
-    <div class="row">
-      <div class="col-md-4">.col-md-4</div>
-      <div class="col-md-4 ms-auto">.col-md-4 .ms-auto</div>
-    </div>
-    <div class="row">
-      <div class="col-md-3 ms-auto">.col-md-3 .ms-auto</div>
-      <div class="col-md-2 ms-auto">.col-md-2 .ms-auto</div>
-    </div>
-    <div class="row">
-      <div class="col-md-6 ms-auto">.col-md-6 .ms-auto</div>
-    </div>
-    <div class="row">
-      <div class="col-sm-9">
-        Level 1: .col-sm-9
-        <div class="row">
-          <div class="col-8 col-sm-6">
-            Level 2: .col-8 .col-sm-6
-          </div>
-          <div class="col-4 col-sm-6">
-            Level 2: .col-4 .col-sm-6
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</div>
-
-

Varying modal content

-

Have a bunch of buttons that all trigger the same modal with slightly different contents? Use event.relatedTarget and HTML data-bs-* attributes to vary the contents of the modal depending on which button was clicked.

-

Below is a live demo followed by example HTML and JavaScript. For more information, read the modal events docs for details on relatedTarget.

-
- - - -
html
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@mdo">Open modal for @mdo</button>
-<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@fat">Open modal for @fat</button>
-<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal" data-bs-whatever="@getbootstrap">Open modal for @getbootstrap</button>
-
-<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
-<div class="modal-dialog">
-  <div class="modal-content">
-    <div class="modal-header">
-      <h1 class="modal-title fs-5" id="exampleModalLabel">New message</h1>
-      <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-    </div>
-    <div class="modal-body">
-      <form>
-        <div class="mb-3">
-          <label for="recipient-name" class="col-form-label">Recipient:</label>
-          <input type="text" class="form-control" id="recipient-name">
-        </div>
-        <div class="mb-3">
-          <label for="message-text" class="col-form-label">Message:</label>
-          <textarea class="form-control" id="message-text"></textarea>
-        </div>
-      </form>
-    </div>
-    <div class="modal-footer">
-      <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
-      <button type="button" class="btn btn-primary">Send message</button>
-    </div>
-  </div>
-</div>
-</div>
-
  const exampleModal = document.getElementById('exampleModal')
-  if (exampleModal) {
-    exampleModal.addEventListener('show.bs.modal', event => {
-      // Button that triggered the modal
-      const button = event.relatedTarget
-      // Extract info from data-bs-* attributes
-      const recipient = button.getAttribute('data-bs-whatever')
-      // If necessary, you could initiate an Ajax request here
-      // and then do the updating in a callback.
-
-      // Update the modal's content.
-      const modalTitle = exampleModal.querySelector('.modal-title')
-      const modalBodyInput = exampleModal.querySelector('.modal-body input')
-
-      modalTitle.textContent = `New message to ${recipient}`
-      modalBodyInput.value = recipient
-    })
-  }
-  
-

Toggle between modals

-

Toggle between multiple modals with some clever placement of the data-bs-target and data-bs-toggle attributes. For example, you could toggle a password reset modal from within an already open sign in modal. Please note multiple modals cannot be open at the same time—this method simply toggles between two separate modals.

-
- -
html
<div class="modal fade" id="exampleModalToggle" aria-hidden="true" aria-labelledby="exampleModalToggleLabel" tabindex="-1">
-<div class="modal-dialog modal-dialog-centered">
-  <div class="modal-content">
-    <div class="modal-header">
-      <h1 class="modal-title fs-5" id="exampleModalToggleLabel">Modal 1</h1>
-      <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-    </div>
-    <div class="modal-body">
-      Show a second modal and hide this one with the button below.
-    </div>
-    <div class="modal-footer">
-      <button class="btn btn-primary" data-bs-target="#exampleModalToggle2" data-bs-toggle="modal">Open second modal</button>
-    </div>
-  </div>
-</div>
-</div>
-<div class="modal fade" id="exampleModalToggle2" aria-hidden="true" aria-labelledby="exampleModalToggleLabel2" tabindex="-1">
-<div class="modal-dialog modal-dialog-centered">
-  <div class="modal-content">
-    <div class="modal-header">
-      <h1 class="modal-title fs-5" id="exampleModalToggleLabel2">Modal 2</h1>
-      <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-    </div>
-    <div class="modal-body">
-      Hide this modal and show the first with the button below.
-    </div>
-    <div class="modal-footer">
-      <button class="btn btn-primary" data-bs-target="#exampleModalToggle" data-bs-toggle="modal">Back to first</button>
-    </div>
-  </div>
-</div>
-</div>
-<button class="btn btn-primary" data-bs-target="#exampleModalToggle" data-bs-toggle="modal">Open first modal</button>
-

Change animation

-

The $modal-fade-transform variable determines the transform state of .modal-dialog before the modal fade-in animation, the $modal-show-transform variable determines the transform of .modal-dialog at the end of the modal fade-in animation.

-

If you want for example a zoom-in animation, you can set $modal-fade-transform: scale(.8).

-

Remove animation

-

For modals that simply appear rather than fade in to view, remove the .fade class from your modal markup.

-
<div class="modal" tabindex="-1" aria-labelledby="..." aria-hidden="true">
-  ...
-</div>
-
-

Dynamic heights

-

If the height of a modal changes while it is open, you should call myModal.handleUpdate() to readjust the modal's position in case a scrollbar appears.

-

Accessibility

-

Be sure to add aria-labelledby="...", referencing the modal title, to .modal. Additionally, you may give a description of your modal dialog with aria-describedby on .modal. Note that you don't need to add role="dialog" since we already add it via JavaScript.

-

Embedding YouTube videos

-

Embedding YouTube videos in modals requires additional JavaScript not in Bootstrap to automatically stop playback and more. See this helpful Stack Overflow post for more information.

-

Optional sizes

-

Modals have three optional sizes, available via modifier classes to be placed on a .modal-dialog. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SizeClassModal max-width
Small.modal-sm300px
DefaultNone500px
Large.modal-lg800px
Extra large.modal-xl1140px
-

Our default modal without modifier class constitutes the "medium" size modal.

-
-
<div class="modal-dialog modal-xl">...</div>
-<div class="modal-dialog modal-lg">...</div>
-<div class="modal-dialog modal-sm">...</div>
-
- - - -

Fullscreen Modal

-

Another override is the option to pop up a modal that covers the user viewport, available via modifier classes that are placed on a .modal-dialog.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassAvailability
.modal-fullscreenAlways
.modal-fullscreen-sm-down576px
.modal-fullscreen-md-down768px
.modal-fullscreen-lg-down992px
.modal-fullscreen-xl-down1200px
.modal-fullscreen-xxl-down1400px
-
-
<!-- Full screen modal -->
-<div class="modal-dialog modal-fullscreen-sm-down">
-  ...
-</div>
-
- - - - - - -

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, modals now use local CSS variables on .modal and .modal-backdrop for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}modal-zindex: #{$zindex-modal};
-  --#{$prefix}modal-width: #{$modal-md};
-  --#{$prefix}modal-padding: #{$modal-inner-padding};
-  --#{$prefix}modal-margin: #{$modal-dialog-margin};
-  --#{$prefix}modal-color: #{$modal-content-color};
-  --#{$prefix}modal-bg: #{$modal-content-bg};
-  --#{$prefix}modal-border-color: #{$modal-content-border-color};
-  --#{$prefix}modal-border-width: #{$modal-content-border-width};
-  --#{$prefix}modal-border-radius: #{$modal-content-border-radius};
-  --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-xs};
-  --#{$prefix}modal-inner-border-radius: #{$modal-content-inner-border-radius};
-  --#{$prefix}modal-header-padding-x: #{$modal-header-padding-x};
-  --#{$prefix}modal-header-padding-y: #{$modal-header-padding-y};
-  --#{$prefix}modal-header-padding: #{$modal-header-padding}; // Todo in v6: Split this padding into x and y
-  --#{$prefix}modal-header-border-color: #{$modal-header-border-color};
-  --#{$prefix}modal-header-border-width: #{$modal-header-border-width};
-  --#{$prefix}modal-title-line-height: #{$modal-title-line-height};
-  --#{$prefix}modal-footer-gap: #{$modal-footer-margin-between};
-  --#{$prefix}modal-footer-bg: #{$modal-footer-bg};
-  --#{$prefix}modal-footer-border-color: #{$modal-footer-border-color};
-  --#{$prefix}modal-footer-border-width: #{$modal-footer-border-width};
-  
-
  --#{$prefix}backdrop-zindex: #{$zindex-modal-backdrop};
-  --#{$prefix}backdrop-bg: #{$modal-backdrop-bg};
-  --#{$prefix}backdrop-opacity: #{$modal-backdrop-opacity};
-  
-

Sass variables

-
$modal-inner-padding:               $spacer;
-
-$modal-footer-margin-between:       .5rem;
-
-$modal-dialog-margin:               .5rem;
-$modal-dialog-margin-y-sm-up:       1.75rem;
-
-$modal-title-line-height:           $line-height-base;
-
-$modal-content-color:               null;
-$modal-content-bg:                  var(--#{$prefix}body-bg);
-$modal-content-border-color:        var(--#{$prefix}border-color-translucent);
-$modal-content-border-width:        var(--#{$prefix}border-width);
-$modal-content-border-radius:       var(--#{$prefix}border-radius-lg);
-$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width);
-$modal-content-box-shadow-xs:       var(--#{$prefix}box-shadow-sm);
-$modal-content-box-shadow-sm-up:    var(--#{$prefix}box-shadow);
-
-$modal-backdrop-bg:                 $black;
-$modal-backdrop-opacity:            .5;
-
-$modal-header-border-color:         var(--#{$prefix}border-color);
-$modal-header-border-width:         $modal-content-border-width;
-$modal-header-padding-y:            $modal-inner-padding;
-$modal-header-padding-x:            $modal-inner-padding;
-$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x; // Keep this for backwards compatibility
-
-$modal-footer-bg:                   null;
-$modal-footer-border-color:         $modal-header-border-color;
-$modal-footer-border-width:         $modal-header-border-width;
-
-$modal-sm:                          300px;
-$modal-md:                          500px;
-$modal-lg:                          800px;
-$modal-xl:                          1140px;
-
-$modal-fade-transform:              translate(0, -50px);
-$modal-show-transform:              none;
-$modal-transition:                  transform .3s ease-out;
-$modal-scale-transform:             scale(1.02);
-
-

Sass loops

-

Responsive fullscreen modals are generated via the $breakpoints map and a loop in scss/_modal.scss.

-
@each $breakpoint in map-keys($grid-breakpoints) {
-  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-  $postfix: if($infix != "", $infix + "-down", "");
-
-  @include media-breakpoint-down($breakpoint) {
-    .modal-fullscreen#{$postfix} {
-      width: 100vw;
-      max-width: none;
-      height: 100%;
-      margin: 0;
-
-      .modal-content {
-        height: 100%;
-        border: 0;
-        @include border-radius(0);
-      }
-
-      .modal-header,
-      .modal-footer {
-        @include border-radius(0);
-      }
-
-      .modal-body {
-        overflow-y: auto;
-      }
-    }
-  }
-}
-
-

Usage

-

The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also overrides default scrolling behavior and generates a .modal-backdrop to provide a click area for dismissing shown modals when clicking outside the modal.

-

Via data attributes

-

Toggle

-

Activate a modal without writing JavaScript. Set data-bs-toggle="modal" on a controller element, like a button, along with a data-bs-target="#foo" or href="#foo" to target a specific modal to toggle.

-
<button type="button" data-bs-toggle="modal" data-bs-target="#myModal">Launch modal</button>
-
-

Dismiss

-

-Dismissal can be achieved with the data-bs-dismiss attribute on a button within the modal as demonstrated below: -

<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>

-or on a button outside the modal using the additional data-bs-target as demonstrated below: -

<button type="button" class="btn-close" data-bs-dismiss="modal" data-bs-target="#my-modal" aria-label="Close"></button>
-

While both ways to dismiss a modal are supported, keep in mind that dismissing from outside a modal does not match the ARIA Authoring Practices Guide dialog (modal) pattern. Do this at your own risk.

-

Via JavaScript

-

Create a modal with a single line of JavaScript:

-
const myModal = new bootstrap.Modal(document.getElementById('myModal'), options)
-// or
-const myModalAlternative = new bootstrap.Modal('#myModal', options)
-
-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
backdropboolean, 'static'trueIncludes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal when clicked.
focusbooleantruePuts the focus on the modal when initialized.
keyboardbooleantrueCloses the modal when escape key is pressed.
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-

Passing options

-

Activates your content as a modal. Accepts an optional options object.

-
const myModal = new bootstrap.Modal('#myModal', {
-  keyboard: false
-})
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's modal. (Removes stored data on the DOM element)
getInstanceStatic method which allows you to get the modal instance associated with a DOM element.
getOrCreateInstanceStatic method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized.
handleUpdateManually readjust the modal's position if the height of a modal changes while it is open (i.e. in case a scrollbar appears).
hideManually hides a modal. Returns to the caller before the modal has actually been hidden (i.e. before the hidden.bs.modal event occurs).
showManually opens a modal. Returns to the caller before the modal has actually been shown (i.e. before the shown.bs.modal event occurs). Also, you can pass a DOM element as an argument that can be received in the modal events (as the relatedTarget property). (i.e. const modalToggle = document.getElementById('toggleMyModal'); myModal.show(modalToggle).
toggleManually toggles a modal. Returns to the caller before the modal has actually been shown or hidden (i.e. before the shown.bs.modal or hidden.bs.modal event occurs).
-

Events

-

Bootstrap's modal class exposes a few events for hooking into modal functionality. All modal events are fired at the modal itself (i.e. at the <div class="modal">).

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EventDescription
hide.bs.modalThis event is fired immediately when the hide instance method has been called. Can be prevented by calling event.preventDefault(). See JavaScript events documentation for more details on event prevention.
hidden.bs.modalThis event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).
hidePrevented.bs.modalThis event is fired when the modal is shown, its backdrop is static and a click outside of the modal is performed. The event is also fired when the escape key is pressed and the keyboard option is set to false.
show.bs.modalThis event fires immediately when the show instance method is called. If caused by a click, the clicked element is available as the relatedTarget property of the event.
shown.bs.modalThis event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the relatedTarget property of the event.
-
const myModalEl = document.getElementById('myModal')
-myModalEl.addEventListener('hidden.bs.modal', event => {
-  // do something...
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/navbar/index.html b/site/dist/docs/5.3/components/navbar/index.html deleted file mode 100644 index 6bf80a2686..0000000000 --- a/site/dist/docs/5.3/components/navbar/index.html +++ /dev/null @@ -1,1138 +0,0 @@ - Navbar · Bootstrap v5.3

Documentation and examples for Bootstrap's powerful, responsive navigation header, the navbar. Includes support for branding, navigation, and more, including support for our collapse plugin.

How it works

-

Here's what you need to know before getting started with the navbar:

-
    -
  • Navbars require a wrapping .navbar with .navbar-expand{-sm|-md|-lg|-xl|-xxl} for responsive collapsing and color scheme classes.
  • -
  • Navbars and their contents are fluid by default. Change the container to limit their horizontal width in different ways.
  • -
  • Use our spacing and flex utility classes for controlling spacing and alignment within navbars.
  • -
  • Navbars are responsive by default, but you can easily modify them to change that. Responsive behavior depends on our Collapse JavaScript plugin.
  • -
  • Ensure accessibility by using a <nav> element or, if using a more generic element such as a <div>, add a role="navigation" to every navbar to explicitly identify it as a landmark region for users of assistive technologies.
  • -
  • Indicate the current item by using aria-current="page" for the current page or aria-current="true" for the current item in a set.
  • -
  • New in v5.2.0: Navbars can be themed with CSS variables that are scoped to the .navbar base class. .navbar-light has been deprecated and .navbar-dark has been rewritten to override CSS variables instead of adding additional styles.
  • -
-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Supported content

-

Navbars come with built-in support for a handful of sub-components. Choose from the following as needed:

-
    -
  • .navbar-brand for your company, product, or project name.
  • -
  • .navbar-nav for a full-height and lightweight navigation (including support for dropdowns).
  • -
  • .navbar-toggler for use with our collapse plugin and other navigation toggling behaviors.
  • -
  • Flex and spacing utilities for any form controls and actions.
  • -
  • .navbar-text for adding vertically centered strings of text.
  • -
  • .collapse.navbar-collapse for grouping and hiding navbar contents by a parent breakpoint.
  • -
  • Add an optional .navbar-scroll to set a max-height and scroll expanded navbar content.
  • -
-

Here's an example of all the sub-components included in a responsive light-themed navbar that automatically collapses at the lg (large) breakpoint.

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarSupportedContent">
-    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
-      <li class="nav-item">
-        <a class="nav-link active" aria-current="page" href="#">Home</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Link</a>
-      </li>
-      <li class="nav-item dropdown">
-        <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-          Dropdown
-        </a>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">Action</a></li>
-          <li><a class="dropdown-item" href="#">Another action</a></li>
-          <li><hr class="dropdown-divider"></li>
-          <li><a class="dropdown-item" href="#">Something else here</a></li>
-        </ul>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-      </li>
-    </ul>
-    <form class="d-flex" role="search">
-      <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-      <button class="btn btn-outline-success" type="submit">Search</button>
-    </form>
-  </div>
-</div>
-</nav>
-

This example uses background (bg-body-tertiary) and spacing (me-auto, mb-2, mb-lg-0, me-2) utility classes.

-

Brand

-

The .navbar-brand can be applied to most elements, but an anchor works best, as some elements might require utility classes or custom styles.

-

Text

-

Add your text within an element with the .navbar-brand class.

-
- - - -
html
<!-- As a link -->
-<nav class="navbar bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar</a>
-</div>
-</nav>
-
-<!-- As a heading -->
-<nav class="navbar bg-body-tertiary">
-<div class="container-fluid">
-  <span class="navbar-brand mb-0 h1">Navbar</span>
-</div>
-</nav>
-

Image

-

You can replace the text within the .navbar-brand with an <img>.

-
html
<nav class="navbar bg-body-tertiary">
-<div class="container">
-  <a class="navbar-brand" href="#">
-    <img src="/docs/5.3/assets/brand/bootstrap-logo.svg" alt="Bootstrap" width="30" height="24">
-  </a>
-</div>
-</nav>
-

Image and text

-

You can also make use of some additional utilities to add an image and text at the same time. Note the addition of .d-inline-block and .align-text-top on the <img>.

-
html
<nav class="navbar bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">
-    <img src="/docs/5.3/assets/brand/bootstrap-logo.svg" alt="Logo" width="30" height="24" class="d-inline-block align-text-top">
-    Bootstrap
-  </a>
-</div>
-</nav>
- -

Navbar navigation links build on our .nav options with their own modifier class and require the use of toggler classes for proper responsive styling. Navigation in navbars will also grow to occupy as much horizontal space as possible to keep your navbar contents securely aligned.

-

Add the .active class on .nav-link to indicate the current page.

-

Please note that you should also add the aria-current attribute on the active .nav-link.

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarNav">
-    <ul class="navbar-nav">
-      <li class="nav-item">
-        <a class="nav-link active" aria-current="page" href="#">Home</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Features</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Pricing</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-      </li>
-    </ul>
-  </div>
-</div>
-</nav>
-

And because we use classes for our navs, you can avoid the list-based approach entirely if you like.

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
-    <div class="navbar-nav">
-      <a class="nav-link active" aria-current="page" href="#">Home</a>
-      <a class="nav-link" href="#">Features</a>
-      <a class="nav-link" href="#">Pricing</a>
-      <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-    </div>
-  </div>
-</div>
-</nav>
-

You can also use dropdowns in your navbar. Dropdown menus require a wrapping element for positioning, so be sure to use separate and nested elements for .nav-item and .nav-link as shown below.

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarNavDropdown">
-    <ul class="navbar-nav">
-      <li class="nav-item">
-        <a class="nav-link active" aria-current="page" href="#">Home</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Features</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Pricing</a>
-      </li>
-      <li class="nav-item dropdown">
-        <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-          Dropdown link
-        </a>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">Action</a></li>
-          <li><a class="dropdown-item" href="#">Another action</a></li>
-          <li><a class="dropdown-item" href="#">Something else here</a></li>
-        </ul>
-      </li>
-    </ul>
-  </div>
-</div>
-</nav>
-

Forms

-

Place various form controls and components within a navbar:

-
html
<nav class="navbar bg-body-tertiary">
-<div class="container-fluid">
-  <form class="d-flex" role="search">
-    <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-    <button class="btn btn-outline-success" type="submit">Search</button>
-  </form>
-</div>
-</nav>
-

Immediate child elements of .navbar use flex layout and will default to justify-content: space-between. Use additional flex utilities as needed to adjust this behavior.

-
html
<nav class="navbar bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand">Navbar</a>
-  <form class="d-flex" role="search">
-    <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-    <button class="btn btn-outline-success" type="submit">Search</button>
-  </form>
-</div>
-</nav>
-

Input groups work, too. If your navbar is an entire form, or mostly a form, you can use the <form> element as the container and save some HTML.

-
html
<nav class="navbar bg-body-tertiary">
-<form class="container-fluid">
-  <div class="input-group">
-    <span class="input-group-text" id="basic-addon1">@</span>
-    <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1"/>
-  </div>
-</form>
-</nav>
-

Various buttons are supported as part of these navbar forms, too. This is also a great reminder that vertical alignment utilities can be used to align different sized elements.

-
html
<nav class="navbar bg-body-tertiary">
-<form class="container-fluid justify-content-start">
-  <button class="btn btn-outline-success me-2" type="button">Main button</button>
-  <button class="btn btn-sm btn-outline-secondary" type="button">Smaller button</button>
-</form>
-</nav>
-

Text

-

Navbars may contain bits of text with the help of .navbar-text. This class adjusts vertical alignment and horizontal spacing for strings of text.

-
html
<nav class="navbar bg-body-tertiary">
-<div class="container-fluid">
-  <span class="navbar-text">
-    Navbar text with an inline element
-  </span>
-</div>
-</nav>
-

Mix and match with other components and utilities as needed.

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar w/ text</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarText">
-    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
-      <li class="nav-item">
-        <a class="nav-link active" aria-current="page" href="#">Home</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Features</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Pricing</a>
-      </li>
-    </ul>
-    <span class="navbar-text">
-      Navbar text with an inline element
-    </span>
-  </div>
-</div>
-</nav>
-

Color schemes

-

New dark navbars in v5.3.0 — We've deprecated .navbar-dark in favor of the new data-bs-theme="dark". Add data-bs-theme="dark" to the .navbar to enable a component-specific color mode. Learn more about our color modes.


New in v5.2.0 — Navbar theming is now powered by CSS variables and .navbar-light has been deprecated. CSS variables are applied to .navbar, defaulting to the "light" appearance, and can be overridden with .navbar-dark.

-

Navbar themes are easier than ever thanks to Bootstrap's combination of Sass and CSS variables. The default is our "light navbar" for use with light background colors, but you can also apply data-bs-theme="dark" to the .navbar parent for dark background colors. Then, customize with .bg-* and additional utilities.

- -
<nav class="navbar bg-dark border-bottom border-body" data-bs-theme="dark">
-  <!-- Navbar content -->
-</nav>
-
-<nav class="navbar bg-primary" data-bs-theme="dark">
-  <!-- Navbar content -->
-</nav>
-
-<nav class="navbar" style="background-color: #e3f2fd;" data-bs-theme="light">
-  <!-- Navbar content -->
-</nav>
-
-

Containers

-

Although it's not required, you can wrap a navbar in a .container to center it on a page–though note that an inner container is still required. Or you can add a container inside the .navbar to only center the contents of a fixed or static top navbar.

-
- -
html
<div class="container">
-<nav class="navbar navbar-expand-lg bg-body-tertiary">
-  <div class="container-fluid">
-    <a class="navbar-brand" href="#">Navbar</a>
-  </div>
-</nav>
-</div>
-

Use any of the responsive containers to change how wide the content in your navbar is presented.

-
-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-md">
-  <a class="navbar-brand" href="#">Navbar</a>
-</div>
-</nav>
-
-

Placement

-

Use our position utilities to place navbars in non-static positions. Choose from fixed to the top, fixed to the bottom, stickied to the top (scrolls with the page until it reaches the top, then stays there), or stickied to the bottom (scrolls with the page until it reaches the bottom, then stays there).

-

Fixed navbars use position: fixed, meaning they're pulled from the normal flow of the DOM and may require custom CSS (e.g., padding-top on the <body>) to prevent overlap with other elements.

-
html
<nav class="navbar bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Default</a>
-</div>
-</nav>
-
html
<nav class="navbar fixed-top bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Fixed top</a>
-</div>
-</nav>
-
html
<nav class="navbar fixed-bottom bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Fixed bottom</a>
-</div>
-</nav>
-
html
<nav class="navbar sticky-top bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Sticky top</a>
-</div>
-</nav>
-
html
<nav class="navbar sticky-bottom bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Sticky bottom</a>
-</div>
-</nav>
-

Scrolling

-

Add .navbar-nav-scroll to a .navbar-nav (or other navbar sub-component) to enable vertical scrolling within the toggleable contents of a collapsed navbar. By default, scrolling kicks in at 75vh (or 75% of the viewport height), but you can override that with the local CSS custom property --bs-navbar-height or custom styles. At larger viewports when the navbar is expanded, content will appear as it does in a default navbar.

-

Please note that this behavior comes with a potential drawback of overflow—when setting overflow-y: auto (required to scroll the content here), overflow-x is the equivalent of auto, which will crop some horizontal content.

-

Here's an example navbar using .navbar-nav-scroll with style="--bs-scroll-height: 100px;", with some extra margin utilities for optimum spacing.

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar scroll</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarScroll" aria-controls="navbarScroll" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarScroll">
-    <ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
-      <li class="nav-item">
-        <a class="nav-link active" aria-current="page" href="#">Home</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Link</a>
-      </li>
-      <li class="nav-item dropdown">
-        <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-          Link
-        </a>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">Action</a></li>
-          <li><a class="dropdown-item" href="#">Another action</a></li>
-          <li><hr class="dropdown-divider"></li>
-          <li><a class="dropdown-item" href="#">Something else here</a></li>
-        </ul>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link disabled" aria-disabled="true">Link</a>
-      </li>
-    </ul>
-    <form class="d-flex" role="search">
-      <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-      <button class="btn btn-outline-success" type="submit">Search</button>
-    </form>
-  </div>
-</div>
-</nav>
-

Responsive behaviors

-

Navbars can use .navbar-toggler, .navbar-collapse, and .navbar-expand{-sm|-md|-lg|-xl|-xxl} classes to determine when their content collapses behind a button. In combination with other utilities, you can easily choose when to show or hide particular elements.

-

For navbars that never collapse, add the .navbar-expand class on the navbar. For navbars that always collapse, don't add any .navbar-expand class.

-

Toggler

-

Navbar togglers are left-aligned by default, but should they follow a sibling element like a .navbar-brand, they'll automatically be aligned to the far right. Reversing your markup will reverse the placement of the toggler. Below are examples of different toggle styles.

-

With no .navbar-brand shown at the smallest breakpoint:

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarTogglerDemo01">
-    <a class="navbar-brand" href="#">Hidden brand</a>
-    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
-      <li class="nav-item">
-        <a class="nav-link active" aria-current="page" href="#">Home</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Link</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-      </li>
-    </ul>
-    <form class="d-flex" role="search">
-      <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-      <button class="btn btn-outline-success" type="submit">Search</button>
-    </form>
-  </div>
-</div>
-</nav>
-

With a brand name shown on the left and toggler on the right:

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse" id="navbarTogglerDemo02">
-    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
-      <li class="nav-item">
-        <a class="nav-link active" aria-current="page" href="#">Home</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Link</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-      </li>
-    </ul>
-    <form class="d-flex" role="search">
-      <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-      <button class="btn btn-outline-success" type="submit">Search</button>
-    </form>
-  </div>
-</div>
-</nav>
-

With a toggler on the left and brand name on the right:

-
html
<nav class="navbar navbar-expand-lg bg-body-tertiary">
-<div class="container-fluid">
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <a class="navbar-brand" href="#">Navbar</a>
-  <div class="collapse navbar-collapse" id="navbarTogglerDemo03">
-    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
-      <li class="nav-item">
-        <a class="nav-link active" aria-current="page" href="#">Home</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link" href="#">Link</a>
-      </li>
-      <li class="nav-item">
-        <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-      </li>
-    </ul>
-    <form class="d-flex" role="search">
-      <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-      <button class="btn btn-outline-success" type="submit">Search</button>
-    </form>
-  </div>
-</div>
-</nav>
-

External content

-

Sometimes you want to use the collapse plugin to trigger a container element for content that structurally sits outside of the .navbar . Because our plugin works on the id and data-bs-target matching, that's easily done!

-
-
html
<div class="collapse" id="navbarToggleExternalContent" data-bs-theme="dark">
-<div class="bg-dark p-4">
-  <h5 class="text-body-emphasis h4">Collapsed content</h5>
-  <span class="text-body-secondary">Toggleable via the navbar brand.</span>
-</div>
-</div>
-<nav class="navbar navbar-dark bg-dark">
-<div class="container-fluid">
-  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-</div>
-</nav>
-

When you do this, we recommend including additional JavaScript to move the focus programmatically to the container when it is opened. Otherwise, keyboard users and users of assistive technologies will likely have a hard time finding the newly revealed content - particularly if the container that was opened comes before the toggler in the document's structure. We also recommend making sure that the toggler has the aria-controls attribute, pointing to the id of the content container. In theory, this allows assistive technology users to jump directly from the toggler to the container it controls–but support for this is currently quite patchy.

-

Offcanvas

-

Transform your expanding and collapsing navbar into an offcanvas drawer with the offcanvas component. We extend both the offcanvas default styles and use our .navbar-expand-* classes to create a dynamic and flexible navigation sidebar.

-

In the example below, to create an offcanvas navbar that is always collapsed across all breakpoints, omit the .navbar-expand-* class entirely.

-
html
<nav class="navbar bg-body-tertiary fixed-top">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Offcanvas navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">
-    <div class="offcanvas-header">
-      <h5 class="offcanvas-title" id="offcanvasNavbarLabel">Offcanvas</h5>
-      <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-    </div>
-    <div class="offcanvas-body">
-      <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
-        <li class="nav-item">
-          <a class="nav-link active" aria-current="page" href="#">Home</a>
-        </li>
-        <li class="nav-item">
-          <a class="nav-link" href="#">Link</a>
-        </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-            Dropdown
-          </a>
-          <ul class="dropdown-menu">
-            <li><a class="dropdown-item" href="#">Action</a></li>
-            <li><a class="dropdown-item" href="#">Another action</a></li>
-            <li>
-              <hr class="dropdown-divider">
-            </li>
-            <li><a class="dropdown-item" href="#">Something else here</a></li>
-          </ul>
-        </li>
-      </ul>
-      <form class="d-flex mt-3" role="search">
-        <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-        <button class="btn btn-outline-success" type="submit">Search</button>
-      </form>
-    </div>
-  </div>
-</div>
-</nav>
-

To create an offcanvas navbar that expands into a normal navbar at a specific breakpoint like lg, use .navbar-expand-lg.

-
<nav class="navbar navbar-expand-lg bg-body-tertiary fixed-top">
-  <a class="navbar-brand" href="#">Offcanvas navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarOffcanvasLg" aria-controls="navbarOffcanvasLg" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="offcanvas offcanvas-end" tabindex="-1" id="navbarOffcanvasLg" aria-labelledby="navbarOffcanvasLgLabel">
-    ...
-  </div>
-</nav>
-
-

When using offcanvas in a dark navbar, be aware that you may need to have a dark background on the offcanvas content to avoid the text becoming illegible. In the example below, we add .navbar-dark and .bg-dark to the .navbar, .text-bg-dark to the .offcanvas, .dropdown-menu-dark to .dropdown-menu, and .btn-close-white to .btn-close for proper styling with a dark offcanvas.

-
html
<nav class="navbar navbar-dark bg-dark fixed-top">
-<div class="container-fluid">
-  <a class="navbar-brand" href="#">Offcanvas dark navbar</a>
-  <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasDarkNavbar" aria-controls="offcanvasDarkNavbar" aria-label="Toggle navigation">
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="offcanvas offcanvas-end text-bg-dark" tabindex="-1" id="offcanvasDarkNavbar" aria-labelledby="offcanvasDarkNavbarLabel">
-    <div class="offcanvas-header">
-      <h5 class="offcanvas-title" id="offcanvasDarkNavbarLabel">Dark offcanvas</h5>
-      <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-    </div>
-    <div class="offcanvas-body">
-      <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
-        <li class="nav-item">
-          <a class="nav-link active" aria-current="page" href="#">Home</a>
-        </li>
-        <li class="nav-item">
-          <a class="nav-link" href="#">Link</a>
-        </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-            Dropdown
-          </a>
-          <ul class="dropdown-menu dropdown-menu-dark">
-            <li><a class="dropdown-item" href="#">Action</a></li>
-            <li><a class="dropdown-item" href="#">Another action</a></li>
-            <li>
-              <hr class="dropdown-divider">
-            </li>
-            <li><a class="dropdown-item" href="#">Something else here</a></li>
-          </ul>
-        </li>
-      </ul>
-      <form class="d-flex mt-3" role="search">
-        <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"/>
-        <button class="btn btn-success" type="submit">Search</button>
-      </form>
-    </div>
-  </div>
-</div>
-</nav>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, navbars now use local CSS variables on .navbar for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}navbar-padding-x: #{if($navbar-padding-x == null, 0, $navbar-padding-x)};
-  --#{$prefix}navbar-padding-y: #{$navbar-padding-y};
-  --#{$prefix}navbar-color: #{$navbar-light-color};
-  --#{$prefix}navbar-hover-color: #{$navbar-light-hover-color};
-  --#{$prefix}navbar-disabled-color: #{$navbar-light-disabled-color};
-  --#{$prefix}navbar-active-color: #{$navbar-light-active-color};
-  --#{$prefix}navbar-brand-padding-y: #{$navbar-brand-padding-y};
-  --#{$prefix}navbar-brand-margin-end: #{$navbar-brand-margin-end};
-  --#{$prefix}navbar-brand-font-size: #{$navbar-brand-font-size};
-  --#{$prefix}navbar-brand-color: #{$navbar-light-brand-color};
-  --#{$prefix}navbar-brand-hover-color: #{$navbar-light-brand-hover-color};
-  --#{$prefix}navbar-nav-link-padding-x: #{$navbar-nav-link-padding-x};
-  --#{$prefix}navbar-toggler-padding-y: #{$navbar-toggler-padding-y};
-  --#{$prefix}navbar-toggler-padding-x: #{$navbar-toggler-padding-x};
-  --#{$prefix}navbar-toggler-font-size: #{$navbar-toggler-font-size};
-  --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-light-toggler-icon-bg)};
-  --#{$prefix}navbar-toggler-border-color: #{$navbar-light-toggler-border-color};
-  --#{$prefix}navbar-toggler-border-radius: #{$navbar-toggler-border-radius};
-  --#{$prefix}navbar-toggler-focus-width: #{$navbar-toggler-focus-width};
-  --#{$prefix}navbar-toggler-transition: #{$navbar-toggler-transition};
-  
-

Some additional CSS variables are also present on .navbar-nav:

-
  --#{$prefix}nav-link-padding-x: 0;
-  --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
-  @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
-  --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
-  --#{$prefix}nav-link-color: var(--#{$prefix}navbar-color);
-  --#{$prefix}nav-link-hover-color: var(--#{$prefix}navbar-hover-color);
-  --#{$prefix}nav-link-disabled-color: var(--#{$prefix}navbar-disabled-color);
-  
-

Customization through CSS variables can be seen on the .navbar-dark class where we override specific values without adding duplicate CSS selectors.

-
  --#{$prefix}navbar-color: #{$navbar-dark-color};
-  --#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};
-  --#{$prefix}navbar-disabled-color: #{$navbar-dark-disabled-color};
-  --#{$prefix}navbar-active-color: #{$navbar-dark-active-color};
-  --#{$prefix}navbar-brand-color: #{$navbar-dark-brand-color};
-  --#{$prefix}navbar-brand-hover-color: #{$navbar-dark-brand-hover-color};
-  --#{$prefix}navbar-toggler-border-color: #{$navbar-dark-toggler-border-color};
-  --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
-  
-

Sass variables

-

Variables for all navbars:

-
$navbar-padding-y:                  $spacer * .5;
-$navbar-padding-x:                  null;
-
-$navbar-nav-link-padding-x:         .5rem;
-
-$navbar-brand-font-size:            $font-size-lg;
-// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
-$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2;
-$navbar-brand-height:               $navbar-brand-font-size * $line-height-base;
-$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5;
-$navbar-brand-margin-end:           1rem;
-
-$navbar-toggler-padding-y:          .25rem;
-$navbar-toggler-padding-x:          .75rem;
-$navbar-toggler-font-size:          $font-size-lg;
-$navbar-toggler-border-radius:      $btn-border-radius;
-$navbar-toggler-focus-width:        $btn-focus-width;
-$navbar-toggler-transition:         box-shadow .15s ease-in-out;
-
-$navbar-light-color:                rgba(var(--#{$prefix}emphasis-color-rgb), .65);
-$navbar-light-hover-color:          rgba(var(--#{$prefix}emphasis-color-rgb), .8);
-$navbar-light-active-color:         rgba(var(--#{$prefix}emphasis-color-rgb), 1);
-$navbar-light-disabled-color:       rgba(var(--#{$prefix}emphasis-color-rgb), .3);
-$navbar-light-icon-color:           rgba($body-color, .75);
-$navbar-light-toggler-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-icon-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>");
-$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15);
-$navbar-light-brand-color:          $navbar-light-active-color;
-$navbar-light-brand-hover-color:    $navbar-light-active-color;
-
-

Variables for the dark navbar:

-
$navbar-dark-color:                 rgba($white, .55);
-$navbar-dark-hover-color:           rgba($white, .75);
-$navbar-dark-active-color:          $white;
-$navbar-dark-disabled-color:        rgba($white, .25);
-$navbar-dark-icon-color:            $navbar-dark-color;
-$navbar-dark-toggler-icon-bg:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-icon-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>");
-$navbar-dark-toggler-border-color:  rgba($white, .1);
-$navbar-dark-brand-color:           $navbar-dark-active-color;
-$navbar-dark-brand-hover-color:     $navbar-dark-active-color;
-
-

Sass loops

-

Responsive navbar expand/collapse classes (e.g., .navbar-expand-lg) are combined with the $breakpoints map and generated through a loop in scss/_navbar.scss.

-
// Generate series of `.navbar-expand-*` responsive classes for configuring
-// where your navbar collapses.
-.navbar-expand {
-  @each $breakpoint in map-keys($grid-breakpoints) {
-    $next: breakpoint-next($breakpoint, $grid-breakpoints);
-    $infix: breakpoint-infix($next, $grid-breakpoints);
-
-    // stylelint-disable-next-line scss/selector-no-union-class-name
-    &#{$infix} {
-      @include media-breakpoint-up($next) {
-        flex-wrap: nowrap;
-        justify-content: flex-start;
-
-        .navbar-nav {
-          flex-direction: row;
-
-          .dropdown-menu {
-            position: absolute;
-          }
-
-          .nav-link {
-            padding-right: var(--#{$prefix}navbar-nav-link-padding-x);
-            padding-left: var(--#{$prefix}navbar-nav-link-padding-x);
-          }
-        }
-
-        .navbar-nav-scroll {
-          overflow: visible;
-        }
-
-        .navbar-collapse {
-          display: flex !important; // stylelint-disable-line declaration-no-important
-          flex-basis: auto;
-        }
-
-        .navbar-toggler {
-          display: none;
-        }
-
-        .offcanvas {
-          // stylelint-disable declaration-no-important
-          position: static;
-          z-index: auto;
-          flex-grow: 1;
-          width: auto !important;
-          height: auto !important;
-          visibility: visible !important;
-          background-color: transparent !important;
-          border: 0 !important;
-          transform: none !important;
-          @include box-shadow(none);
-          @include transition(none);
-          // stylelint-enable declaration-no-important
-
-          .offcanvas-header {
-            display: none;
-          }
-
-          .offcanvas-body {
-            display: flex;
-            flex-grow: 0;
-            padding: 0;
-            overflow-y: visible;
-          }
-        }
-      }
-    }
-  }
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/navs-tabs/index.html b/site/dist/docs/5.3/components/navs-tabs/index.html deleted file mode 100644 index 3f7f25e960..0000000000 --- a/site/dist/docs/5.3/components/navs-tabs/index.html +++ /dev/null @@ -1,717 +0,0 @@ - Navs and tabs · Bootstrap v5.3

Navs and tabs

Documentation and examples for how to use Bootstrap's included navigation components.

Base nav

-

Navigation available in Bootstrap share general markup and styles, from the base .nav class to the active and disabled states. Swap modifier classes to switch between each style.

-

The base .nav component is built with flexbox and provide a strong foundation for building all types of navigation components. It includes some style overrides (for working with lists), some link padding for larger hit areas, and basic disabled styling.

-

The base .nav component does not include any .active state. The following examples include the class, mainly to demonstrate that this particular class does not trigger any special styling.

To convey the active state to assistive technologies, use the aria-current attribute — using the page value for current page, or true for the current item in a set.

-
html
<ul class="nav">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

Classes are used throughout, so your markup can be super flexible. Use <ul>s like above, <ol> if the order of your items is important, or roll your own with a <nav> element. Because the .nav uses display: flex, the nav links behave the same as nav items would, but without the extra markup.

-
html
<nav class="nav">
-<a class="nav-link active" aria-current="page" href="#">Active</a>
-<a class="nav-link" href="#">Link</a>
-<a class="nav-link" href="#">Link</a>
-<a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</nav>
-

Available styles

-

Change the style of .navs component with modifiers and utilities. Mix and match as needed, or build your own.

-

Horizontal alignment

-

Change the horizontal alignment of your nav with flexbox utilities. By default, navs are left-aligned, but you can easily change them to center or right-aligned.

-

Centered with .justify-content-center:

-
html
<ul class="nav justify-content-center">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

Right-aligned with .justify-content-end:

-
html
<ul class="nav justify-content-end">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

Vertical

-

Stack your navigation by changing the flex item direction with the .flex-column utility. Need to stack them on some viewports but not others? Use the responsive versions (e.g., .flex-sm-column).

-
html
<ul class="nav flex-column">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

As always, vertical navigation is possible without <ul>s, too.

-
html
<nav class="nav flex-column">
-<a class="nav-link active" aria-current="page" href="#">Active</a>
-<a class="nav-link" href="#">Link</a>
-<a class="nav-link" href="#">Link</a>
-<a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</nav>
-

Tabs

-

Takes the basic nav from above and adds the .nav-tabs class to generate a tabbed interface. Use them to create tabbable regions with our tab JavaScript plugin.

-
html
<ul class="nav nav-tabs">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

Pills

-

Take that same HTML, but use .nav-pills instead:

-
html
<ul class="nav nav-pills">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

Underline

-

Take that same HTML, but use .nav-underline instead:

-
html
<ul class="nav nav-underline">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

Fill and justify

-

Force your .nav's contents to extend the full available width with one of two modifier classes. To proportionately fill all available space with your .nav-items, use .nav-fill. Notice that all horizontal space is occupied, but not every nav item has the same width.

-
html
<ul class="nav nav-pills nav-fill">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Much longer nav link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

When using a <nav>-based navigation, you can safely omit .nav-item as only .nav-link is required for styling <a> elements.

-
html
<nav class="nav nav-pills nav-fill">
-<a class="nav-link active" aria-current="page" href="#">Active</a>
-<a class="nav-link" href="#">Much longer nav link</a>
-<a class="nav-link" href="#">Link</a>
-<a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</nav>
-

For equal-width elements, use .nav-justified. All horizontal space will be occupied by nav links, but unlike the .nav-fill above, every nav item will be the same width.

-
html
<ul class="nav nav-pills nav-justified">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Much longer nav link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

Similar to the .nav-fill example using a <nav>-based navigation.

-
html
<nav class="nav nav-pills nav-justified">
-<a class="nav-link active" aria-current="page" href="#">Active</a>
-<a class="nav-link" href="#">Much longer nav link</a>
-<a class="nav-link" href="#">Link</a>
-<a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</nav>
-
-

Working with flex utilities

-

If you need responsive nav variations, consider using a series of flexbox utilities. While more verbose, these utilities offer greater customization across responsive breakpoints. In the example below, our nav will be stacked on the lowest breakpoint, then adapt to a horizontal layout that fills the available width starting from the small breakpoint.

-
html
<nav class="nav nav-pills flex-column flex-sm-row">
-<a class="flex-sm-fill text-sm-center nav-link active" aria-current="page" href="#">Active</a>
-<a class="flex-sm-fill text-sm-center nav-link" href="#">Longer nav link</a>
-<a class="flex-sm-fill text-sm-center nav-link" href="#">Link</a>
-<a class="flex-sm-fill text-sm-center nav-link disabled">Disabled</a>
-</nav>
-

Regarding accessibility

-

If you're using navs to provide a navigation bar, be sure to add a role="navigation" to the most logical parent container of the <ul>, or wrap a <nav> element around the whole navigation. Do not add the role to the <ul> itself, as this would prevent it from being announced as an actual list by assistive technologies.

-

Note that navigation bars, even if visually styled as tabs with the .nav-tabs class, should not be given role="tablist", role="tab" or role="tabpanel" attributes. These are only appropriate for dynamic tabbed interfaces, as described in the ARIA Authoring Practices Guide tabs pattern. See JavaScript behavior for dynamic tabbed interfaces in this section for an example. The aria-current attribute is not necessary on dynamic tabbed interfaces since our JavaScript handles the selected state by adding aria-selected="true" on the active tab.

-

Using dropdowns

-

Add dropdown menus with a little extra HTML and the dropdowns JavaScript plugin.

-

Tabs with dropdowns

-
html
<ul class="nav nav-tabs">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item dropdown">
-  <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"></li>
-    <li><a class="dropdown-item" href="#">Separated link</a></li>
-  </ul>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

Pills with dropdowns

-
html
<ul class="nav nav-pills">
-<li class="nav-item">
-  <a class="nav-link active" aria-current="page" href="#">Active</a>
-</li>
-<li class="nav-item dropdown">
-  <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"></li>
-    <li><a class="dropdown-item" href="#">Separated link</a></li>
-  </ul>
-</li>
-<li class="nav-item">
-  <a class="nav-link" href="#">Link</a>
-</li>
-<li class="nav-item">
-  <a class="nav-link disabled" aria-disabled="true">Disabled</a>
-</li>
-</ul>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, navs now use local CSS variables on .nav, .nav-tabs, and .nav-pills for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-

On the .nav base class:

-
  --#{$prefix}nav-link-padding-x: #{$nav-link-padding-x};
-  --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
-  @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
-  --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
-  --#{$prefix}nav-link-color: #{$nav-link-color};
-  --#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
-  --#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};
-  
-

On the .nav-tabs modifier class:

-
  --#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};
-  --#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
-  --#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};
-  --#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
-  --#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
-  --#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
-  --#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};
-  
-

On the .nav-pills modifier class:

-
  --#{$prefix}nav-pills-border-radius: #{$nav-pills-border-radius};
-  --#{$prefix}nav-pills-link-active-color: #{$nav-pills-link-active-color};
-  --#{$prefix}nav-pills-link-active-bg: #{$nav-pills-link-active-bg};
-  
-Added in v5.3.0 -

On the .nav-underline modifier class:

-
  --#{$prefix}nav-underline-gap: #{$nav-underline-gap};
-  --#{$prefix}nav-underline-border-width: #{$nav-underline-border-width};
-  --#{$prefix}nav-underline-link-active-color: #{$nav-underline-link-active-color};
-  
-

Sass variables

-
$nav-link-padding-y:                .5rem;
-$nav-link-padding-x:                1rem;
-$nav-link-font-size:                null;
-$nav-link-font-weight:              null;
-$nav-link-color:                    var(--#{$prefix}link-color);
-$nav-link-hover-color:              var(--#{$prefix}link-hover-color);
-$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out;
-$nav-link-disabled-color:           var(--#{$prefix}secondary-color);
-$nav-link-focus-box-shadow:         $focus-ring-box-shadow;
-
-$nav-tabs-border-color:             var(--#{$prefix}border-color);
-$nav-tabs-border-width:             var(--#{$prefix}border-width);
-$nav-tabs-border-radius:            var(--#{$prefix}border-radius);
-$nav-tabs-link-hover-border-color:  var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color;
-$nav-tabs-link-active-color:        var(--#{$prefix}emphasis-color);
-$nav-tabs-link-active-bg:           var(--#{$prefix}body-bg);
-$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg;
-
-$nav-pills-border-radius:           var(--#{$prefix}border-radius);
-$nav-pills-link-active-color:       $component-active-color;
-$nav-pills-link-active-bg:          $component-active-bg;
-
-$nav-underline-gap:                 1rem;
-$nav-underline-border-width:        .125rem;
-$nav-underline-link-active-color:   var(--#{$prefix}emphasis-color);
-
-

JavaScript behavior

-

Use the tab JavaScript plugin—include it individually or through the compiled bootstrap.js file—to extend our navigational tabs and pills to create tabbable panes of local content.

-

This is some placeholder content the Home tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Disabled tab's associated content.

-
<ul class="nav nav-tabs" id="myTab" role="tablist">
-  <li class="nav-item" role="presentation">
-    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="true">Home</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-tab-pane" type="button" role="tab" aria-controls="profile-tab-pane" aria-selected="false">Profile</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact-tab-pane" type="button" role="tab" aria-controls="contact-tab-pane" aria-selected="false">Contact</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="disabled-tab" data-bs-toggle="tab" data-bs-target="#disabled-tab-pane" type="button" role="tab" aria-controls="disabled-tab-pane" aria-selected="false" disabled>Disabled</button>
-  </li>
-</ul>
-<div class="tab-content" id="myTabContent">
-  <div class="tab-pane fade show active" id="home-tab-pane" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="profile-tab-pane" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="contact-tab-pane" role="tabpanel" aria-labelledby="contact-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="disabled-tab-pane" role="tabpanel" aria-labelledby="disabled-tab" tabindex="0">...</div>
-</div>
-
-

To help fit your needs, this works with <ul>-based markup, as shown above, or with any arbitrary "roll your own" markup. Note that if you're using <nav>, you shouldn't add role="tablist" directly to it, as this would override the element's native role as a navigation landmark. Instead, switch to an alternative element (in the example below, a simple <div>) and wrap the <nav> around it.

-
-
<nav>
-  <div class="nav nav-tabs" id="nav-tab" role="tablist">
-    <button class="nav-link active" id="nav-home-tab" data-bs-toggle="tab" data-bs-target="#nav-home" type="button" role="tab" aria-controls="nav-home" aria-selected="true">Home</button>
-    <button class="nav-link" id="nav-profile-tab" data-bs-toggle="tab" data-bs-target="#nav-profile" type="button" role="tab" aria-controls="nav-profile" aria-selected="false">Profile</button>
-    <button class="nav-link" id="nav-contact-tab" data-bs-toggle="tab" data-bs-target="#nav-contact" type="button" role="tab" aria-controls="nav-contact" aria-selected="false">Contact</button>
-    <button class="nav-link" id="nav-disabled-tab" data-bs-toggle="tab" data-bs-target="#nav-disabled" type="button" role="tab" aria-controls="nav-disabled" aria-selected="false" disabled>Disabled</button>
-  </div>
-</nav>
-<div class="tab-content" id="nav-tabContent">
-  <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="nav-disabled" role="tabpanel" aria-labelledby="nav-disabled-tab" tabindex="0">...</div>
-</div>
-
-

The tabs plugin also works with pills.

-

This is some placeholder content the Home tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Disabled tab's associated content.

-
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
-  <li class="nav-item" role="presentation">
-    <button class="nav-link active" id="pills-home-tab" data-bs-toggle="pill" data-bs-target="#pills-home" type="button" role="tab" aria-controls="pills-home" aria-selected="true">Home</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="pills-profile-tab" data-bs-toggle="pill" data-bs-target="#pills-profile" type="button" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" data-bs-target="#pills-contact" type="button" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#pills-disabled" type="button" role="tab" aria-controls="pills-disabled" aria-selected="false" disabled>Disabled</button>
-  </li>
-</ul>
-<div class="tab-content" id="pills-tabContent">
-  <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="pills-disabled" role="tabpanel" aria-labelledby="pills-disabled-tab" tabindex="0">...</div>
-</div>
-
-

And with vertical pills. Ideally, for vertical tabs, you should also add aria-orientation="vertical" to the tab list container.

-

This is some placeholder content the Home tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Disabled tab's associated content.

This is some placeholder content the Messages tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Settings tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

-
<div class="d-flex align-items-start">
-  <div class="nav flex-column nav-pills me-3" id="v-pills-tab" role="tablist" aria-orientation="vertical">
-    <button class="nav-link active" id="v-pills-home-tab" data-bs-toggle="pill" data-bs-target="#v-pills-home" type="button" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</button>
-    <button class="nav-link" id="v-pills-profile-tab" data-bs-toggle="pill" data-bs-target="#v-pills-profile" type="button" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</button>
-    <button class="nav-link" id="v-pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#v-pills-disabled" type="button" role="tab" aria-controls="v-pills-disabled" aria-selected="false" disabled>Disabled</button>
-    <button class="nav-link" id="v-pills-messages-tab" data-bs-toggle="pill" data-bs-target="#v-pills-messages" type="button" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</button>
-    <button class="nav-link" id="v-pills-settings-tab" data-bs-toggle="pill" data-bs-target="#v-pills-settings" type="button" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</button>
-  </div>
-  <div class="tab-content" id="v-pills-tabContent">
-    <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab" tabindex="0">...</div>
-    <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab" tabindex="0">...</div>
-    <div class="tab-pane fade" id="v-pills-disabled" role="tabpanel" aria-labelledby="v-pills-disabled-tab" tabindex="0">...</div>
-    <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab" tabindex="0">...</div>
-    <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab" tabindex="0">...</div>
-  </div>
-</div>
-
-

Accessibility

-

Dynamic tabbed interfaces, as described in the ARIA Authoring Practices Guide tabs pattern, require role="tablist", role="tab", role="tabpanel", and additional aria- attributes in order to convey their structure, functionality, and current state to users of assistive technologies (such as screen readers). As a best practice, we recommend using <button> elements for the tabs, as these are controls that trigger a dynamic change, rather than links that navigate to a new page or location.

-

In line with the ARIA Authoring Practices pattern, only the currently active tab receives keyboard focus. When the JavaScript plugin is initialized, it will set tabindex="-1" on all inactive tab controls. Once the currently active tab has focus, the cursor keys activate the previous/next tab. The Home and End keys activate the first and last tabs, respectively. The plugin will change the roving tabindex accordingly. However, note that the JavaScript plugin does not distinguish between horizontal and vertical tab lists when it comes to cursor key interactions: regardless of the tab list's orientation, both the up and left cursor go to the previous tab, and down and right cursor go to the next tab.

-

In general, to facilitate keyboard navigation, it's recommended to make the tab panels themselves focusable as well, unless the first element containing meaningful content inside the tab panel is already focusable. The JavaScript plugin does not try to handle this aspect—where appropriate, you'll need to explicitly make your tab panels focusable by adding tabindex="0" in your markup.

-

The tab JavaScript plugin does not support tabbed interfaces that contain dropdown menus, as these cause both usability and accessibility issues. From a usability perspective, the fact that the currently displayed tab's trigger element is not immediately visible (as it's inside the closed dropdown menu) can cause confusion. From an accessibility point of view, there is currently no sensible way to map this sort of construct to a standard WAI ARIA pattern, meaning that it cannot be easily made understandable to users of assistive technologies.

-

Using data attributes

-

You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-bs-toggle="tab" or data-bs-toggle="pill" on an element. Use these data attributes on .nav-tabs or .nav-pills.

-
<!-- Nav tabs -->
-<ul class="nav nav-tabs" id="myTab" role="tablist">
-  <li class="nav-item" role="presentation">
-    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="messages-tab" data-bs-toggle="tab" data-bs-target="#messages" type="button" role="tab" aria-controls="messages" aria-selected="false">Messages</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link" id="settings-tab" data-bs-toggle="tab" data-bs-target="#settings" type="button" role="tab" aria-controls="settings" aria-selected="false">Settings</button>
-  </li>
-</ul>
-
-<!-- Tab panes -->
-<div class="tab-content">
-  <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
-  <div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
-  <div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div>
-  <div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div>
-</div>
-
-

Via JavaScript

-

Enable tabbable tabs via JavaScript (each tab needs to be activated individually):

-
const triggerTabList = document.querySelectorAll('#myTab button')
-triggerTabList.forEach(triggerEl => {
-  const tabTrigger = new bootstrap.Tab(triggerEl)
-
-  triggerEl.addEventListener('click', event => {
-    event.preventDefault()
-    tabTrigger.show()
-  })
-})
-
-

You can activate individual tabs in several ways:

-
const triggerEl = document.querySelector('#myTab button[data-bs-target="#profile"]')
-bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
-
-const triggerFirstTabEl = document.querySelector('#myTab li:first-child button')
-bootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab
-
-

Fade effect

-

To make tabs fade in, add .fade to each .tab-pane. The first tab pane must also have .show to make the initial content visible.

-
<div class="tab-content">
-  <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div>
-  <div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div>
-</div>
-
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-

Activates your content as a tab element.

-

You can create a tab instance with the constructor, for example:

-
const bsTab = new bootstrap.Tab('#myTab')
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's tab.
getInstanceStatic method which allows you to get the tab instance associated with a DOM element, you can use it like this: bootstrap.Tab.getInstance(element).
getOrCreateInstanceStatic method which returns a tab instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: bootstrap.Tab.getOrCreateInstance(element).
showSelects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. Returns to the caller before the tab pane has actually been shown (i.e. before the shown.bs.tab event occurs).
-

Events

-

When showing a new tab, the events fire in the following order:

-
    -
  1. hide.bs.tab (on the current active tab)
  2. -
  3. show.bs.tab (on the to-be-shown tab)
  4. -
  5. hidden.bs.tab (on the previous active tab, the same one as for the hide.bs.tab event)
  6. -
  7. shown.bs.tab (on the newly-active just-shown tab, the same one as for the show.bs.tab event)
  8. -
-

If no tab was already active, then the hide.bs.tab and hidden.bs.tab events will not be fired.

-
- - - - - - - - - - - - - - - - - - - - - - - - -
Event typeDescription
hide.bs.tabThis event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use event.target and event.relatedTarget to target the current active tab and the new soon-to-be-active tab, respectively.
hidden.bs.tabThis event fires after a new tab is shown (and thus the previous active tab is hidden). Use event.target and event.relatedTarget to target the previous active tab and the new active tab, respectively.
show.bs.tabThis event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
shown.bs.tabThis event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
-
const tabEl = document.querySelector('button[data-bs-toggle="tab"]')
-tabEl.addEventListener('shown.bs.tab', event => {
-  event.target // newly activated tab
-  event.relatedTarget // previous active tab
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/navs/index.html b/site/dist/docs/5.3/components/navs/index.html deleted file mode 100644 index 8bd8fa4562..0000000000 --- a/site/dist/docs/5.3/components/navs/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/components/offcanvas/index.html b/site/dist/docs/5.3/components/offcanvas/index.html deleted file mode 100644 index c5ed61c373..0000000000 --- a/site/dist/docs/5.3/components/offcanvas/index.html +++ /dev/null @@ -1,498 +0,0 @@ - Offcanvas · Bootstrap v5.3

Build hidden sidebars into your project for navigation, shopping carts, and more with a few classes and our JavaScript plugin.

How it works

-

Offcanvas is a sidebar component that can be toggled via JavaScript to appear from the left, right, top, or bottom edge of the viewport. Buttons or anchors are used as triggers that are attached to specific elements you toggle, and data attributes are used to invoke our JavaScript.

-
    -
  • Offcanvas shares some of the same JavaScript code as modals. Conceptually, they are quite similar, but they are separate plugins.
  • -
  • Similarly, some source Sass variables for offcanvas's styles and dimensions are inherited from the modal's variables.
  • -
  • When shown, offcanvas includes a default backdrop that can be clicked to hide the offcanvas.
  • -
  • Similar to modals, only one offcanvas can be shown at a time.
  • -
-

Heads up! Given how CSS handles animations, you cannot use margin or translate on an .offcanvas element. Instead, use the class as an independent wrapping element.

-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Examples

-

Offcanvas components

-

Below is an offcanvas example that is shown by default (via .show on .offcanvas). Offcanvas includes support for a header with a close button and an optional body class for some initial padding. We suggest that you include offcanvas headers with dismiss actions whenever possible, or provide an explicit dismiss action.

-
-
-
Offcanvas
- -
-
- Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here. -
-
html
<div class="offcanvas offcanvas-start show" tabindex="-1" id="offcanvas" aria-labelledby="offcanvasLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasLabel">Offcanvas</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here.
-</div>
-</div>
-

Live demo

-

Use the buttons below to show and hide an offcanvas element via JavaScript that toggles the .show class on an element with the .offcanvas class.

-
    -
  • .offcanvas hides content (default)
  • -
  • .offcanvas.show shows content
  • -
-

You can use a link with the href attribute, or a button with the data-bs-target attribute. In both cases, the data-bs-toggle="offcanvas" is required.

-
-Link with href - - - -
-
-
Offcanvas
- -
-
-
- Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc. -
- -
-
html
<a class="btn btn-primary" data-bs-toggle="offcanvas" href="#offcanvasExample" role="button" aria-controls="offcanvasExample">
-Link with href
-</a>
-<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasExample" aria-controls="offcanvasExample">
-Button with data-bs-target
-</button>
-
-<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasExample" aria-labelledby="offcanvasExampleLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasExampleLabel">Offcanvas</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  <div class="">
-    Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
-  </div>
-  <div class="dropdown mt-3">
-    <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
-      Dropdown button
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-    </ul>
-  </div>
-</div>
-</div>
-

Body scrolling

-

Scrolling the <body> element is disabled when an offcanvas and its backdrop are visible. Use the data-bs-scroll attribute to enable <body> scrolling.

-
- -
-
-
Offcanvas with body scrolling
- -
-
-

Try scrolling the rest of the page to see this option in action.

-
-
html
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling" aria-controls="offcanvasScrolling">Enable body scrolling</button>
-
-<div class="offcanvas offcanvas-start" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling" aria-labelledby="offcanvasScrollingLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasScrollingLabel">Offcanvas with body scrolling</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  <p>Try scrolling the rest of the page to see this option in action.</p>
-</div>
-</div>
-

Body scrolling and backdrop

-

You can also enable <body> scrolling with a visible backdrop.

-
- -
-
-
Backdrop with scrolling
- -
-
-

Try scrolling the rest of the page to see this option in action.

-
-
html
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBothOptions" aria-controls="offcanvasWithBothOptions">Enable both scrolling & backdrop</button>
-
-<div class="offcanvas offcanvas-start" data-bs-scroll="true" tabindex="-1" id="offcanvasWithBothOptions" aria-labelledby="offcanvasWithBothOptionsLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel">Backdrop with scrolling</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  <p>Try scrolling the rest of the page to see this option in action.</p>
-</div>
-</div>
-

Static backdrop

-

When backdrop is set to static, the offcanvas will not close when clicking outside of it.

-
- -
-
-
Offcanvas
- -
-
-
- I will not close if you click outside of me. -
-
-
html
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#staticBackdrop" aria-controls="staticBackdrop">
-Toggle static offcanvas
-</button>
-
-<div class="offcanvas offcanvas-start" data-bs-backdrop="static" tabindex="-1" id="staticBackdrop" aria-labelledby="staticBackdropLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="staticBackdropLabel">Offcanvas</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  <div>
-    I will not close if you click outside of me.
-  </div>
-</div>
-</div>
-

Dark offcanvas

- -Deprecated in v5.3.0 -Added in v5.2.0 -

Change the appearance of offcanvases with utilities to better match them to different contexts like dark navbars. Here we add .text-bg-dark to the .offcanvas and .btn-close-white to .btn-close for proper styling with a dark offcanvas. If you have dropdowns within, consider also adding .dropdown-menu-dark to .dropdown-menu.

-

Heads up! Dark variants for components were deprecated in v5.3.0 with the introduction of color modes. Instead of manually adding classes mentioned above, set data-bs-theme="dark" on the root element, a parent wrapper, or the component itself.

-
-
-
Offcanvas
- -
-
-

Place offcanvas content here.

-
-
html
<div class="offcanvas offcanvas-start show text-bg-dark" tabindex="-1" id="offcanvasDark" aria-labelledby="offcanvasDarkLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasDarkLabel">Offcanvas</h5>
-  <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvasDark" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  <p>Place offcanvas content here.</p>
-</div>
-</div>
-

Responsive

-Added in v5.2.0 -

Responsive offcanvas classes hide content outside the viewport from a specified breakpoint and down. Above that breakpoint, the contents within will behave as usual. For example, .offcanvas-lg hides content in an offcanvas below the lg breakpoint, but shows the content above the lg breakpoint.

-
- -
Resize your browser to show the responsive offcanvas toggle.
- -
-
-
Responsive offcanvas
- -
-
-

This is content within an .offcanvas-lg.

-
-
html
<button class="btn btn-primary d-lg-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasResponsive" aria-controls="offcanvasResponsive">Toggle offcanvas</button>
-
-<div class="alert alert-info d-none d-lg-block">Resize your browser to show the responsive offcanvas toggle.</div>
-
-<div class="offcanvas-lg offcanvas-end" tabindex="-1" id="offcanvasResponsive" aria-labelledby="offcanvasResponsiveLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasResponsiveLabel">Responsive offcanvas</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#offcanvasResponsive" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  <p class="mb-0">This is content within an <code>.offcanvas-lg</code>.</p>
-</div>
-</div>
-

Responsive offcanvas classes are available across for each breakpoint.

-
    -
  • .offcanvas
  • -
  • .offcanvas-sm
  • -
  • .offcanvas-md
  • -
  • .offcanvas-lg
  • -
  • .offcanvas-xl
  • -
  • .offcanvas-xxl
  • -
-

Placement

-

There's no default placement for offcanvas components, so you must add one of the modifier classes below.

-
    -
  • .offcanvas-start places offcanvas on the left of the viewport (shown above)
  • -
  • .offcanvas-end places offcanvas on the right of the viewport
  • -
  • .offcanvas-top places offcanvas on the top of the viewport
  • -
  • .offcanvas-bottom places offcanvas on the bottom of the viewport
  • -
-

Try the top, right, and bottom examples out below.

-
- -
-
-
Offcanvas top
- -
-
- ... -
-
html
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop" aria-controls="offcanvasTop">Toggle top offcanvas</button>
-
-<div class="offcanvas offcanvas-top" tabindex="-1" id="offcanvasTop" aria-labelledby="offcanvasTopLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasTopLabel">Offcanvas top</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  ...
-</div>
-</div>
-
- -
-
-
Offcanvas right
- -
-
- ... -
-
html
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">Toggle right offcanvas</button>
-
-<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasRightLabel">Offcanvas right</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body">
-  ...
-</div>
-</div>
-
- -
-
-
Offcanvas bottom
- -
-
- ... -
-
html
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasBottom" aria-controls="offcanvasBottom">Toggle bottom offcanvas</button>
-
-<div class="offcanvas offcanvas-bottom" tabindex="-1" id="offcanvasBottom" aria-labelledby="offcanvasBottomLabel">
-<div class="offcanvas-header">
-  <h5 class="offcanvas-title" id="offcanvasBottomLabel">Offcanvas bottom</h5>
-  <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
-</div>
-<div class="offcanvas-body small">
-  ...
-</div>
-</div>
-

Accessibility

-

Since the offcanvas panel is conceptually a modal dialog, be sure to add aria-labelledby="..."—referencing the offcanvas title—to .offcanvas. Note that you don’t need to add role="dialog" since we already add it via JavaScript.

-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, offcanvas now uses local CSS variables on .offcanvas for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};
-  --#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};
-  --#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};
-  --#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};
-  --#{$prefix}offcanvas-padding-y: #{$offcanvas-padding-y};
-  --#{$prefix}offcanvas-color: #{$offcanvas-color};
-  --#{$prefix}offcanvas-bg: #{$offcanvas-bg-color};
-  --#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};
-  --#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};
-  --#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};
-  --#{$prefix}offcanvas-transition: #{transform $offcanvas-transition-duration ease-in-out};
-  --#{$prefix}offcanvas-title-line-height: #{$offcanvas-title-line-height};
-  
-

Sass variables

-
$offcanvas-padding-y:               $modal-inner-padding;
-$offcanvas-padding-x:               $modal-inner-padding;
-$offcanvas-horizontal-width:        400px;
-$offcanvas-vertical-height:         30vh;
-$offcanvas-transition-duration:     .3s;
-$offcanvas-border-color:            $modal-content-border-color;
-$offcanvas-border-width:            $modal-content-border-width;
-$offcanvas-title-line-height:       $modal-title-line-height;
-$offcanvas-bg-color:                var(--#{$prefix}body-bg);
-$offcanvas-color:                   var(--#{$prefix}body-color);
-$offcanvas-box-shadow:              $modal-content-box-shadow-xs;
-$offcanvas-backdrop-bg:             $modal-backdrop-bg;
-$offcanvas-backdrop-opacity:        $modal-backdrop-opacity;
-
-

Usage

-

The offcanvas plugin utilizes a few classes and attributes to handle the heavy lifting:

-
    -
  • .offcanvas hides the content
  • -
  • .offcanvas.show shows the content
  • -
  • .offcanvas-start hides the offcanvas on the left
  • -
  • .offcanvas-end hides the offcanvas on the right
  • -
  • .offcanvas-top hides the offcanvas on the top
  • -
  • .offcanvas-bottom hides the offcanvas on the bottom
  • -
-

Add a dismiss button with the data-bs-dismiss="offcanvas" attribute, which triggers the JavaScript functionality. Be sure to use the <button> element with it for proper behavior across all devices.

-

Via data attributes

-

Toggle

-

Add data-bs-toggle="offcanvas" and a data-bs-target or href to the element to automatically assign control of one offcanvas element. The data-bs-target attribute accepts a CSS selector to apply the offcanvas to. Be sure to add the class offcanvas to the offcanvas element. If you'd like it to default open, add the additional class show.

-

Dismiss

-

-Dismissal can be achieved with the data-bs-dismiss attribute on a button within the offcanvas as demonstrated below: -

<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>

-or on a button outside the offcanvas using the additional data-bs-target as demonstrated below: -

<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
-

While both ways to dismiss an offcanvas are supported, keep in mind that dismissing from outside an offcanvas does not match the ARIA Authoring Practices Guide dialog (modal) pattern. Do this at your own risk.

-

Via JavaScript

-

Enable manually with:

-
const offcanvasElementList = document.querySelectorAll('.offcanvas')
-const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
-
-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
backdropboolean or the string statictrueApply a backdrop on body while offcanvas is open. Alternatively, specify static for a backdrop which doesn't close the offcanvas when clicked.
keyboardbooleantrueCloses the offcanvas when escape key is pressed.
scrollbooleanfalseAllow body scrolling while offcanvas is open.
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-

Activates your content as an offcanvas element. Accepts an optional options object.

-

You can create an offcanvas instance with the constructor, for example:

-
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's offcanvas.
getInstanceStatic method which allows you to get the offcanvas instance associated with a DOM element.
getOrCreateInstanceStatic method which allows you to get the offcanvas instance associated with a DOM element, or create a new one in case it wasn't initialized.
hideHides an offcanvas element. Returns to the caller before the offcanvas element has actually been hidden (i.e. before the hidden.bs.offcanvas event occurs).
showShows an offcanvas element. Returns to the caller before the offcanvas element has actually been shown (i.e. before the shown.bs.offcanvas event occurs).
toggleToggles an offcanvas element to shown or hidden. Returns to the caller before the offcanvas element has actually been shown or hidden (i.e. before the shown.bs.offcanvas or hidden.bs.offcanvas event occurs).
-

Events

-

Bootstrap's offcanvas class exposes a few events for hooking into offcanvas functionality.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Event typeDescription
hide.bs.offcanvasThis event is fired immediately when the hide method has been called.
hidden.bs.offcanvasThis event is fired when an offcanvas element has been hidden from the user (will wait for CSS transitions to complete).
hidePrevented.bs.offcanvasThis event is fired when the offcanvas is shown, its backdrop is static and a click outside of the offcanvas is performed. The event is also fired when the escape key is pressed and the keyboard option is set to false.
show.bs.offcanvasThis event fires immediately when the show instance method is called.
shown.bs.offcanvasThis event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to complete).
-
const myOffcanvas = document.getElementById('myOffcanvas')
-myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
-  // do something...
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/pagination/index.html b/site/dist/docs/5.3/components/pagination/index.html deleted file mode 100644 index 0a55db01b6..0000000000 --- a/site/dist/docs/5.3/components/pagination/index.html +++ /dev/null @@ -1,304 +0,0 @@ - Pagination · Bootstrap v5.3

Pagination

Documentation and examples for showing pagination to indicate a series of related content exists across multiple pages.

Overview

-

We use a large block of connected links for our pagination, making links hard to miss and easily scalable—all while providing large hit areas. Pagination is built with list HTML elements so screen readers can announce the number of available links. Use a wrapping <nav> element to identify it as a navigation section to screen readers and other assistive technologies.

-

In addition, as pages likely have more than one such navigation section, it's advisable to provide a descriptive aria-label for the <nav> to reflect its purpose. For example, if the pagination component is used to navigate between a set of search results, an appropriate label could be aria-label="Search results pages".

-
html
<nav aria-label="Page navigation example">
-<ul class="pagination">
-  <li class="page-item"><a class="page-link" href="#">Previous</a></li>
-  <li class="page-item"><a class="page-link" href="#">1</a></li>
-  <li class="page-item"><a class="page-link" href="#">2</a></li>
-  <li class="page-item"><a class="page-link" href="#">3</a></li>
-  <li class="page-item"><a class="page-link" href="#">Next</a></li>
-</ul>
-</nav>
-

Working with icons

-

Looking to use an icon or symbol in place of text for some pagination links? Be sure to provide proper screen reader support with aria attributes.

-
html
<nav aria-label="Page navigation example">
-<ul class="pagination">
-  <li class="page-item">
-    <a class="page-link" href="#" aria-label="Previous">
-      <span aria-hidden="true">&laquo;</span>
-    </a>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">1</a></li>
-  <li class="page-item"><a class="page-link" href="#">2</a></li>
-  <li class="page-item"><a class="page-link" href="#">3</a></li>
-  <li class="page-item">
-    <a class="page-link" href="#" aria-label="Next">
-      <span aria-hidden="true">&raquo;</span>
-    </a>
-  </li>
-</ul>
-</nav>
-

Disabled and active states

-

Pagination links are customizable for different circumstances. Use .disabled for links that appear un-clickable and .active to indicate the current page.

-

While the .disabled class uses pointer-events: none to try to disable the link functionality of <a>s, that CSS property is not yet standardized and doesn't account for keyboard navigation. As such, you should always add tabindex="-1" on disabled links and use custom JavaScript to fully disable their functionality.

-
html
<nav aria-label="...">
-<ul class="pagination">
-  <li class="page-item disabled">
-    <a class="page-link">Previous</a>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">1</a></li>
-  <li class="page-item active" aria-current="page">
-    <a class="page-link" href="#">2</a>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">3</a></li>
-  <li class="page-item">
-    <a class="page-link" href="#">Next</a>
-  </li>
-</ul>
-</nav>
-

You can optionally swap out active or disabled anchors for <span>, or omit the anchor in the case of the prev/next arrows, to remove click functionality and prevent keyboard focus while retaining intended styles.

-
html
<nav aria-label="...">
-<ul class="pagination">
-  <li class="page-item disabled">
-    <span class="page-link">Previous</span>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">1</a></li>
-  <li class="page-item active" aria-current="page">
-    <span class="page-link">2</span>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">3</a></li>
-  <li class="page-item">
-    <a class="page-link" href="#">Next</a>
-  </li>
-</ul>
-</nav>
-

Sizing

-

Fancy larger or smaller pagination? Add .pagination-lg or .pagination-sm for additional sizes.

-
html
<nav aria-label="...">
-<ul class="pagination pagination-lg">
-  <li class="page-item active" aria-current="page">
-    <span class="page-link">1</span>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">2</a></li>
-  <li class="page-item"><a class="page-link" href="#">3</a></li>
-</ul>
-</nav>
-
html
<nav aria-label="...">
-<ul class="pagination pagination-sm">
-  <li class="page-item active" aria-current="page">
-    <span class="page-link">1</span>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">2</a></li>
-  <li class="page-item"><a class="page-link" href="#">3</a></li>
-</ul>
-</nav>
-

Alignment

-

Change the alignment of pagination components with flexbox utilities. For example, with .justify-content-center:

-
html
<nav aria-label="Page navigation example">
-<ul class="pagination justify-content-center">
-  <li class="page-item disabled">
-    <a class="page-link">Previous</a>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">1</a></li>
-  <li class="page-item"><a class="page-link" href="#">2</a></li>
-  <li class="page-item"><a class="page-link" href="#">3</a></li>
-  <li class="page-item">
-    <a class="page-link" href="#">Next</a>
-  </li>
-</ul>
-</nav>
-

Or with .justify-content-end:

-
html
<nav aria-label="Page navigation example">
-<ul class="pagination justify-content-end">
-  <li class="page-item disabled">
-    <a class="page-link">Previous</a>
-  </li>
-  <li class="page-item"><a class="page-link" href="#">1</a></li>
-  <li class="page-item"><a class="page-link" href="#">2</a></li>
-  <li class="page-item"><a class="page-link" href="#">3</a></li>
-  <li class="page-item">
-    <a class="page-link" href="#">Next</a>
-  </li>
-</ul>
-</nav>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, pagination now uses local CSS variables on .pagination for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}pagination-padding-x: #{$pagination-padding-x};
-  --#{$prefix}pagination-padding-y: #{$pagination-padding-y};
-  @include rfs($pagination-font-size, --#{$prefix}pagination-font-size);
-  --#{$prefix}pagination-color: #{$pagination-color};
-  --#{$prefix}pagination-bg: #{$pagination-bg};
-  --#{$prefix}pagination-border-width: #{$pagination-border-width};
-  --#{$prefix}pagination-border-color: #{$pagination-border-color};
-  --#{$prefix}pagination-border-radius: #{$pagination-border-radius};
-  --#{$prefix}pagination-hover-color: #{$pagination-hover-color};
-  --#{$prefix}pagination-hover-bg: #{$pagination-hover-bg};
-  --#{$prefix}pagination-hover-border-color: #{$pagination-hover-border-color};
-  --#{$prefix}pagination-focus-color: #{$pagination-focus-color};
-  --#{$prefix}pagination-focus-bg: #{$pagination-focus-bg};
-  --#{$prefix}pagination-focus-box-shadow: #{$pagination-focus-box-shadow};
-  --#{$prefix}pagination-active-color: #{$pagination-active-color};
-  --#{$prefix}pagination-active-bg: #{$pagination-active-bg};
-  --#{$prefix}pagination-active-border-color: #{$pagination-active-border-color};
-  --#{$prefix}pagination-disabled-color: #{$pagination-disabled-color};
-  --#{$prefix}pagination-disabled-bg: #{$pagination-disabled-bg};
-  --#{$prefix}pagination-disabled-border-color: #{$pagination-disabled-border-color};
-  
-

Sass variables

-
$pagination-padding-y:              .375rem;
-$pagination-padding-x:              .75rem;
-$pagination-padding-y-sm:           .25rem;
-$pagination-padding-x-sm:           .5rem;
-$pagination-padding-y-lg:           .75rem;
-$pagination-padding-x-lg:           1.5rem;
-
-$pagination-font-size:              $font-size-base;
-
-$pagination-color:                  var(--#{$prefix}link-color);
-$pagination-bg:                     var(--#{$prefix}body-bg);
-$pagination-border-radius:          var(--#{$prefix}border-radius);
-$pagination-border-width:           var(--#{$prefix}border-width);
-$pagination-margin-start:           calc(-1 * #{$pagination-border-width}); // stylelint-disable-line function-disallowed-list
-$pagination-border-color:           var(--#{$prefix}border-color);
-
-$pagination-focus-color:            var(--#{$prefix}link-hover-color);
-$pagination-focus-bg:               var(--#{$prefix}secondary-bg);
-$pagination-focus-box-shadow:       $focus-ring-box-shadow;
-$pagination-focus-outline:          0;
-
-$pagination-hover-color:            var(--#{$prefix}link-hover-color);
-$pagination-hover-bg:               var(--#{$prefix}tertiary-bg);
-$pagination-hover-border-color:     var(--#{$prefix}border-color); // Todo in v6: remove this?
-
-$pagination-active-color:           $component-active-color;
-$pagination-active-bg:              $component-active-bg;
-$pagination-active-border-color:    $component-active-bg;
-
-$pagination-disabled-color:         var(--#{$prefix}secondary-color);
-$pagination-disabled-bg:            var(--#{$prefix}secondary-bg);
-$pagination-disabled-border-color:  var(--#{$prefix}border-color);
-
-$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
-
-$pagination-border-radius-sm:       var(--#{$prefix}border-radius-sm);
-$pagination-border-radius-lg:       var(--#{$prefix}border-radius-lg);
-
-

Sass mixins

-
@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {
-  --#{$prefix}pagination-padding-x: #{$padding-x};
-  --#{$prefix}pagination-padding-y: #{$padding-y};
-  @include rfs($font-size, --#{$prefix}pagination-font-size);
-  --#{$prefix}pagination-border-radius: #{$border-radius};
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/placeholders/index.html b/site/dist/docs/5.3/components/placeholders/index.html deleted file mode 100644 index 0bb24e044d..0000000000 --- a/site/dist/docs/5.3/components/placeholders/index.html +++ /dev/null @@ -1,127 +0,0 @@ - Placeholders · Bootstrap v5.3
-Added in v5.1 -View on GitHub -

Placeholders

Use loading placeholders for your components or pages to indicate something may still be loading.

About

-

Placeholders can be used to enhance the experience of your application. They're built only with HTML and CSS, meaning you don't need any JavaScript to create them. You will, however, need some custom JavaScript to toggle their visibility. Their appearance, color, and sizing can be easily customized with our utility classes.

-

Example

-

In the example below, we take a typical card component and recreate it with placeholders applied to create a "loading card". Size and proportions are the same between the two.

-
Placeholder
Card title

Some quick example text to build on the card title and make up the bulk of the card's content.

Go somewhere
-
<div class="card">
-  <img src="..." class="card-img-top" alt="...">
-
-  <div class="card-body">
-    <h5 class="card-title">Card title</h5>
-    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-    <a href="#" class="btn btn-primary">Go somewhere</a>
-  </div>
-</div>
-
-<div class="card" aria-hidden="true">
-  <img src="..." class="card-img-top" alt="...">
-  <div class="card-body">
-    <h5 class="card-title placeholder-glow">
-      <span class="placeholder col-6"></span>
-    </h5>
-    <p class="card-text placeholder-glow">
-      <span class="placeholder col-7"></span>
-      <span class="placeholder col-4"></span>
-      <span class="placeholder col-4"></span>
-      <span class="placeholder col-6"></span>
-      <span class="placeholder col-8"></span>
-    </p>
-    <a class="btn btn-primary disabled placeholder col-6" aria-disabled="true"></a>
-  </div>
-</div>
-
-

How it works

-

Create placeholders with the .placeholder class and a grid column class (e.g., .col-6) to set the width. They can replace the text inside an element or be added as a modifier class to an existing component.

-

We apply additional styling to .btns via ::before to ensure the height is respected. You may extend this pattern for other situations as needed, or add a &nbsp; within the element to reflect the height when actual text is rendered in its place.

-
- -
html
<p aria-hidden="true">
-<span class="placeholder col-6"></span>
-</p>
-
-<a class="btn btn-primary disabled placeholder col-4" aria-disabled="true"></a>
-

The use of aria-hidden="true" only indicates that the element should be hidden to screen readers. The loading behavior of the placeholder depends on how authors will actually use the placeholder styles, how they plan to update things, etc. Some JavaScript code may be needed to swap the state of the placeholder and inform AT users of the update.

-

Width

-

You can change the width through grid column classes, width utilities, or inline styles.

-
- -
html
<span class="placeholder col-6"></span>
-<span class="placeholder w-75"></span>
-<span class="placeholder" style="width: 25%;"></span>
-

Color

-

By default, the placeholder uses currentColor. This can be overridden with a custom color or utility class.

-
- - - - - - - - -
html
<span class="placeholder col-12"></span>
-
-<span class="placeholder col-12 bg-primary"></span>
-<span class="placeholder col-12 bg-secondary"></span>
-<span class="placeholder col-12 bg-success"></span>
-<span class="placeholder col-12 bg-danger"></span>
-<span class="placeholder col-12 bg-warning"></span>
-<span class="placeholder col-12 bg-info"></span>
-<span class="placeholder col-12 bg-light"></span>
-<span class="placeholder col-12 bg-dark"></span>
-

Sizing

-

The size of .placeholders are based on the typographic style of the parent element. Customize them with sizing modifiers: .placeholder-lg, .placeholder-sm, or .placeholder-xs.

-
- - -
html
<span class="placeholder col-12 placeholder-lg"></span>
-<span class="placeholder col-12"></span>
-<span class="placeholder col-12 placeholder-sm"></span>
-<span class="placeholder col-12 placeholder-xs"></span>
-

Animation

-

Animate placeholders with .placeholder-glow or .placeholder-wave to better convey the perception of something being actively loaded.

-

- -

- -

- -

html
<p class="placeholder-glow">
-<span class="placeholder col-12"></span>
-</p>
-
-<p class="placeholder-wave">
-<span class="placeholder col-12"></span>
-</p>
-

CSS

-

Sass variables

-
$placeholder-opacity-max:           .5;
-$placeholder-opacity-min:           .2;
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/popovers/index.html b/site/dist/docs/5.3/components/popovers/index.html deleted file mode 100644 index b13c32468d..0000000000 --- a/site/dist/docs/5.3/components/popovers/index.html +++ /dev/null @@ -1,422 +0,0 @@ - Popovers · Bootstrap v5.3

Documentation and examples for adding Bootstrap popovers, like those found in iOS, to any element on your site.

Overview

-

Things to know when using the popover plugin:

-
    -
  • Popovers rely on the third party library Popper for positioning. You must include popper.min.js before bootstrap.js, or use one bootstrap.bundle.min.js which contains Popper.
  • -
  • Popovers require the popover plugin as a dependency.
  • -
  • Popovers are opt-in for performance reasons, so you must initialize them yourself.
  • -
  • Zero-length title and content values will never show a popover.
  • -
  • Specify container: 'body' to avoid rendering problems in more complex components (like our input groups, button groups, etc).
  • -
  • Triggering popovers on hidden elements will not work.
  • -
  • Popovers for .disabled or disabled elements must be triggered on a wrapper element.
  • -
  • When triggered from anchors that wrap across multiple lines, popovers will be centered between the anchors' overall width. Use .text-nowrap on your <a>s to avoid this behavior.
  • -
  • Popovers must be hidden before their corresponding elements have been removed from the DOM.
  • -
  • Popovers can be triggered thanks to an element inside a shadow DOM.
  • -
-

By default, this component uses the built-in content sanitizer, which strips out any HTML elements that are not explicitly allowed. See the sanitizer section in our JavaScript documentation for more details.

-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Keep reading to see how popovers work with some examples.

-

Examples

-

Enable popovers

-

As mentioned above, you must initialize popovers before they can be used. One way to initialize all popovers on a page would be to select them by their data-bs-toggle attribute, like so:

-
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
-const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))
-
-

Live demo

-

We use JavaScript similar to the snippet above to render the following live popover. Titles are set via data-bs-title and body content is set via data-bs-content.

-

Feel free to use either title or data-bs-title in your HTML. When title is used, Popper will replace it automatically with data-bs-title when the element is rendered.

-
html
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" data-bs-title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
-

Four directions

-

Four options are available: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL. Set data-bs-placement to change the direction.

-
- - -
html
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="Top popover">
-Popover on top
-</button>
-<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="Right popover">
-Popover on right
-</button>
-<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover">
-Popover on bottom
-</button>
-<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="Left popover">
-Popover on left
-</button>
-

Custom container

-

When you have some styles on a parent element that interfere with a popover, you'll want to specify a custom container so that the popover's HTML appears within that element instead. This is common in responsive tables, input groups, and the like.

-
const popover = new bootstrap.Popover('.example-popover', {
-  container: 'body'
-})
-
-

Another situation where you'll want to set an explicit custom container are popovers inside a modal dialog, to make sure that the popover itself is appended to the modal. This is particularly important for popovers that contain interactive elements – modal dialogs will trap focus, so unless the popover is a child element of the modal, users won't be able to focus or activate these interactive elements.

-
const popover = new bootstrap.Popover('.example-popover', {
-  container: '.modal-body'
-})
-
-

Custom popovers

-Added in v5.2.0 -

You can customize the appearance of popovers using CSS variables. We set a custom class with data-bs-custom-class="custom-popover" to scope our custom appearance and use it to override some of the local CSS variables.

-
.custom-popover {
-  --bs-popover-max-width: 200px;
-  --bs-popover-border-color: var(--bd-violet-bg);
-  --bs-popover-header-bg: var(--bd-violet-bg);
-  --bs-popover-header-color: var(--bs-white);
-  --bs-popover-body-padding-x: 1rem;
-  --bs-popover-body-padding-y: .5rem;
-}
-
-
html
<button type="button" class="btn btn-secondary"
-      data-bs-toggle="popover" data-bs-placement="right"
-      data-bs-custom-class="custom-popover"
-      data-bs-title="Custom popover"
-      data-bs-content="This popover is themed via CSS variables.">
-Custom popover
-</button>
-

Dismiss on next click

-

Use the focus trigger to dismiss popovers on the user's next click of an element other than the toggle element.

-

Dismissing on next click requires specific HTML for proper cross-browser and cross-platform behavior. You can only use <a> elements, not <button>s, and you must include a tabindex.

-
html
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" data-bs-title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
-
const popover = new bootstrap.Popover('.popover-dismiss', {
-  trigger: 'focus'
-})
-
-

Disabled elements

-

Elements with the disabled attribute aren't interactive, meaning users cannot hover or click them to trigger a popover (or tooltip). As a workaround, you'll want to trigger the popover from a wrapper <div> or <span>, ideally made keyboard-focusable using tabindex="0".

-

For disabled popover triggers, you may also prefer data-bs-trigger="hover focus" so that the popover appears as immediate visual feedback to your users as they may not expect to click on a disabled element.

-
- -
html
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="Disabled popover">
-<button class="btn btn-primary" type="button" disabled>Disabled button</button>
-</span>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap’s evolving CSS variables approach, popovers now use local CSS variables on .popover for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}popover-zindex: #{$zindex-popover};
-  --#{$prefix}popover-max-width: #{$popover-max-width};
-  @include rfs($popover-font-size, --#{$prefix}popover-font-size);
-  --#{$prefix}popover-bg: #{$popover-bg};
-  --#{$prefix}popover-border-width: #{$popover-border-width};
-  --#{$prefix}popover-border-color: #{$popover-border-color};
-  --#{$prefix}popover-border-radius: #{$popover-border-radius};
-  --#{$prefix}popover-inner-border-radius: #{$popover-inner-border-radius};
-  --#{$prefix}popover-box-shadow: #{$popover-box-shadow};
-  --#{$prefix}popover-header-padding-x: #{$popover-header-padding-x};
-  --#{$prefix}popover-header-padding-y: #{$popover-header-padding-y};
-  @include rfs($popover-header-font-size, --#{$prefix}popover-header-font-size);
-  --#{$prefix}popover-header-color: #{$popover-header-color};
-  --#{$prefix}popover-header-bg: #{$popover-header-bg};
-  --#{$prefix}popover-body-padding-x: #{$popover-body-padding-x};
-  --#{$prefix}popover-body-padding-y: #{$popover-body-padding-y};
-  --#{$prefix}popover-body-color: #{$popover-body-color};
-  --#{$prefix}popover-arrow-width: #{$popover-arrow-width};
-  --#{$prefix}popover-arrow-height: #{$popover-arrow-height};
-  --#{$prefix}popover-arrow-border: var(--#{$prefix}popover-border-color);
-  
-

Sass variables

-
$popover-font-size:                 $font-size-sm;
-$popover-bg:                        var(--#{$prefix}body-bg);
-$popover-max-width:                 276px;
-$popover-border-width:              var(--#{$prefix}border-width);
-$popover-border-color:              var(--#{$prefix}border-color-translucent);
-$popover-border-radius:             var(--#{$prefix}border-radius-lg);
-$popover-inner-border-radius:       calc(#{$popover-border-radius} - #{$popover-border-width}); // stylelint-disable-line function-disallowed-list
-$popover-box-shadow:                var(--#{$prefix}box-shadow);
-
-$popover-header-font-size:          $font-size-base;
-$popover-header-bg:                 var(--#{$prefix}secondary-bg);
-$popover-header-color:              $headings-color;
-$popover-header-padding-y:          .5rem;
-$popover-header-padding-x:          $spacer;
-
-$popover-body-color:                var(--#{$prefix}body-color);
-$popover-body-padding-y:            $spacer;
-$popover-body-padding-x:            $spacer;
-
-$popover-arrow-width:               1rem;
-$popover-arrow-height:              .5rem;
-
-

Usage

-

Enable popovers via JavaScript:

-
const exampleEl = document.getElementById('example')
-const popover = new bootstrap.Popover(exampleEl, options)
-
-

Keep popovers accessible to keyboard and assistive technology users by only adding them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). While other HTML elements can be made focusable by adding tabindex="0", this can create annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce popovers in this situation. Additionally, do not rely solely on hover as the trigger for your popovers as this will make them impossible to trigger for keyboard users.

Avoid adding an excessive amount of content in popovers with the html option. Once popovers are displayed, their content is tied to the trigger element with the aria-describedby attribute, causing all of the popover's content to be announced to assistive technology users as one long, uninterrupted stream.

Popovers do not manage keyboard focus order, and their placement can be random in the DOM, so be careful when adding interactive elements (like forms or links), as it may lead to an illogical focus order or make the popover content itself completely unreachable for keyboard users. In cases where you must use these elements, consider using a modal dialog instead.

-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-

Note that for security reasons the sanitize, sanitizeFn, and allowList options cannot be supplied using data attributes.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
allowListobjectDefault valueObject which contains allowed attributes and tags.
animationbooleantrueApply a CSS fade transition to the popover.
boundarystring, element'clippingParents'Overflow constraint boundary of the popover (applies only to Popper's preventOverflow modifier). By default, it's 'clippingParents' and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's detectOverflow docs.
containerstring, element, falsefalseAppends the popover to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.
contentstring, element, function''The popover's text content. If a function is given, it will be called with its this reference set to the element that the popover is attached to.
customClassstring, function''Add classes to the popover when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: 'class-1 class-2'. You can also pass a function that should return a single string containing additional class names.
delaynumber, object0Delay showing and hiding the popover (ms)—doesn't apply to manual trigger type. If a number is supplied, delay is applied to both hide/show. Object structure is: delay: { "show": 500, "hide": 100 }.
fallbackPlacementsstring, array['top', 'right', 'bottom', 'left']Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to Popper's behavior docs.
htmlbooleanfalseAllow HTML in the popover. If true, HTML tags in the popover's title will be rendered in the popover. If false, innerText property will be used to insert content into the DOM. Use text if you're worried about XSS attacks.
offsetnumber, string, function[0, 8]Offset of the popover relative to its target. You can pass a string in data attributes with comma separated values like: data-bs-offset="10,20". When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: skidding, distance. For more information refer to Popper's offset docs.
placementstring, function'right'How to position the popover: auto, top, bottom, left, right. When auto is specified, it will dynamically reorient the popover. When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the popover instance.
popperConfignull, object, functionnullTo change Bootstrap's default Popper config, see Popper's configuration. When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper.
sanitizebooleantrueEnable or disable the sanitization. If activated 'template', 'content' and 'title' options will be sanitized.
sanitizeFnnull, functionnullHere you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.
selectorstring, falsefalseIf a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to also apply popovers to dynamically added DOM elements (jQuery.on support). See this issue and an informative example. Note: title attribute must not be used as a selector.
templatestring'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'Base HTML to use when creating the popover. The popover's title will be injected into the .popover-header. The popover's content will be injected into the .popover-body. .popover-arrow will become the popover's arrow. The outermost wrapper element should have the .popover class and role="tooltip".
titlestring, element, function''The popover title. If a function is given, it will be called with its this reference set to the element that the popover is attached to.
triggerstring'click'How popover is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. 'manual' indicates that the popover will be triggered programmatically via the .popover('show'), .popover('hide') and .popover('toggle') methods; this value cannot be combined with any other trigger. 'hover' on its own will result in popovers that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present.
-

Data attributes for individual popovers

Options for individual popovers can alternatively be specified through the use of data attributes, as explained above.

-

Using function with popperConfig

-
const popover = new bootstrap.Popover(element, {
-  popperConfig(defaultBsPopperConfig) {
-    // const newPopperConfig = {...}
-    // use defaultBsPopperConfig if needed...
-    // return newPopperConfig
-  }
-})
-
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disableRemoves the ability for an element's popover to be shown. The popover will only be able to be shown if it is re-enabled.
disposeHides and destroys an element's popover (Removes stored data on the DOM element). Popovers that use delegation (which are created using the selector option) cannot be individually destroyed on descendant trigger elements.
enableGives an element's popover the ability to be shown. Popovers are enabled by default.
getInstanceStatic method which allows you to get the popover instance associated with a DOM element.
getOrCreateInstanceStatic method which allows you to get the popover instance associated with a DOM element, or create a new one in case it wasn't initialized.
hideHides an element's popover. Returns to the caller before the popover has actually been hidden (i.e. before the hidden.bs.popover event occurs). This is considered a "manual" triggering of the popover.
setContentGives a way to change the popover's content after its initialization.
showReveals an element's popover. Returns to the caller before the popover has actually been shown (i.e. before the shown.bs.popover event occurs). This is considered a "manual" triggering of the popover. Popovers whose title and content are both zero-length are never displayed.
toggleToggles an element's popover. Returns to the caller before the popover has actually been shown or hidden (i.e. before the shown.bs.popover or hidden.bs.popover event occurs). This is considered a "manual" triggering of the popover.
toggleEnabledToggles the ability for an element's popover to be shown or hidden.
updateUpdates the position of an element's popover.
-
// getOrCreateInstance example
-const popover = bootstrap.Popover.getOrCreateInstance('#example') // Returns a Bootstrap popover instance
-
-// setContent example
-popover.setContent({
-  '.popover-header': 'another title',
-  '.popover-body': 'another content'
-})
-
-
-

The setContent method accepts an object argument, where each property-key is a valid string selector within the popover template, and each related property-value can be string | element | function | null

-

Events

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EventDescription
hide.bs.popoverThis event is fired immediately when the hide instance method has been called.
hidden.bs.popoverThis event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete).
inserted.bs.popoverThis event is fired after the show.bs.popover event when the popover template has been added to the DOM.
show.bs.popoverThis event fires immediately when the show instance method is called.
shown.bs.popoverThis event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete).
-
const myPopoverTrigger = document.getElementById('myPopover')
-myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
-  // do something...
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/progress/index.html b/site/dist/docs/5.3/components/progress/index.html deleted file mode 100644 index 32c83a903e..0000000000 --- a/site/dist/docs/5.3/components/progress/index.html +++ /dev/null @@ -1,249 +0,0 @@ - Progress · Bootstrap v5.3

Documentation and examples for using Bootstrap custom progress bars featuring support for stacked bars, animated backgrounds, and text labels.

New markup in v5.3.0 — We've deprecated the previous HTML structure for progress bars and replaced it with a more accessible one. The previous structure will continue to work until v6. See what's changed in our migration guide.

-

How it works

-

Progress components are built with two HTML elements, some CSS to set the width, and a few attributes. We don't use the HTML5 <progress> element, ensuring you can stack progress bars, animate them, and place text labels over them.

-
    -
  • We use the .progress as a wrapper to indicate the max value of the progress bar.
  • -
  • The .progress wrapper also requires a role="progressbar" and aria attributes to make it accessible, including an accessible name (using aria-label, aria-labelledby, or similar).
  • -
  • We use the inner .progress-bar purely for the visual bar and label.
  • -
  • The .progress-bar requires an inline style, utility class, or custom CSS to set its width.
  • -
  • We provide a special .progress-stacked class to create multiple/stacked progress bars.
  • -
-

Put that all together, and you have the following examples.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
html
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar" style="width: 0%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar" style="width: 25%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar" style="width: 50%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar" style="width: 75%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar" style="width: 100%"></div>
-</div>
-

Bar sizing

-

Width

-

Bootstrap provides a handful of utilities for setting width. Depending on your needs, these may help with quickly configuring the width of the .progress-bar.

-
-
-
html
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar w-75"></div>
-</div>
-

Height

-

You only set a height value on the .progress container, so if you change that value, the inner .progress-bar will automatically resize accordingly.

-
-
-
-
-
-
html
<div class="progress" role="progressbar" aria-label="Example 1px high" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 1px">
-<div class="progress-bar" style="width: 25%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Example 20px high" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 20px">
-<div class="progress-bar" style="width: 25%"></div>
-</div>
-

Labels

-

Add labels to your progress bars by placing text within the .progress-bar.

-
-
25%
-
html
<div class="progress" role="progressbar" aria-label="Example with label" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar" style="width: 25%">25%</div>
-</div>
-

Note that by default, the content inside the .progress-bar is controlled with overflow: hidden, so it doesn't bleed out of the bar. If your progress bar is shorter than its label, the content will be capped and may become unreadable. To change this behavior, you can use .overflow-visible from the overflow utilities, but make sure to also define an explicit text color so the text remains readable. Be aware though that currently this approach does not take into account color modes.

-
-
Long label text for the progress bar, set to a dark color
-
html
<div class="progress" role="progressbar" aria-label="Example with label" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar overflow-visible text-dark" style="width: 10%">Long label text for the progress bar, set to a dark color</div>
-</div>
-

Backgrounds

-

Use background utility classes to change the appearance of individual progress bars.

-
-
-
-
-
-
-
-
-
-
-
-
html
<div class="progress" role="progressbar" aria-label="Success example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar bg-success" style="width: 25%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Info example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar bg-info" style="width: 50%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Warning example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar bg-warning" style="width: 75%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Danger example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar bg-danger" style="width: 100%"></div>
-</div>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

If you're adding labels to progress bars with a custom background color, make sure to also set an appropriate text color, so the labels remain readable and have sufficient contrast.

-
-
25%
-
-
-
50%
-
-
-
75%
-
-
-
100%
-
html
<div class="progress" role="progressbar" aria-label="Success example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar bg-success" style="width: 25%">25%</div>
-</div>
-<div class="progress" role="progressbar" aria-label="Info example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar bg-info text-dark" style="width: 50%">50%</div>
-</div>
-<div class="progress" role="progressbar" aria-label="Warning example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar bg-warning text-dark" style="width: 75%">75%</div>
-</div>
-<div class="progress" role="progressbar" aria-label="Danger example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar bg-danger" style="width: 100%">100%</div>
-</div>
-

Alternatively, you can use the new combined color and background helper classes.

-
-
75%
-
html
<div class="progress" role="progressbar" aria-label="Warning example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar text-bg-warning" style="width: 75%">75%</div>
-</div>
-

Multiple bars

-

You can include multiple progress components inside a container with .progress-stacked to create a single stacked progress bar. Note that in this case, the styling to set the visual width of the progress bar must be applied to the .progress elements, rather than the .progress-bars.

-
-
-
-
-
-
-
-
-
-
-
html
<div class="progress-stacked">
-<div class="progress" role="progressbar" aria-label="Segment one" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100" style="width: 15%">
-  <div class="progress-bar"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Segment two" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100" style="width: 30%">
-  <div class="progress-bar bg-success"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Segment three" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
-  <div class="progress-bar bg-info"></div>
-</div>
-</div>
-

Striped

-

Add .progress-bar-striped to any .progress-bar to apply a stripe via CSS gradient over the progress bar's background color.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
html
<div class="progress" role="progressbar" aria-label="Default striped example" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar progress-bar-striped" style="width: 10%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Success striped example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar progress-bar-striped bg-success" style="width: 25%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Info striped example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar progress-bar-striped bg-info" style="width: 50%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Warning striped example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar progress-bar-striped bg-warning" style="width: 75%"></div>
-</div>
-<div class="progress" role="progressbar" aria-label="Danger striped example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar progress-bar-striped bg-danger" style="width: 100%"></div>
-</div>
-

Animated stripes

-

The striped gradient can also be animated. Add .progress-bar-animated to .progress-bar to animate the stripes right to left via CSS3 animations.

-
-
-
html
<div class="progress" role="progressbar" aria-label="Animated striped example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
-<div class="progress-bar progress-bar-striped progress-bar-animated" style="width: 75%"></div>
-</div>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, progress bars now use local CSS variables on .progress for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}progress-height: #{$progress-height};
-  @include rfs($progress-font-size, --#{$prefix}progress-font-size);
-  --#{$prefix}progress-bg: #{$progress-bg};
-  --#{$prefix}progress-border-radius: #{$progress-border-radius};
-  --#{$prefix}progress-box-shadow: #{$progress-box-shadow};
-  --#{$prefix}progress-bar-color: #{$progress-bar-color};
-  --#{$prefix}progress-bar-bg: #{$progress-bar-bg};
-  --#{$prefix}progress-bar-transition: #{$progress-bar-transition};
-  
-

Sass variables

-
$progress-height:                   1rem;
-$progress-font-size:                $font-size-base * .75;
-$progress-bg:                       var(--#{$prefix}secondary-bg);
-$progress-border-radius:            var(--#{$prefix}border-radius);
-$progress-box-shadow:               var(--#{$prefix}box-shadow-inset);
-$progress-bar-color:                $white;
-$progress-bar-bg:                   $primary;
-$progress-bar-animation-timing:     1s linear infinite;
-$progress-bar-transition:           width .6s ease;
-
-

Keyframes

-

Used for creating the CSS animations for .progress-bar-animated. Included in scss/_progress-bar.scss.

-
@if $enable-transitions {
-  @keyframes progress-bar-stripes {
-    0% { background-position-x: $progress-height; }
-  }
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/scrollspy/index.html b/site/dist/docs/5.3/components/scrollspy/index.html deleted file mode 100644 index e8d78cb638..0000000000 --- a/site/dist/docs/5.3/components/scrollspy/index.html +++ /dev/null @@ -1,313 +0,0 @@ - Scrollspy · Bootstrap v5.3

Automatically update Bootstrap navigation or list group components based on scroll position to indicate which link is currently active in the viewport.

How it works

-

Scrollspy toggles the .active class on anchor (<a>) elements when the element with the id referenced by the anchor's href is scrolled into view. Scrollspy is best used in conjunction with a Bootstrap nav component or list group, but it will also work with any anchor elements in the current page. Here's how it works.

-
    -
  • -

    To start, scrollspy requires two things: a navigation, list group, or a simple set of links, plus a scrollable container. The scrollable container can be the <body> or a custom element with a set height and overflow-y: scroll.

    -
  • -
  • -

    On the scrollable container, add data-bs-spy="scroll" and data-bs-target="#navId" where navId is the unique id of the associated navigation. If there is no focusable element inside the element, be sure to also include a tabindex="0" to ensure keyboard access.

    -
  • -
  • -

    As you scroll the "spied" container, an .active class is added and removed from anchor links within the associated navigation. Links must have resolvable id targets, otherwise they're ignored. For example, a <a href="#home">home</a> must correspond to something in the DOM like <div id="home"></div>

    -
  • -
  • -

    Target elements that are not visible will be ignored. See the Non-visible elements section below.

    -
  • -
-

Examples

- -

Scroll the area below the navbar and watch the active class change. Open the dropdown menu and watch the dropdown items be highlighted as well.

-

First heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Second heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Third heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Fourth heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Fifth heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

-
<nav id="navbar-example2" class="navbar bg-body-tertiary px-3 mb-3">
-  <a class="navbar-brand" href="#">Navbar</a>
-  <ul class="nav nav-pills">
-    <li class="nav-item">
-      <a class="nav-link" href="#scrollspyHeading1">First</a>
-    </li>
-    <li class="nav-item">
-      <a class="nav-link" href="#scrollspyHeading2">Second</a>
-    </li>
-    <li class="nav-item dropdown">
-      <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li>
-        <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li>
-        <li><hr class="dropdown-divider" /></li>
-        <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li>
-      </ul>
-    </li>
-  </ul>
-</nav>
-<div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-root-margin="0px 0px -40%" data-bs-smooth-scroll="true" class="scrollspy-example bg-body-tertiary p-3 rounded-2" tabindex="0">
-  <h4 id="scrollspyHeading1">First heading</h4>
-  <p>...</p>
-  <h4 id="scrollspyHeading2">Second heading</h4>
-  <p>...</p>
-  <h4 id="scrollspyHeading3">Third heading</h4>
-  <p>...</p>
-  <h4 id="scrollspyHeading4">Fourth heading</h4>
-  <p>...</p>
-  <h4 id="scrollspyHeading5">Fifth heading</h4>
-  <p>...</p>
-</div>
-
-

Nested nav

-

Scrollspy also works with nested .navs. If a nested .nav is .active, its parents will also be .active. Scroll the area next to the navbar and watch the active class change.

-

Item 1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.

Item 1-1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.

Item 1-2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.

Item 2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.

Item 3

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.

Item 3-1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.

Item 3-2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.

-
<div class="row">
-  <div class="col-4">
-    <nav id="navbar-example3" class="h-100 flex-column align-items-stretch pe-4 border-end">
-      <nav class="nav nav-pills flex-column">
-        <a class="nav-link" href="#item-1">Item 1</a>
-        <nav class="nav nav-pills flex-column">
-          <a class="nav-link ms-3 my-1" href="#item-1-1">Item 1-1</a>
-          <a class="nav-link ms-3 my-1" href="#item-1-2">Item 1-2</a>
-        </nav>
-        <a class="nav-link" href="#item-2">Item 2</a>
-        <a class="nav-link" href="#item-3">Item 3</a>
-        <nav class="nav nav-pills flex-column">
-          <a class="nav-link ms-3 my-1" href="#item-3-1">Item 3-1</a>
-          <a class="nav-link ms-3 my-1" href="#item-3-2">Item 3-2</a>
-        </nav>
-      </nav>
-    </nav>
-  </div>
-
-  <div class="col-8">
-    <div data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-smooth-scroll="true" class="scrollspy-example-2" tabindex="0">
-      <div id="item-1">
-        <h4>Item 1</h4>
-        <p>...</p>
-      </div>
-      <div id="item-1-1">
-        <h5>Item 1-1</h5>
-        <p>...</p>
-      </div>
-      <div id="item-1-2">
-        <h5>Item 1-2</h5>
-        <p>...</p>
-      </div>
-      <div id="item-2">
-        <h4>Item 2</h4>
-        <p>...</p>
-      </div>
-      <div id="item-3">
-        <h4>Item 3</h4>
-        <p>...</p>
-      </div>
-      <div id="item-3-1">
-        <h5>Item 3-1</h5>
-        <p>...</p>
-      </div>
-      <div id="item-3-2">
-        <h5>Item 3-2</h5>
-        <p>...</p>
-      </div>
-    </div>
-  </div>
-</div>
-
-

List group

-

Scrollspy also works with .list-groups. Scroll the area next to the list group and watch the active class change.

-

Item 1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 3

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 4

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

-
<div class="row">
-  <div class="col-4">
-    <div id="list-example" class="list-group">
-      <a class="list-group-item list-group-item-action" href="#list-item-1">Item 1</a>
-      <a class="list-group-item list-group-item-action" href="#list-item-2">Item 2</a>
-      <a class="list-group-item list-group-item-action" href="#list-item-3">Item 3</a>
-      <a class="list-group-item list-group-item-action" href="#list-item-4">Item 4</a>
-    </div>
-  </div>
-  <div class="col-8">
-    <div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
-      <h4 id="list-item-1">Item 1</h4>
-      <p>...</p>
-      <h4 id="list-item-2">Item 2</h4>
-      <p>...</p>
-      <h4 id="list-item-3">Item 3</h4>
-      <p>...</p>
-      <h4 id="list-item-4">Item 4</h4>
-      <p>...</p>
-    </div>
-  </div>
-</div>
-
-

Simple anchors

-

Scrollspy is not limited to nav components and list groups, so it will work on any <a> anchor elements in the current document. Scroll the area and watch the .active class change.

-

Item 1

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 2

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 3

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 4

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Item 5

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

-
<div class="row">
-  <div class="col-4">
-    <div id="simple-list-example" class="d-flex flex-column gap-2 simple-list-example-scrollspy text-center">
-      <a class="p-1 rounded" href="#simple-list-item-1">Item 1</a>
-      <a class="p-1 rounded" href="#simple-list-item-2">Item 2</a>
-      <a class="p-1 rounded" href="#simple-list-item-3">Item 3</a>
-      <a class="p-1 rounded" href="#simple-list-item-4">Item 4</a>
-      <a class="p-1 rounded" href="#simple-list-item-5">Item 5</a>
-    </div>
-  </div>
-  <div class="col-8">
-    <div data-bs-spy="scroll" data-bs-target="#simple-list-example" data-bs-offset="0" data-bs-smooth-scroll="true" class="scrollspy-example" tabindex="0">
-      <h4 id="simple-list-item-1">Item 1</h4>
-      <p>...</p>
-      <h4 id="simple-list-item-2">Item 2</h4>
-      <p>...</p>
-      <h4 id="simple-list-item-3">Item 3</h4>
-      <p>...</p>
-      <h4 id="simple-list-item-4">Item 4</h4>
-      <p>...</p>
-      <h4 id="simple-list-item-5">Item 5</h4>
-      <p>...</p>
-    </div>
-  </div>
-</div>
-
-

Non-visible elements

-

Target elements that aren’t visible will be ignored and their corresponding nav items won't receive an .active class. Scrollspy instances initialized in a non-visible wrapper will ignore all target elements. Use the refresh method to check for observable elements once the wrapper becomes visible.

-
document.querySelectorAll('#nav-tab>[data-bs-toggle="tab"]').forEach(el => {
-  el.addEventListener('shown.bs.tab', () => {
-    const target = el.getAttribute('data-bs-target')
-    const scrollElem = document.querySelector(`${target} [data-bs-spy="scroll"]`)
-    bootstrap.ScrollSpy.getOrCreateInstance(scrollElem).refresh()
-  })
-})
-
-

Usage

-

Via data attributes

-

To easily add scrollspy behavior to your topbar navigation, add data-bs-spy="scroll" to the element you want to spy on (most typically this would be the <body>). Then add the data-bs-target attribute with the id or class name of the parent element of any Bootstrap .nav component.

-
<body data-bs-spy="scroll" data-bs-target="#navbar-example">
-  ...
-  <div id="navbar-example">
-    <ul class="nav nav-tabs" role="tablist">
-      ...
-    </ul>
-  </div>
-  ...
-</body>
-
-

Via JavaScript

-
const scrollSpy = new bootstrap.ScrollSpy(document.body, {
-  target: '#navbar-example'
-})
-
-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
rootMarginstring0px 0px -25%Intersection Observer rootMargin valid units, when calculating scroll position.
smoothScrollbooleanfalseEnables smooth scrolling when a user clicks on a link that refers to ScrollSpy observables.
targetstring, DOM elementnullSpecifies element to apply Scrollspy plugin.
thresholdarray[0.1, 0.5, 1]IntersectionObserver threshold valid input, when calculating scroll position.
-

Deprecated Options

Up until v5.1.3 we were using offset & method options, which are now deprecated and replaced by rootMargin. -To keep backwards compatibility, we will continue to parse a given offset to rootMargin, but this feature will be removed in v6.

-

Methods

-
- - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's scrollspy. (Removes stored data on the DOM element)
getInstanceStatic method to get the scrollspy instance associated with a DOM element.
getOrCreateInstanceStatic method to get the scrollspy instance associated with a DOM element, or to create a new one in case it wasn't initialized.
refreshWhen adding or removing elements in the DOM, you'll need to call the refresh method.
-

Here's an example using the refresh method:

-
const dataSpyList = document.querySelectorAll('[data-bs-spy="scroll"]')
-dataSpyList.forEach(dataSpyEl => {
-  bootstrap.ScrollSpy.getInstance(dataSpyEl).refresh()
-})
-
-

Events

-
- - - - - - - - - - - - -
EventDescription
activate.bs.scrollspyThis event fires on the scroll element whenever an anchor is activated by the scrollspy.
-
const firstScrollSpyEl = document.querySelector('[data-bs-spy="scroll"]')
-firstScrollSpyEl.addEventListener('activate.bs.scrollspy', () => {
-  // do something...
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/spinners/index.html b/site/dist/docs/5.3/components/spinners/index.html deleted file mode 100644 index c3246232b1..0000000000 --- a/site/dist/docs/5.3/components/spinners/index.html +++ /dev/null @@ -1,298 +0,0 @@ - Spinners · Bootstrap v5.3

Indicate the loading state of a component or page with Bootstrap spinners, built entirely with HTML, CSS, and no JavaScript.

About

-

Bootstrap "spinners" can be used to show the loading state in your projects. They're built only with HTML and CSS, meaning you don't need any JavaScript to create them. You will, however, need some custom JavaScript to toggle their visibility. Their appearance, alignment, and sizing can be easily customized with our amazing utility classes.

-

For accessibility purposes, each loader here includes role="status" and a nested <span class="visually-hidden">Loading...</span>.

-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Border spinner

-

Use the border spinners for a lightweight loading indicator.

-
-Loading... -
html
<div class="spinner-border" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-

Colors

-

The border spinner uses currentColor for its border-color, meaning you can customize the color with text color utilities. You can use any of our text color utilities on the standard spinner.

-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
html
<div class="spinner-border text-primary" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-border text-secondary" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-border text-success" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-border text-danger" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-border text-warning" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-border text-info" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-border text-light" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-border text-dark" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-

Why not use border-color utilities? Each border spinner specifies a transparent border for at least one side, so .border-{color} utilities would override that.

-

Growing spinner

-

If you don't fancy a border spinner, switch to the grow spinner. While it doesn't technically spin, it does repeatedly grow!

-
-Loading... -
html
<div class="spinner-grow" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-

Once again, this spinner is built with currentColor, so you can easily change its appearance with text color utilities. Here it is in blue, along with the supported variants.

-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
-
-Loading... -
html
<div class="spinner-grow text-primary" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow text-secondary" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow text-success" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow text-danger" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow text-warning" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow text-info" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow text-light" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow text-dark" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-

Alignment

-

Spinners in Bootstrap are built with rems, currentColor, and display: inline-flex. This means they can easily be resized, recolored, and quickly aligned.

-

Margin

-

Use margin utilities like .m-5 for easy spacing.

-
-Loading... -
html
<div class="spinner-border m-5" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-

Placement

-

Use flexbox utilities, float utilities, or text alignment utilities to place spinners exactly where you need them in any situation.

-

Flex

-
-
- Loading... -
-
html
<div class="d-flex justify-content-center">
-<div class="spinner-border" role="status">
-  <span class="visually-hidden">Loading...</span>
-</div>
-</div>
-
-Loading... - -
html
<div class="d-flex align-items-center">
-<strong role="status">Loading...</strong>
-<div class="spinner-border ms-auto" aria-hidden="true"></div>
-</div>
-

Floats

-
-
- Loading... -
-
html
<div class="clearfix">
-<div class="spinner-border float-end" role="status">
-  <span class="visually-hidden">Loading...</span>
-</div>
-</div>
-

Text align

-
-
- Loading... -
-
html
<div class="text-center">
-<div class="spinner-border" role="status">
-  <span class="visually-hidden">Loading...</span>
-</div>
-</div>
-

Size

-

Add .spinner-border-sm and .spinner-grow-sm to make a smaller spinner that can quickly be used within other components.

-
-Loading... -
-
-Loading... -
html
<div class="spinner-border spinner-border-sm" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow spinner-grow-sm" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-

Or, use custom CSS or inline styles to change the dimensions as needed.

-
-Loading... -
-
-Loading... -
html
<div class="spinner-border" style="width: 3rem; height: 3rem;" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-<div class="spinner-grow" style="width: 3rem; height: 3rem;" role="status">
-<span class="visually-hidden">Loading...</span>
-</div>
-

Buttons

-

Use spinners within buttons to indicate an action is currently processing or taking place. You may also swap the text out of the spinner element and utilize button text as needed.

-
-
html
<button class="btn btn-primary" type="button" disabled>
-<span class="spinner-border spinner-border-sm" aria-hidden="true"></span>
-<span class="visually-hidden" role="status">Loading...</span>
-</button>
-<button class="btn btn-primary" type="button" disabled>
-<span class="spinner-border spinner-border-sm" aria-hidden="true"></span>
-<span role="status">Loading...</span>
-</button>
-
-
html
<button class="btn btn-primary" type="button" disabled>
-<span class="spinner-grow spinner-grow-sm" aria-hidden="true"></span>
-<span class="visually-hidden" role="status">Loading...</span>
-</button>
-<button class="btn btn-primary" type="button" disabled>
-<span class="spinner-grow spinner-grow-sm" aria-hidden="true"></span>
-<span role="status">Loading...</span>
-</button>
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, spinners now use local CSS variables on .spinner-border and .spinner-grow for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-

Border spinner variables:

-
  --#{$prefix}spinner-width: #{$spinner-width};
-  --#{$prefix}spinner-height: #{$spinner-height};
-  --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};
-  --#{$prefix}spinner-border-width: #{$spinner-border-width};
-  --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};
-  --#{$prefix}spinner-animation-name: spinner-border;
-  
-

Growing spinner variables:

-
  --#{$prefix}spinner-width: #{$spinner-width};
-  --#{$prefix}spinner-height: #{$spinner-height};
-  --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};
-  --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};
-  --#{$prefix}spinner-animation-name: spinner-grow;
-  
-

For both spinners, small spinner modifier classes are used to update the values of these CSS variables as needed. For example, the .spinner-border-sm class does the following:

-
  --#{$prefix}spinner-width: #{$spinner-width-sm};
-  --#{$prefix}spinner-height: #{$spinner-height-sm};
-  --#{$prefix}spinner-border-width: #{$spinner-border-width-sm};
-  
-

Sass variables

-
$spinner-width:           2rem;
-$spinner-height:          $spinner-width;
-$spinner-vertical-align:  -.125em;
-$spinner-border-width:    .25em;
-$spinner-animation-speed: .75s;
-
-$spinner-width-sm:        1rem;
-$spinner-height-sm:       $spinner-width-sm;
-$spinner-border-width-sm: .2em;
-
-

Keyframes

-

Used for creating the CSS animations for our spinners. Included in scss/_spinners.scss.

-
@keyframes spinner-border {
-  to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }
-}
-
-
@keyframes spinner-grow {
-  0% {
-    transform: scale(0);
-  }
-  50% {
-    opacity: 1;
-    transform: none;
-  }
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/toasts/index.html b/site/dist/docs/5.3/components/toasts/index.html deleted file mode 100644 index 2546a3716c..0000000000 --- a/site/dist/docs/5.3/components/toasts/index.html +++ /dev/null @@ -1,560 +0,0 @@ - Toasts · Bootstrap v5.3

Push notifications to your visitors with a toast, a lightweight and easily customizable alert message.

Toasts are lightweight notifications designed to mimic the push notifications that have been popularized by mobile and desktop operating systems. They're built with flexbox, so they're easy to align and position.

-

Overview

-

Things to know when using the toast plugin:

-
    -
  • Toasts are opt-in for performance reasons, so you must initialize them yourself.
  • -
  • Toasts will automatically hide if you do not specify autohide: false.
  • -
-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Examples

-

Basic

-

To encourage extensible and predictable toasts, we recommend a header and body. Toast headers use display: flex, allowing easy alignment of content thanks to our margin and flexbox utilities.

-

Toasts are as flexible as you need and have very little required markup. At a minimum, we require a single element to contain your "toasted" content and strongly encourage a dismiss button.

-
html
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-<div class="toast-header">
-  <img src="..." class="rounded me-2" alt="...">
-  <strong class="me-auto">Bootstrap</strong>
-  <small>11 mins ago</small>
-  <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-</div>
-<div class="toast-body">
-  Hello, world! This is a toast message.
-</div>
-</div>
-

Previously, our scripts dynamically added the .hide class to completely hide a toast (with display:none, rather than just with opacity:0). This is now not necessary anymore. However, for backwards compatibility, our script will continue to toggle the class (even though there is no practical need for it) until the next major version.

-

Live example

-

Click the button below to show a toast (positioned with our utilities in the lower right corner) that has been hidden by default.

-
-
-
<button type="button" class="btn btn-primary" id="liveToastBtn">Show live toast</button>
-
-<div class="toast-container position-fixed bottom-0 end-0 p-3">
-  <div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-    <div class="toast-header">
-      <img src="..." class="rounded me-2" alt="...">
-      <strong class="me-auto">Bootstrap</strong>
-      <small>11 mins ago</small>
-      <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-    </div>
-    <div class="toast-body">
-      Hello, world! This is a toast message.
-    </div>
-  </div>
-</div>
-
-

We use the following JavaScript to trigger our live toast demo:

-
  const toastTrigger = document.getElementById('liveToastBtn')
-  const toastLiveExample = document.getElementById('liveToast')
-
-  if (toastTrigger) {
-    const toastBootstrap = bootstrap.Toast.getOrCreateInstance(toastLiveExample)
-    toastTrigger.addEventListener('click', () => {
-      toastBootstrap.show()
-    })
-  }
-  
-

Translucent

-

Toasts are slightly translucent to blend in with what's below them.

-
html
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-<div class="toast-header">
-  <img src="..." class="rounded me-2" alt="...">
-  <strong class="me-auto">Bootstrap</strong>
-  <small class="text-body-secondary">11 mins ago</small>
-  <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-</div>
-<div class="toast-body">
-  Hello, world! This is a toast message.
-</div>
-</div>
-

Stacking

-

You can stack toasts by wrapping them in a toast container, which will vertically add some spacing.

-
- - - -
html
<div class="toast-container position-static">
-<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-  <div class="toast-header">
-    <img src="..." class="rounded me-2" alt="...">
-    <strong class="me-auto">Bootstrap</strong>
-    <small class="text-body-secondary">just now</small>
-    <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-  </div>
-  <div class="toast-body">
-    See? Just like this.
-  </div>
-</div>
-
-<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-  <div class="toast-header">
-    <img src="..." class="rounded me-2" alt="...">
-    <strong class="me-auto">Bootstrap</strong>
-    <small class="text-body-secondary">2 seconds ago</small>
-    <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-  </div>
-  <div class="toast-body">
-    Heads up, toasts will stack automatically
-  </div>
-</div>
-</div>
-

Custom content

-

Customize your toasts by removing sub-components, tweaking them with utilities, or by adding your own markup. Here we've created a simpler toast by removing the default .toast-header, adding a custom hide icon from Bootstrap Icons, and using some flexbox utilities to adjust the layout.

-
html
<div class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true">
-<div class="d-flex">
-  <div class="toast-body">
-    Hello, world! This is a toast message.
-  </div>
-  <button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
-</div>
-</div>
-

Alternatively, you can also add additional controls and components to toasts.

-
html
<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-<div class="toast-body">
-  Hello, world! This is a toast message.
-  <div class="mt-2 pt-2 border-top">
-    <button type="button" class="btn btn-primary btn-sm">Take action</button>
-    <button type="button" class="btn btn-secondary btn-sm" data-bs-dismiss="toast">Close</button>
-  </div>
-</div>
-</div>
-

Color schemes

-

Building on the above example, you can create different toast color schemes with our color and background utilities. Here we've added .text-bg-primary to the .toast, and then added .btn-close-white to our close button. For a crisp edge, we remove the default border with .border-0.

-
html
<div class="toast align-items-center text-bg-primary border-0" role="alert" aria-live="assertive" aria-atomic="true">
-<div class="d-flex">
-  <div class="toast-body">
-    Hello, world! This is a toast message.
-  </div>
-  <button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
-</div>
-</div>
-

Placement

-

Place toasts with custom CSS as you need them. The top right is often used for notifications, as is the top middle. If you're only ever going to show one toast at a time, put the positioning styles right on the .toast.

-
-
- - -
-
-
-
-
-
- - Bootstrap - 11 mins ago -
-
- Hello, world! This is a toast message. -
-
-
-
html
<form>
-<div class="mb-3">
-  <label for="selectToastPlacement">Toast placement</label>
-  <select class="form-select mt-2" id="selectToastPlacement">
-    <option value="" selected>Select a position...</option>
-    <option value="top-0 start-0">Top left</option>
-    <option value="top-0 start-50 translate-middle-x">Top center</option>
-    <option value="top-0 end-0">Top right</option>
-    <option value="top-50 start-0 translate-middle-y">Middle left</option>
-    <option value="top-50 start-50 translate-middle">Middle center</option>
-    <option value="top-50 end-0 translate-middle-y">Middle right</option>
-    <option value="bottom-0 start-0">Bottom left</option>
-    <option value="bottom-0 start-50 translate-middle-x">Bottom center</option>
-    <option value="bottom-0 end-0">Bottom right</option>
-  </select>
-</div>
-</form>
-<div aria-live="polite" aria-atomic="true" class="bg-body-secondary position-relative bd-example-toasts rounded-3">
-<div class="toast-container p-3" id="toastPlacement">
-  <div class="toast">
-    <div class="toast-header">
-      <img src="..." class="rounded me-2" alt="...">
-      <strong class="me-auto">Bootstrap</strong>
-      <small>11 mins ago</small>
-    </div>
-    <div class="toast-body">
-      Hello, world! This is a toast message.
-    </div>
-  </div>
-</div>
-</div>
-

For systems that generate more notifications, consider using a wrapping element so they can easily stack.

-
- - - - -
- - - - - -
-
html
<div aria-live="polite" aria-atomic="true" class="position-relative">
-<!-- Position it: -->
-<!-- - `.toast-container` for spacing between toasts -->
-<!-- - `top-0` & `end-0` to position the toasts in the upper right corner -->
-<!-- - `.p-3` to prevent the toasts from sticking to the edge of the container  -->
-<div class="toast-container top-0 end-0 p-3">
-
-  <!-- Then put toasts within -->
-  <div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-    <div class="toast-header">
-      <img src="..." class="rounded me-2" alt="...">
-      <strong class="me-auto">Bootstrap</strong>
-      <small class="text-body-secondary">just now</small>
-      <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-    </div>
-    <div class="toast-body">
-      See? Just like this.
-    </div>
-  </div>
-
-  <div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-    <div class="toast-header">
-      <img src="..." class="rounded me-2" alt="...">
-      <strong class="me-auto">Bootstrap</strong>
-      <small class="text-body-secondary">2 seconds ago</small>
-      <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-    </div>
-    <div class="toast-body">
-      Heads up, toasts will stack automatically
-    </div>
-  </div>
-</div>
-</div>
-

You can also get fancy with flexbox utilities to align toasts horizontally and/or vertically.

-
-
- - - -
html
<!-- Flexbox container for aligning the toasts -->
-<div aria-live="polite" aria-atomic="true" class="d-flex justify-content-center align-items-center w-100">
-
-<!-- Then put toasts within -->
-<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
-  <div class="toast-header">
-    <img src="..." class="rounded me-2" alt="...">
-    <strong class="me-auto">Bootstrap</strong>
-    <small>11 mins ago</small>
-    <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-  </div>
-  <div class="toast-body">
-    Hello, world! This is a toast message.
-  </div>
-</div>
-</div>
-

Accessibility

-

Toasts are intended to be small interruptions to your visitors or users, so to help those with screen readers and similar assistive technologies, you should wrap your toasts in an aria-live region. Changes to live regions (such as injecting/updating a toast component) are automatically announced by screen readers without needing to move the user's focus or otherwise interrupt the user. Additionally, include aria-atomic="true" to ensure that the entire toast is always announced as a single (atomic) unit, rather than just announcing what was changed (which could lead to problems if you only update part of the toast's content, or if displaying the same toast content at a later point in time). If the information needed is important for the process, e.g. for a list of errors in a form, then use the alert component instead of toast.

-

Note that the live region needs to be present in the markup before the toast is generated or updated. If you dynamically generate both at the same time and inject them into the page, they will generally not be announced by assistive technologies.

-

You also need to adapt the role and aria-live level depending on the content. If it's an important message like an error, use role="alert" aria-live="assertive", otherwise use role="status" aria-live="polite" attributes.

-

As the content you're displaying changes, be sure to update the delay timeout so that users have enough time to read the toast.

-
<div class="toast" role="alert" aria-live="polite" aria-atomic="true" data-bs-delay="10000">
-  <div role="alert" aria-live="assertive" aria-atomic="true">...</div>
-</div>
-
-

When using autohide: false, you must add a close button to allow users to dismiss the toast.

-
html
<div role="alert" aria-live="assertive" aria-atomic="true" class="toast" data-bs-autohide="false">
-<div class="toast-header">
-  <img src="..." class="rounded me-2" alt="...">
-  <strong class="me-auto">Bootstrap</strong>
-  <small>11 mins ago</small>
-  <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
-</div>
-<div class="toast-body">
-  Hello, world! This is a toast message.
-</div>
-</div>
-

While technically it's possible to add focusable/actionable controls (such as additional buttons or links) in your toast, you should avoid doing this for autohiding toasts. Even if you give the toast a long delay timeout, keyboard and assistive technology users may find it difficult to reach the toast in time to take action (since toasts don't receive focus when they are displayed). If you absolutely must have further controls, we recommend using a toast with autohide: false.

-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap's evolving CSS variables approach, toasts now use local CSS variables on .toast for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}toast-zindex: #{$zindex-toast};
-  --#{$prefix}toast-padding-x: #{$toast-padding-x};
-  --#{$prefix}toast-padding-y: #{$toast-padding-y};
-  --#{$prefix}toast-spacing: #{$toast-spacing};
-  --#{$prefix}toast-max-width: #{$toast-max-width};
-  @include rfs($toast-font-size, --#{$prefix}toast-font-size);
-  --#{$prefix}toast-color: #{$toast-color};
-  --#{$prefix}toast-bg: #{$toast-background-color};
-  --#{$prefix}toast-border-width: #{$toast-border-width};
-  --#{$prefix}toast-border-color: #{$toast-border-color};
-  --#{$prefix}toast-border-radius: #{$toast-border-radius};
-  --#{$prefix}toast-box-shadow: #{$toast-box-shadow};
-  --#{$prefix}toast-header-color: #{$toast-header-color};
-  --#{$prefix}toast-header-bg: #{$toast-header-background-color};
-  --#{$prefix}toast-header-border-color: #{$toast-header-border-color};
-  
-

Sass variables

-
$toast-max-width:                   350px;
-$toast-padding-x:                   .75rem;
-$toast-padding-y:                   .5rem;
-$toast-font-size:                   .875rem;
-$toast-color:                       null;
-$toast-background-color:            rgba(var(--#{$prefix}body-bg-rgb), .85);
-$toast-border-width:                var(--#{$prefix}border-width);
-$toast-border-color:                var(--#{$prefix}border-color-translucent);
-$toast-border-radius:               var(--#{$prefix}border-radius);
-$toast-box-shadow:                  var(--#{$prefix}box-shadow);
-$toast-spacing:                     $container-padding-x;
-
-$toast-header-color:                var(--#{$prefix}secondary-color);
-$toast-header-background-color:     rgba(var(--#{$prefix}body-bg-rgb), .85);
-$toast-header-border-color:         $toast-border-color;
-
-

Usage

-

Initialize toasts via JavaScript:

-
const toastElList = document.querySelectorAll('.toast')
-const toastList = [...toastElList].map(toastEl => new bootstrap.Toast(toastEl, option))
-
-

Triggers

-

-Dismissal can be achieved with the data-bs-dismiss attribute on a button within the toast as demonstrated below: -

<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>

-or on a button outside the toast using the additional data-bs-target as demonstrated below: -

<button type="button" class="btn-close" data-bs-dismiss="toast" data-bs-target="#my-toast" aria-label="Close"></button>
-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
animationbooleantrueApply a CSS fade transition to the toast.
autohidebooleantrueAutomatically hide the toast after the delay.
delaynumber5000Delay in milliseconds before hiding the toast.
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeHides an element's toast. Your toast will remain on the DOM but won't show anymore.
getInstanceStatic method which allows you to get the toast instance associated with a DOM element.
For example: const myToastEl = document.getElementById('myToastEl') const myToast = bootstrap.Toast.getInstance(myToastEl) Returns a Bootstrap toast instance.
getOrCreateInstanceStatic method which allows you to get the toast instance associated with a DOM element, or create a new one, in case it wasn't initialized.
const myToastEl = document.getElementById('myToastEl') const myToast = bootstrap.Toast.getOrCreateInstance(myToastEl) Returns a Bootstrap toast instance.
hideHides an element's toast. Returns to the caller before the toast has actually been hidden (i.e. before the hidden.bs.toast event occurs). You have to manually call this method if you made autohide to false.
isShownReturns a boolean according to toast's visibility state.
showReveals an element's toast. Returns to the caller before the toast has actually been shown (i.e. before the shown.bs.toast event occurs). You have to manually call this method, instead your toast won't show.
-

Events

-
- - - - - - - - - - - - - - - - - - - - - - - - -
EventDescription
hide.bs.toastThis event is fired immediately when the hide instance method has been called.
hidden.bs.toastThis event is fired when the toast has finished being hidden from the user.
show.bs.toastThis event fires immediately when the show instance method is called.
shown.bs.toastThis event is fired when the toast has been made visible to the user.
-
const myToastEl = document.getElementById('myToast')
-myToastEl.addEventListener('hidden.bs.toast', () => {
-  // do something...
-})
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/components/tooltips/index.html b/site/dist/docs/5.3/components/tooltips/index.html deleted file mode 100644 index 23af782ca7..0000000000 --- a/site/dist/docs/5.3/components/tooltips/index.html +++ /dev/null @@ -1,390 +0,0 @@ - Tooltips · Bootstrap v5.3

Documentation and examples for adding custom Bootstrap tooltips with CSS and JavaScript using CSS3 for animations and data-bs-attributes for local title storage.

Overview

-

Things to know when using the tooltip plugin:

-
    -
  • Tooltips rely on the third party library Popper for positioning. You must include popper.min.js before bootstrap.js, or use one bootstrap.bundle.min.js which contains Popper.
  • -
  • Tooltips are opt-in for performance reasons, so you must initialize them yourself.
  • -
  • Tooltips with zero-length titles are never displayed.
  • -
  • Specify container: 'body' to avoid rendering problems in more complex components (like our input groups, button groups, etc).
  • -
  • Triggering tooltips on hidden elements will not work.
  • -
  • Tooltips for .disabled or disabled elements must be triggered on a wrapper element.
  • -
  • When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use white-space: nowrap; on your <a>s to avoid this behavior.
  • -
  • Tooltips must be hidden before their corresponding elements have been removed from the DOM.
  • -
  • Tooltips can be triggered thanks to an element inside a shadow DOM.
  • -
-

Got all that? Great, let's see how they work with some examples.

-

By default, this component uses the built-in content sanitizer, which strips out any HTML elements that are not explicitly allowed. See the sanitizer section in our JavaScript documentation for more details.

-

The animation effect of this component is dependent on the prefers-reduced-motion media query. See the reduced motion section of our accessibility documentation.

-

Examples

-

Enable tooltips

-

As mentioned above, you must initialize tooltips before they can be used. One way to initialize all tooltips on a page would be to select them by their data-bs-toggle attribute, like so:

-
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
-const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
-
- -

Hover over the links below to see tooltips:

-

Placeholder text to demonstrate some inline links with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of real text. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how these tooltips on links can work in practice, once you use them on your own site or project.

html
<p class="muted">Placeholder text to demonstrate some <a href="#" data-bs-toggle="tooltip" data-bs-title="Default tooltip">inline links</a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of <a href="#" data-bs-toggle="tooltip" data-bs-title="Another tooltip">real text</a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how <a href="#" data-bs-toggle="tooltip" data-bs-title="Another one here too">these tooltips on links</a> can work in practice, once you use them on <a href="#" data-bs-toggle="tooltip" data-bs-title="The last tip!">your own</a> site or project.</p>
-

Feel free to use either title or data-bs-title in your HTML. When title is used, Popper will replace it automatically with data-bs-title when the element is rendered.

-

Custom tooltips

-Added in v5.2.0 -

You can customize the appearance of tooltips using CSS variables. We set a custom class with data-bs-custom-class="custom-tooltip" to scope our custom appearance and use it to override a local CSS variable.

-
.custom-tooltip {
-  --bs-tooltip-bg: var(--bd-violet-bg);
-  --bs-tooltip-color: var(--bs-white);
-}
-
-
html
<button type="button" class="btn btn-secondary"
-      data-bs-toggle="tooltip" data-bs-placement="top"
-      data-bs-custom-class="custom-tooltip"
-      data-bs-title="This top tooltip is themed via CSS variables.">
-Custom tooltip
-</button>
-

Directions

-

Hover over the buttons below to see the four tooltips directions: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL.

-
-
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="Tooltip on top">
-  Tooltip on top
-</button>
-<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip on right">
-  Tooltip on right
-</button>
-<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip on bottom">
-  Tooltip on bottom
-</button>
-<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="Tooltip on left">
-  Tooltip on left
-</button>
-
-

And with custom HTML added:

-
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
-  Tooltip with HTML
-</button>
-
-

With an SVG:

-
-

CSS

-

Variables

-Added in v5.2.0 -

As part of Bootstrap’s evolving CSS variables approach, tooltips now use local CSS variables on .tooltip for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}tooltip-zindex: #{$zindex-tooltip};
-  --#{$prefix}tooltip-max-width: #{$tooltip-max-width};
-  --#{$prefix}tooltip-padding-x: #{$tooltip-padding-x};
-  --#{$prefix}tooltip-padding-y: #{$tooltip-padding-y};
-  --#{$prefix}tooltip-margin: #{$tooltip-margin};
-  @include rfs($tooltip-font-size, --#{$prefix}tooltip-font-size);
-  --#{$prefix}tooltip-color: #{$tooltip-color};
-  --#{$prefix}tooltip-bg: #{$tooltip-bg};
-  --#{$prefix}tooltip-border-radius: #{$tooltip-border-radius};
-  --#{$prefix}tooltip-opacity: #{$tooltip-opacity};
-  --#{$prefix}tooltip-arrow-width: #{$tooltip-arrow-width};
-  --#{$prefix}tooltip-arrow-height: #{$tooltip-arrow-height};
-  
-

Sass variables

-
$tooltip-font-size:                 $font-size-sm;
-$tooltip-max-width:                 200px;
-$tooltip-color:                     var(--#{$prefix}body-bg);
-$tooltip-bg:                        var(--#{$prefix}emphasis-color);
-$tooltip-border-radius:             var(--#{$prefix}border-radius);
-$tooltip-opacity:                   .9;
-$tooltip-padding-y:                 $spacer * .25;
-$tooltip-padding-x:                 $spacer * .5;
-$tooltip-margin:                    null; // TODO: remove this in v6
-
-$tooltip-arrow-width:               .8rem;
-$tooltip-arrow-height:              .4rem;
-// fusv-disable
-$tooltip-arrow-color:               null; // Deprecated in Bootstrap 5.2.0 for CSS variables
-// fusv-enable
-
-

Usage

-

The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element. Trigger the tooltip via JavaScript:

-
const exampleEl = document.getElementById('example')
-const tooltip = new bootstrap.Tooltip(exampleEl, options)
-
-

Tooltips automatically attempt to change positions when a parent container has overflow: auto or overflow: scroll, but still keeps the original placement's positioning. Set the boundary option (for the flip modifier using the popperConfig option) to any HTMLElement to override the default value, 'clippingParents', such as document.body:

const tooltip = new bootstrap.Tooltip('#example', {
-  boundary: document.body // or document.querySelector('#boundary')
-})
-
-

Markup

-

The required markup for a tooltip is only a data attribute and title on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to top by the plugin).

-

Keep tooltips accessible to keyboard and assistive technology users by only adding them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). While other HTML elements can be made focusable by adding tabindex="0", this can create annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce tooltips in this situation. Additionally, do not rely solely on hover as the trigger for your tooltips as this will make them impossible to trigger for keyboard users.

-
<!-- HTML to write -->
-<a href="#" data-bs-toggle="tooltip" data-bs-title="Some tooltip text!">Hover over me</a>
-
-<!-- Generated markup by the plugin -->
-<div class="tooltip bs-tooltip-auto" role="tooltip">
-  <div class="tooltip-arrow"></div>
-  <div class="tooltip-inner">
-    Some tooltip text!
-  </div>
-</div>
-
-

Disabled elements

-

Elements with the disabled attribute aren't interactive, meaning users cannot focus, hover, or click them to trigger a tooltip (or popover). As a workaround, you'll want to trigger the tooltip from a wrapper <div> or <span>, ideally made keyboard-focusable using tabindex="0".

-
- -
html
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-title="Disabled tooltip">
-<button class="btn btn-primary" type="button" disabled>Disabled button</button>
-</span>
-

Options

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-

Note that for security reasons the sanitize, sanitizeFn, and allowList options cannot be supplied using data attributes.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
allowListobjectDefault valueObject which contains allowed attributes and tags.
animationbooleantrueApply a CSS fade transition to the tooltip.
boundarystring, element'clippingParents'Overflow constraint boundary of the tooltip (applies only to Popper's preventOverflow modifier). By default, it's 'clippingParents' and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's detectOverflow docs.
containerstring, element, falsefalseAppends the tooltip to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize.
customClassstring, function''Add classes to the tooltip when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: 'class-1 class-2'. You can also pass a function that should return a single string containing additional class names.
delaynumber, object0Delay showing and hiding the tooltip (ms)—doesn't apply to manual trigger type. If a number is supplied, delay is applied to both hide/show. Object structure is: delay: { "show": 500, "hide": 100 }.
fallbackPlacementsarray['top', 'right', 'bottom', 'left']Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to Popper's behavior docs.
htmlbooleanfalseAllow HTML in the tooltip. If true, HTML tags in the tooltip's title will be rendered in the tooltip. If false, innerText property will be used to insert content into the DOM. Use text if you're worried about XSS attacks.
offsetarray, string, function[0, 6]Offset of the tooltip relative to its target. You can pass a string in data attributes with comma separated values like: data-bs-offset="10,20". When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: skidding, distance. For more information refer to Popper's offset docs.
placementstring, function'top'How to position the tooltip: auto, top, bottom, left, right. When auto is specified, it will dynamically reorient the tooltip. When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the tooltip instance.
popperConfignull, object, functionnullTo change Bootstrap's default Popper config, see Popper's configuration. When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper.
sanitizebooleantrueEnable or disable the sanitization. If activated 'template', 'content' and 'title' options will be sanitized.
sanitizeFnnull, functionnullHere you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.
selectorstring, falsefalseIf a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to also apply tooltips to dynamically added DOM elements (jQuery.on support). See this issue and an informative example. Note: title attribute must not be used as a selector.
templatestring'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'Base HTML to use when creating the tooltip. The tooltip's title will be injected into the .tooltip-inner. .tooltip-arrow will become the tooltip's arrow. The outermost wrapper element should have the .tooltip class and role="tooltip".
titlestring, element, function''The tooltip title. If a function is given, it will be called with its this reference set to the element that the popover is attached to.
triggerstring'hover focus'How tooltip is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. 'manual' indicates that the tooltip will be triggered programmatically via the .tooltip('show'), .tooltip('hide') and .tooltip('toggle') methods; this value cannot be combined with any other trigger. 'hover' on its own will result in tooltips that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present.
-

Data attributes for individual tooltips

Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above.

-

Using function with popperConfig

-
const tooltip = new bootstrap.Tooltip(element, {
-  popperConfig(defaultBsPopperConfig) {
-    // const newPopperConfig = {...}
-    // use defaultBsPopperConfig if needed...
-    // return newPopperConfig
-  }
-})
-
-

Methods

-

All API methods are asynchronous and start a transition. They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. Learn more in our JavaScript docs.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
disableRemoves the ability for an element's tooltip to be shown. The tooltip will only be able to be shown if it is re-enabled.
disposeHides and destroys an element's tooltip (Removes stored data on the DOM element). Tooltips that use delegation (which are created using the selector option) cannot be individually destroyed on descendant trigger elements.
enableGives an element's tooltip the ability to be shown. Tooltips are enabled by default.
getInstanceStatic method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized.
getOrCreateInstanceStatic method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized.
hideHides an element's tooltip. Returns to the caller before the tooltip has actually been hidden (i.e. before the hidden.bs.tooltip event occurs). This is considered a "manual" triggering of the tooltip.
setContentGives a way to change the tooltip's content after its initialization.
showReveals an element's tooltip. Returns to the caller before the tooltip has actually been shown (i.e. before the shown.bs.tooltip event occurs). This is considered a "manual" triggering of the tooltip. Tooltips with zero-length titles are never displayed.
toggleToggles an element's tooltip. Returns to the caller before the tooltip has actually been shown or hidden (i.e. before the shown.bs.tooltip or hidden.bs.tooltip event occurs). This is considered a "manual" triggering of the tooltip.
toggleEnabledToggles the ability for an element's tooltip to be shown or hidden.
updateUpdates the position of an element's tooltip.
-
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
-
-// setContent example
-tooltip.setContent({ '.tooltip-inner': 'another title' })
-
-
-

The setContent method accepts an object argument, where each property-key is a valid string selector within the tooltip template, and each related property-value can be string | element | function | null

-

Events

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EventDescription
hide.bs.tooltipThis event is fired immediately when the hide instance method has been called.
hidden.bs.tooltipThis event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete).
inserted.bs.tooltipThis event is fired after the show.bs.tooltip event when the tooltip template has been added to the DOM.
show.bs.tooltipThis event fires immediately when the show instance method is called.
shown.bs.tooltipThis event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete).
-
const myTooltipEl = document.getElementById('myTooltip')
-const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
-
-myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
-  // do something...
-})
-
-tooltip.hide()
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/content/figures/index.html b/site/dist/docs/5.3/content/figures/index.html deleted file mode 100644 index 3d98584067..0000000000 --- a/site/dist/docs/5.3/content/figures/index.html +++ /dev/null @@ -1,48 +0,0 @@ - Figures · Bootstrap v5.3

Documentation and examples for displaying related images and text with the figure component in Bootstrap.

On this page

Anytime you need to display a piece of content—like an image with an optional caption, consider using a <figure>.

-

Use the included .figure, .figure-img and .figure-caption classes to provide some baseline styles for the HTML5 <figure> and <figcaption> elements. Images in figures have no explicit size, so be sure to add the .img-fluid class to your <img> to make it responsive.

-
-Placeholder400x300 -
A caption for the above image.
-
html
<figure class="figure">
-<img src="..." class="figure-img img-fluid rounded" alt="...">
-<figcaption class="figure-caption">A caption for the above image.</figcaption>
-</figure>
-

Aligning the figure's caption is easy with our text utilities.

-
-Placeholder400x300 -
A caption for the above image.
-
html
<figure class="figure">
-<img src="..." class="figure-img img-fluid rounded" alt="...">
-<figcaption class="figure-caption text-end">A caption for the above image.</figcaption>
-</figure>
-

CSS

-

Sass variables

-
$figure-caption-font-size:          $small-font-size;
-$figure-caption-color:              var(--#{$prefix}secondary-color);
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/content/images/index.html b/site/dist/docs/5.3/content/images/index.html deleted file mode 100644 index 2891f7b85c..0000000000 --- a/site/dist/docs/5.3/content/images/index.html +++ /dev/null @@ -1,60 +0,0 @@ - Images · Bootstrap v5.3

Documentation and examples for opting images into responsive behavior (so they never become wider than their parent) and add lightweight styles to them—all via classes.

Responsive images

-

Images in Bootstrap are made responsive with .img-fluid. This applies max-width: 100%; and height: auto; to the image so that it scales with the parent width.

-
PlaceholderResponsive image
html
<img src="..." class="img-fluid" alt="...">
-

Image thumbnails

-

In addition to our border-radius utilities, you can use .img-thumbnail to give an image a rounded 1px border appearance.

-
A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera200x200
html
<img src="..." class="img-thumbnail" alt="...">
-

Aligning images

-

Align images with the helper float classes or text alignment classes. block-level images can be centered using the .mx-auto margin utility class.

-
Placeholder200x200 -Placeholder200x200
html
<img src="..." class="rounded float-start" alt="...">
-<img src="..." class="rounded float-end" alt="...">
-
Placeholder200x200
html
<img src="..." class="rounded mx-auto d-block" alt="...">
-
-Placeholder200x200 -
html
<div class="text-center">
-<img src="..." class="rounded" alt="...">
-</div>
-

Picture

-

If you are using the <picture> element to specify multiple <source> elements for a specific <img>, make sure to add the .img-* classes to the <img> and not to the <picture> tag.

-
<picture>
-  <source srcset="..." type="image/svg+xml">
-  <img src="..." class="img-fluid img-thumbnail" alt="...">
-</picture>
-
-

CSS

-

Sass variables

-

Variables are available for image thumbnails.

-
$thumbnail-padding:                 .25rem;
-$thumbnail-bg:                      var(--#{$prefix}body-bg);
-$thumbnail-border-width:            var(--#{$prefix}border-width);
-$thumbnail-border-color:            var(--#{$prefix}border-color);
-$thumbnail-border-radius:           var(--#{$prefix}border-radius);
-$thumbnail-box-shadow:              var(--#{$prefix}box-shadow-sm);
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/content/index.html b/site/dist/docs/5.3/content/index.html deleted file mode 100644 index 9fb4be8a99..0000000000 --- a/site/dist/docs/5.3/content/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/content/reboot/index.html b/site/dist/docs/5.3/content/reboot/index.html deleted file mode 100644 index 28d872e6b1..0000000000 --- a/site/dist/docs/5.3/content/reboot/index.html +++ /dev/null @@ -1,332 +0,0 @@ - Reboot · Bootstrap v5.3

Reboot, a collection of element-specific CSS changes in a single file, kickstart Bootstrap to provide an elegant, consistent, and simple baseline to build upon.

Approach

-

Reboot builds upon Normalize, providing many HTML elements with somewhat opinionated styles using only element selectors. Additional styling is done only with classes. For example, we reboot some <table> styles for a simpler baseline and later provide .table, .table-bordered, and more.

-

Here are our guidelines and reasons for choosing what to override in Reboot:

-
    -
  • Update some browser default values to use rems instead of ems for scalable component spacing.
  • -
  • Avoid margin-top. Vertical margins can collapse, yielding unexpected results. More importantly though, a single direction of margin is a simpler mental model.
  • -
  • For easier scaling across device sizes, block elements should use rems for margins.
  • -
  • Keep declarations of font-related properties to a minimum, using inherit whenever possible.
  • -
-

CSS variables

-Added in v5.2.0 -

With v5.1.1, we standardized our required @imports across all our CSS bundles (including bootstrap.css, bootstrap-reboot.css, and bootstrap-grid.css) to include _root.scss. This adds :root level CSS variables to all bundles, regardless of how many of them are used in that bundle. Ultimately Bootstrap 5 will continue to see more CSS variables added over time, in order to provide more real-time customization without the need to always recompile Sass. Our approach is to take our source Sass variables and transform them into CSS variables. That way, even if you don't use CSS variables, you still have all the power of Sass. This is still in-progress and will take time to fully implement.

-

For example, consider these :root CSS variables for common <body> styles:

-
  @if $font-size-root != null {
-    --#{$prefix}root-font-size: #{$font-size-root};
-  }
-  --#{$prefix}body-font-family: #{inspect($font-family-base)};
-  @include rfs($font-size-base, --#{$prefix}body-font-size);
-  --#{$prefix}body-font-weight: #{$font-weight-base};
-  --#{$prefix}body-line-height: #{$line-height-base};
-  @if $body-text-align != null {
-    --#{$prefix}body-text-align: #{$body-text-align};
-  }
-
-  --#{$prefix}body-color: #{$body-color};
-  --#{$prefix}body-color-rgb: #{to-rgb($body-color)};
-  --#{$prefix}body-bg: #{$body-bg};
-  --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};
-
-  --#{$prefix}emphasis-color: #{$body-emphasis-color};
-  --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};
-
-  --#{$prefix}secondary-color: #{$body-secondary-color};
-  --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};
-  --#{$prefix}secondary-bg: #{$body-secondary-bg};
-  --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};
-
-  --#{$prefix}tertiary-color: #{$body-tertiary-color};
-  --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
-  --#{$prefix}tertiary-bg: #{$body-tertiary-bg};
-  --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
-  
-

In practice, those variables are then applied in Reboot like so:

-
body {
-  margin: 0; // 1
-  font-family: var(--#{$prefix}body-font-family);
-  @include font-size(var(--#{$prefix}body-font-size));
-  font-weight: var(--#{$prefix}body-font-weight);
-  line-height: var(--#{$prefix}body-line-height);
-  color: var(--#{$prefix}body-color);
-  text-align: var(--#{$prefix}body-text-align);
-  background-color: var(--#{$prefix}body-bg); // 2
-  -webkit-text-size-adjust: 100%; // 3
-  -webkit-tap-highlight-color: rgba($black, 0); // 4
-}
-
-

Which allows you to make real-time customizations however you like:

-
<body style="--bs-body-color: #333;">
-  <!-- ... -->
-</body>
-
-

Page defaults

-

The <html> and <body> elements are updated to provide better page-wide defaults. More specifically:

-
    -
  • The box-sizing is globally set on every element—including *::before and *::after, to border-box. This ensures that the declared width of element is never exceeded due to padding or border. -
      -
    • No base font-size is declared on the <html>, but 16px is assumed (the browser default). font-size: 1rem is applied on the <body> for easy responsive type-scaling via media queries while respecting user preferences and ensuring a more accessible approach. This browser default can be overridden by modifying the $font-size-root variable.
    • -
    -
  • -
  • The <body> also sets a global font-family, font-weight, line-height, and color. This is inherited later by some form elements to prevent font inconsistencies.
  • -
  • For safety, the <body> has a declared background-color, defaulting to #fff.
  • -
-

Native font stack

-

Bootstrap utilizes a "native font stack" or "system font stack" for optimum text rendering on every device and OS. These system fonts have been designed specifically with today's devices in mind, with improved rendering on screens, variable font support, and more. Read more about native font stacks in this Smashing Magazine article.

-
$font-family-sans-serif:
-  // Cross-platform generic font family (default user interface font)
-  system-ui,
-  // Safari for macOS and iOS (San Francisco)
-  -apple-system,
-  // Windows
-  "Segoe UI",
-  // Android
-  Roboto,
-  // older macOS and iOS
-  "Helvetica Neue",
-  // Linux
-  "Noto Sans",
-  "Liberation Sans",
-  // Basic web fallback
-  Arial,
-  // Sans serif fallback
-  sans-serif,
-  // Emoji fonts
-  "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
-
-

Note that because the font stack includes emoji fonts, many common symbol/dingbat Unicode characters will be rendered as multicolored pictographs. Their appearance will vary, depending on the style used in the browser/platform's native emoji font, and they won't be affected by any CSS color styles.

-

This font-family is applied to the <body> and automatically inherited globally throughout Bootstrap. To switch the global font-family, update $font-family-base and recompile Bootstrap.

-

Headings

-

All heading elements—<h1><h6> have their margin-top removed, margin-bottom: .5rem set, and line-height tightened. While headings inherit their color by default, you can also override it via optional CSS variable, --bs-heading-color.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeadingExample
<h1></h1>h1. Bootstrap heading
<h2></h2>h2. Bootstrap heading
<h3></h3>h3. Bootstrap heading
<h4></h4>h4. Bootstrap heading
<h5></h5>h5. Bootstrap heading
<h6></h6>h6. Bootstrap heading
-

Paragraphs

-

All <p> elements have their margin-top removed and margin-bottom: 1rem set for easy spacing.

-

This is an example paragraph.

html
<p>This is an example paragraph.</p>
- -

Links have a default color and underline applied. While links change on :hover, they don't change based on whether someone :visited the link. They also receive no special :focus styles.

-
html
<a href="#">This is an example link</a>
-

As of v5.3.x, link color is set using rgba() and new -rgb CSS variables, allowing for easy customization of link color opacity. Change the link color opacity with the --bs-link-opacity CSS variable:

-
html
<a href="#" style="--bs-link-opacity: .5">This is an example link</a>
-

Placeholder links—those without an href—are targeted with a more specific selector and have their color and text-decoration reset to their default values.

-
html
<a>This is a placeholder link</a>
-

Horizontal rules

-

The <hr> element has been simplified. Similar to browser defaults, <hr>s are styled via border-top, have a default opacity: .25, and automatically inherit their border-color via color, including when color is set via the parent. They can be modified with text, border, and opacity utilities.

-

- -
-
-
- -
-
html
<hr>
-
-<div class="text-success">
-<hr>
-</div>
-
-<hr class="border border-danger border-2 opacity-50">
-<hr class="border border-primary border-3 opacity-75">
-

Lists

-

All lists—<ul>, <ol>, and <dl>—have their margin-top removed and a margin-bottom: 1rem. Nested lists have no margin-bottom. We've also reset the padding-left on <ul> and <ol> elements.

-
    -
  • All lists have their top margin removed
  • -
  • And their bottom margin normalized
  • -
  • Nested lists have no bottom margin -
      -
    • This way they have a more even appearance
    • -
    • Particularly when followed by more list items
    • -
    -
  • -
  • The left padding has also been reset
  • -
    -
  1. Here's an ordered list
  2. -
  3. With a few list items
  4. -
  5. It has the same overall look
  6. -
  7. As the previous unordered list
  8. -
-

For simpler styling, clear hierarchy, and better spacing, description lists have updated margins. <dd>s reset margin-left to 0 and add margin-bottom: .5rem. <dt>s are bolded.

-
Description lists
A description list is perfect for defining terms.
Term
Definition for the term.
A second definition for the same term.
Another term
Definition for this other term.
-

Inline code

-

Wrap inline snippets of code with <code>. Be sure to escape HTML angle brackets.

-
For example, <section> should be wrapped as inline.
html
For example, <code>&lt;section&gt;</code> should be wrapped as inline.
-

Code blocks

-

Use <pre>s for multiple lines of code. Once again, be sure to escape any angle brackets in the code for proper rendering. The <pre> element is reset to remove its margin-top and use rem units for its margin-bottom.

-
<p>Sample text here...</p>
-<p>And another line of sample text here...</p>
-
html
<pre><code>&lt;p&gt;Sample text here...&lt;/p&gt;
-&lt;p&gt;And another line of sample text here...&lt;/p&gt;
-</code></pre>
-

Variables

-

For indicating variables use the <var> tag.

-
y = mx + b
html
<var>y</var> = <var>m</var><var>x</var> + <var>b</var>
-

User input

-

Use the <kbd> to indicate input that is typically entered via keyboard.

-
To switch directories, type cd followed by the name of the directory.
-To edit settings, press Ctrl + ,
html
To switch directories, type <kbd>cd</kbd> followed by the name of the directory.<br/>
-To edit settings, press <kbd><kbd>Ctrl</kbd> + <kbd>,</kbd></kbd>
-

Sample output

-

For indicating sample output from a program use the <samp> tag.

-
This text is meant to be treated as sample output from a computer program.
html
<samp>This text is meant to be treated as sample output from a computer program.</samp>
-

Tables

-

Tables are slightly adjusted to style <caption>s, collapse borders, and ensure consistent text-align throughout. Additional changes for borders, padding, and more come with the .table class.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- This is an example table, and this is its caption to describe the contents. -
Table headingTable headingTable headingTable heading
Table cellTable cellTable cellTable cell
Table cellTable cellTable cellTable cell
Table cellTable cellTable cellTable cell
html
<table>
-<caption>
-  This is an example table, and this is its caption to describe the contents.
-</caption>
-<thead>
-  <tr>
-    <th>Table heading</th>
-    <th>Table heading</th>
-    <th>Table heading</th>
-    <th>Table heading</th>
-  </tr>
-</thead>
-<tbody>
-  <tr>
-    <td>Table cell</td>
-    <td>Table cell</td>
-    <td>Table cell</td>
-    <td>Table cell</td>
-  </tr>
-  <tr>
-    <td>Table cell</td>
-    <td>Table cell</td>
-    <td>Table cell</td>
-    <td>Table cell</td>
-  </tr>
-  <tr>
-    <td>Table cell</td>
-    <td>Table cell</td>
-    <td>Table cell</td>
-    <td>Table cell</td>
-  </tr>
-</tbody>
-</table>
-

Forms

-

Various form elements have been rebooted for simpler base styles. Here are some of the most notable changes:

-
    -
  • <fieldset>s have no borders, padding, or margin so they can be easily used as wrappers for individual inputs or groups of inputs.
  • -
  • <legend>s, like fieldsets, have also been restyled to be displayed as a heading of sorts.
  • -
  • <label>s are set to display: inline-block to allow margin to be applied.
  • -
  • <input>s, <select>s, <textarea>s, and <button>s are mostly addressed by Normalize, but Reboot removes their margin and sets line-height: inherit, too.
  • -
  • <textarea>s are modified to only be resizable vertically as horizontal resizing often "breaks" page layout.
  • -
  • <button>s and <input> button elements have cursor: pointer when :not(:disabled).
  • -
-

These changes, and more, are demonstrated below.

-

Some date inputs types are not fully supported by the latest versions of Safari and Firefox.

-
Example legend

Check this checkbox

Option one is this and that

100

-

Pointers on buttons

-

Reboot includes an enhancement for role="button" to change the default cursor to pointer. Add this attribute to elements to help indicate elements are interactive. This role isn't necessary for <button> elements, which get their own cursor change.

-
Non-button element button
html
<span role="button" tabindex="0">Non-button element button</span>
-

Misc elements

-

Address

-

The <address> element is updated to reset the browser default font-style from italic to normal. line-height is also now inherited, and margin-bottom: 1rem has been added. <address>s are for presenting contact information for the nearest ancestor (or an entire body of work). Preserve formatting by ending lines with <br/>.

-

ACME Corporation
-1123 Fictional St,
-San Francisco, CA 94103
-P: (123) 456-7890

Full Name
first.last@example.com
-

Blockquote

-

The default margin on blockquotes is 1em 40px, so we reset that to 0 0 1rem for something more consistent with other elements.

-

A well-known quote, contained in a blockquote element.

Someone famous in Source Title

-

Inline elements

-

The <abbr> element receives basic styling to make it stand out amongst paragraph text.

-

The HTML abbreviation element.

-

Summary

-

The default cursor on summary is text, so we reset that to pointer to convey that the element can be interacted with by clicking on it.

-
Some details

More info about the details.

Even more details

Here are even more details about the details.

-

HTML5 [hidden] attribute

-

HTML5 adds a new global attribute named [hidden], which is styled as display: none by default. Borrowing an idea from PureCSS, we improve upon this default by making [hidden] { display: none !important; } to help prevent its display from getting accidentally overridden.

-
<input type="text" hidden/>
-
-

Since [hidden] is not compatible with jQuery's $(...).hide() and $(...).show() methods, we don't specifically endorse [hidden] over other techniques for managing the display of elements.

-

To merely toggle the visibility of an element, meaning its display is not modified and the element can still affect the flow of the document, use the .invisible class instead.

\ No newline at end of file diff --git a/site/dist/docs/5.3/content/tables/index.html b/site/dist/docs/5.3/content/tables/index.html deleted file mode 100644 index 0b3c6c4e22..0000000000 --- a/site/dist/docs/5.3/content/tables/index.html +++ /dev/null @@ -1,977 +0,0 @@ - Tables · Bootstrap v5.3

Documentation and examples for opt-in styling of tables (given their prevalent use in JavaScript plugins) with Bootstrap.

Overview

-

Due to the widespread use of <table> elements across third-party widgets like calendars and date pickers, Bootstrap's tables are opt-in. Add the base class .table to any <table>, then extend with our optional modifier classes or custom styles. All table styles are not inherited in Bootstrap, meaning any nested tables can be styled independent from the parent.

-

Using the most basic table markup, here's how .table-based tables look in Bootstrap.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table">
-  [object Promise]
-</table>
-

Variants

-

Use contextual classes to color tables, table rows or individual cells.

-

Heads up! Because of the more complicated CSS used to generate our table variants, they most likely won't see color mode adaptive styling until v6.

-
ClassHeadingHeading
DefaultCellCell
PrimaryCellCell
SecondaryCellCell
SuccessCellCell
DangerCellCell
WarningCellCell
InfoCellCell
LightCellCell
DarkCellCell
-
<!-- On tables -->
-<table class="table-primary">...</table>
-<table class="table-secondary">...</table>
-<table class="table-success">...</table>
-<table class="table-danger">...</table>
-<table class="table-warning">...</table>
-<table class="table-info">...</table>
-<table class="table-light">...</table>
-<table class="table-dark">...</table>
-
-<!-- On rows -->
-<tr class="table-primary">...</tr>
-<tr class="table-secondary">...</tr>
-<tr class="table-success">...</tr>
-<tr class="table-danger">...</tr>
-<tr class="table-warning">...</tr>
-<tr class="table-info">...</tr>
-<tr class="table-light">...</tr>
-<tr class="table-dark">...</tr>
-
-<!-- On cells (`td` or `th`) -->
-<tr>
-  <td class="table-primary">...</td>
-  <td class="table-secondary">...</td>
-  <td class="table-success">...</td>
-  <td class="table-danger">...</td>
-  <td class="table-warning">...</td>
-  <td class="table-info">...</td>
-  <td class="table-light">...</td>
-  <td class="table-dark">...</td>
-</tr>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

Accented tables

-

Striped rows

-

Use .table-striped to add zebra-striping to any table row within the <tbody>.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-striped">
-  ...
-</table>
-

Striped columns

-

Use .table-striped-columns to add zebra-striping to any table column.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-striped-columns">
-  ...
-</table>
-

These classes can also be added to table variants:

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-dark table-striped">
-  ...
-</table>
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-dark table-striped-columns">
-  ...
-</table>
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-success table-striped">
-  ...
-</table>
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-success table-striped-columns">
-  ...
-</table>
-

Hoverable rows

-

Add .table-hover to enable a hover state on table rows within a <tbody>.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-hover">
-  ...
-</table>
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-dark table-hover">
-  ...
-</table>
-

These hoverable rows can also be combined with the striped rows variant:

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-striped table-hover">
-  ...
-</table>
-

Active tables

-

Highlight a table row or cell by adding a .table-active class.

-
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
<table class="table">
-  <thead>
-    ...
-  </thead>
-  <tbody>
-    <tr class="table-active">
-      ...
-    </tr>
-    <tr>
-      ...
-    </tr>
-    <tr>
-      <th scope="row">3</th>
-      <td colspan="2" class="table-active">Larry the Bird</td>
-      <td>@twitter</td>
-    </tr>
-  </tbody>
-</table>
-
-
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
<table class="table table-dark">
-  <thead>
-    ...
-  </thead>
-  <tbody>
-    <tr class="table-active">
-      ...
-    </tr>
-    <tr>
-      ...
-    </tr>
-    <tr>
-      <th scope="row">3</th>
-      <td colspan="2" class="table-active">Larry the Bird</td>
-      <td>@twitter</td>
-    </tr>
-  </tbody>
-</table>
-
-

How do the variants and accented tables work?

-

For the accented tables (striped rows, striped columns, hoverable rows, and active tables), we used some techniques to make these effects work for all our table variants:

-
    -
  • We start by setting the background of a table cell with the --bs-table-bg custom property. All table variants then set that custom property to colorize the table cells. This way, we don't get into trouble if semi-transparent colors are used as table backgrounds.
  • -
  • Then we add an inset box shadow on the table cells with box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); to layer on top of any specified background-color. It uses custom cascade to override the box-shadow, regardless the CSS specificity. Because we use a huge spread and no blur, the color will be monotone. Since --bs-table-accent-bg is set to transparent by default, we don't have a default box shadow.
  • -
  • When either .table-striped, .table-striped-columns, .table-hover or .table-active classes are added, either --bs-table-bg-type or --bs-table-bg-state (by default set to initial) are set to a semitransparent color (--bs-table-striped-bg, --bs-table-active-bg or --bs-table-hover-bg) to colorize the background and override default --bs-table-accent-bg.
  • -
  • For each table variant, we generate a --bs-table-accent-bg color with the highest contrast depending on that color. For example, the accent color for .table-primary is darker while .table-dark has a lighter accent color.
  • -
  • Text and border colors are generated the same way, and their colors are inherited by default.
  • -
-

Behind the scenes it looks like this:

-
@mixin table-variant($state, $background) {
-  .table-#{$state} {
-    $color: color-contrast(opaque($body-bg, $background));
-    $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));
-    $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));
-    $active-bg: mix($color, $background, percentage($table-active-bg-factor));
-    $table-border-color: mix($color, $background, percentage($table-border-factor));
-
-    --#{$prefix}table-color: #{$color};
-    --#{$prefix}table-bg: #{$background};
-    --#{$prefix}table-border-color: #{$table-border-color};
-    --#{$prefix}table-striped-bg: #{$striped-bg};
-    --#{$prefix}table-striped-color: #{color-contrast($striped-bg)};
-    --#{$prefix}table-active-bg: #{$active-bg};
-    --#{$prefix}table-active-color: #{color-contrast($active-bg)};
-    --#{$prefix}table-hover-bg: #{$hover-bg};
-    --#{$prefix}table-hover-color: #{color-contrast($hover-bg)};
-
-    color: var(--#{$prefix}table-color);
-    border-color: var(--#{$prefix}table-border-color);
-  }
-}
-
-

Table borders

-

Bordered tables

-

Add .table-bordered for borders on all sides of the table and cells.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-bordered">
-  ...
-</table>
-

Border color utilities can be added to change colors:

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-bordered border-primary">
-  ...
-</table>
-

Tables without borders

-

Add .table-borderless for a table without borders.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-borderless">
-  ...
-</table>
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-dark table-borderless">
-  ...
-</table>
-

Small tables

-

Add .table-sm to make any .table more compact by cutting all cell padding in half.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-sm">
-  ...
-</table>
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
<table class="table table-dark table-sm">
-  ...
-</table>
-

Table group dividers

-

Add a thicker border, darker between table groups—<thead>, <tbody>, and <tfoot>—with .table-group-divider. Customize the color by changing the border-top-color (which we don't currently provide a utility class for at this time).

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
html
<table class="table">
-<thead>
-  <tr>
-    <th scope="col">#</th>
-    <th scope="col">First</th>
-    <th scope="col">Last</th>
-    <th scope="col">Handle</th>
-  </tr>
-</thead>
-<tbody class="table-group-divider">
-  <tr>
-    <th scope="row">1</th>
-    <td>Mark</td>
-    <td>Otto</td>
-    <td>@mdo</td>
-  </tr>
-  <tr>
-    <th scope="row">2</th>
-    <td>Jacob</td>
-    <td>Thornton</td>
-    <td>@fat</td>
-  </tr>
-  <tr>
-    <th scope="row">3</th>
-    <td colspan="2">Larry the Bird</td>
-    <td>@twitter</td>
-  </tr>
-</tbody>
-</table>
-

Vertical alignment

-

Table cells of <thead> are always vertical aligned to the bottom. Table cells in <tbody> inherit their alignment from <table> and are aligned to the top by default. Use the vertical align classes to re-align where needed.

-
Heading 1Heading 2Heading 3Heading 4
This cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableThis here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.
This cell inherits vertical-align: bottom; from the table rowThis cell inherits vertical-align: bottom; from the table rowThis cell inherits vertical-align: bottom; from the table rowThis here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.
This cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableThis cell is aligned to the top.This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.
-
<div class="table-responsive">
-  <table class="table align-middle">
-    <thead>
-      <tr>
-        ...
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        ...
-      </tr>
-      <tr class="align-bottom">
-        ...
-      </tr>
-      <tr>
-        <td>...</td>
-        <td>...</td>
-        <td class="align-top">This cell is aligned to the top.</td>
-        <td>...</td>
-      </tr>
-    </tbody>
-  </table>
-</div>
-
-

Nesting

-

Border styles, active styles, and table variants are not inherited by nested tables.

-
#FirstLastHandle
1MarkOtto@mdo
HeaderHeaderHeader
AFirstLast
BFirstLast
CFirstLast
3Larrythe Bird@twitter
-
<table class="table table-striped table-bordered">
-  <thead>
-    ...
-  </thead>
-  <tbody>
-    ...
-    <tr>
-      <td colspan="4">
-        <table class="table mb-0">
-          ...
-        </table>
-      </td>
-    </tr>
-    ...
-  </tbody>
-</table>
-
-

How nesting works

-

To prevent any styles from leaking to nested tables, we use the child combinator (>) selector in our CSS. Since we need to target all the tds and ths in the thead, tbody, and tfoot, our selector would look pretty long without it. As such, we use the rather odd looking .table > :not(caption) > * > * selector to target all tds and ths of the .table, but none of any potential nested tables.

-

Note that if you add <tr>s as direct children of a table, those <tr> will be wrapped in a <tbody> by default, thus making our selectors work as intended.

-

Anatomy

-

Table head

-

Similar to tables and dark tables, use the modifier classes .table-light or .table-dark to make <thead>s appear light or dark gray.

-
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
<table class="table">
-  <thead class="table-light">
-    ...
-  </thead>
-  <tbody>
-    ...
-  </tbody>
-</table>
-
-
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
<table class="table">
-  <thead class="table-dark">
-    ...
-  </thead>
-  <tbody>
-    ...
-  </tbody>
-</table>
-
-

Table foot

-
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
FooterFooterFooterFooter
-
<table class="table">
-  <thead>
-    ...
-  </thead>
-  <tbody>
-    ...
-  </tbody>
-  <tfoot>
-    ...
-  </tfoot>
-</table>
-
-

Captions

-

A <caption> functions like a heading for a table. It helps users with screen readers to find a table and understand what it's about and decide if they want to read it.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
List of users
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
<table class="table table-sm">
-  <caption>List of users</caption>
-  <thead>
-    ...
-  </thead>
-  <tbody>
-    ...
-  </tbody>
-</table>
-
-

You can also put the <caption> on the top of the table with .caption-top.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
List of users
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
html
<table class="table caption-top">
-<caption>List of users</caption>
-<thead>
-  <tr>
-    <th scope="col">#</th>
-    <th scope="col">First</th>
-    <th scope="col">Last</th>
-    <th scope="col">Handle</th>
-  </tr>
-</thead>
-<tbody>
-  <tr>
-    <th scope="row">1</th>
-    <td>Mark</td>
-    <td>Otto</td>
-    <td>@mdo</td>
-  </tr>
-  <tr>
-    <th scope="row">2</th>
-    <td>Jacob</td>
-    <td>Thornton</td>
-    <td>@fat</td>
-  </tr>
-  <tr>
-    <th scope="row">3</th>
-    <td>Larry</td>
-    <td>the Bird</td>
-    <td>@twitter</td>
-  </tr>
-</tbody>
-</table>
-

Responsive tables

-

Responsive tables allow tables to be scrolled horizontally with ease. Make any table responsive across all viewports by wrapping a .table with .table-responsive. Or, pick a maximum breakpoint with which to have a responsive table up to by using .table-responsive{-sm|-md|-lg|-xl|-xxl}.

-
Vertical clipping/truncation

Responsive tables make use of overflow-y: hidden, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.

-

Always responsive

-

Across every breakpoint, use .table-responsive for horizontally scrolling tables.

-
#HeadingHeadingHeadingHeadingHeadingHeadingHeadingHeadingHeading
1CellCellCellCellCellCellCellCellCell
2CellCellCellCellCellCellCellCellCell
3CellCellCellCellCellCellCellCellCell
-
<div class="table-responsive">
-  <table class="table">
-    ...
-  </table>
-</div>
-
-

Breakpoint specific

-

Use .table-responsive{-sm|-md|-lg|-xl|-xxl} as needed to create responsive tables up to a particular breakpoint. From that breakpoint and up, the table will behave normally and not scroll horizontally.

-

These tables may appear broken until their responsive styles apply at specific viewport widths.

-
#HeadingHeadingHeadingHeadingHeadingHeadingHeadingHeading
1CellCellCellCellCellCellCellCell
2CellCellCellCellCellCellCellCell
3CellCellCellCellCellCellCellCell
#HeadingHeadingHeadingHeadingHeadingHeadingHeadingHeading
1CellCellCellCellCellCellCellCell
2CellCellCellCellCellCellCellCell
3CellCellCellCellCellCellCellCell
#HeadingHeadingHeadingHeadingHeadingHeadingHeadingHeading
1CellCellCellCellCellCellCellCell
2CellCellCellCellCellCellCellCell
3CellCellCellCellCellCellCellCell
#HeadingHeadingHeadingHeadingHeadingHeadingHeadingHeading
1CellCellCellCellCellCellCellCell
2CellCellCellCellCellCellCellCell
3CellCellCellCellCellCellCellCell
#HeadingHeadingHeadingHeadingHeadingHeadingHeadingHeading
1CellCellCellCellCellCellCellCell
2CellCellCellCellCellCellCellCell
3CellCellCellCellCellCellCellCell
-
<div class="table-responsive">
-<table class="table">
-  ...
-</table>
-</div>
-
-<div class="table-responsive-sm">
-<table class="table">
-  ...
-</table>
-</div>
-
-<div class="table-responsive-md">
-<table class="table">
-  ...
-</table>
-</div>
-
-<div class="table-responsive-lg">
-<table class="table">
-  ...
-</table>
-</div>
-
-<div class="table-responsive-xl">
-<table class="table">
-  ...
-</table>
-</div>
-
-<div class="table-responsive-xxl">
-<table class="table">
-  ...
-</table>
-</div>
-
-

CSS

-

Sass variables

-
$table-cell-padding-y:        .5rem;
-$table-cell-padding-x:        .5rem;
-$table-cell-padding-y-sm:     .25rem;
-$table-cell-padding-x-sm:     .25rem;
-
-$table-cell-vertical-align:   top;
-
-$table-color:                 var(--#{$prefix}emphasis-color);
-$table-bg:                    var(--#{$prefix}body-bg);
-$table-accent-bg:             transparent;
-
-$table-th-font-weight:        null;
-
-$table-striped-color:         $table-color;
-$table-striped-bg-factor:     .05;
-$table-striped-bg:            rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor);
-
-$table-active-color:          $table-color;
-$table-active-bg-factor:      .1;
-$table-active-bg:             rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor);
-
-$table-hover-color:           $table-color;
-$table-hover-bg-factor:       .075;
-$table-hover-bg:              rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor);
-
-$table-border-factor:         .2;
-$table-border-width:          var(--#{$prefix}border-width);
-$table-border-color:          var(--#{$prefix}border-color);
-
-$table-striped-order:         odd;
-$table-striped-columns-order: even;
-
-$table-group-separator-color: currentcolor;
-
-$table-caption-color:         var(--#{$prefix}secondary-color);
-
-$table-bg-scale:              -80%;
-
-

Sass loops

-
$table-variants: (
-  "primary":    shift-color($primary, $table-bg-scale),
-  "secondary":  shift-color($secondary, $table-bg-scale),
-  "success":    shift-color($success, $table-bg-scale),
-  "info":       shift-color($info, $table-bg-scale),
-  "warning":    shift-color($warning, $table-bg-scale),
-  "danger":     shift-color($danger, $table-bg-scale),
-  "light":      $light,
-  "dark":       $dark,
-);
-
-

Customizing

-
    -
  • The factor variables ($table-striped-bg-factor, $table-active-bg-factor & $table-hover-bg-factor) are used to determine the contrast in table variants.
  • -
  • Apart from the light & dark table variants, theme colors are lightened by the $table-bg-scale variable.
  • -
\ No newline at end of file diff --git a/site/dist/docs/5.3/content/typography/index.html b/site/dist/docs/5.3/content/typography/index.html deleted file mode 100644 index 60ad722b35..0000000000 --- a/site/dist/docs/5.3/content/typography/index.html +++ /dev/null @@ -1,380 +0,0 @@ - Typography · Bootstrap v5.3

Typography

Documentation and examples for Bootstrap typography, including global settings, headings, body text, lists, and more.

Global settings

-

Bootstrap sets basic global display, typography, and link styles. When more control is needed, check out the textual utility classes.

-
    -
  • Use a native font stack that selects the best font-family for each OS and device.
  • -
  • For a more inclusive and accessible type scale, we use the browser's default root font-size (typically 16px) so visitors can customize their browser defaults as needed.
  • -
  • Use the $font-family-base, $font-size-base, and $line-height-base attributes as our typographic base applied to the <body>.
  • -
  • Set the global link color via $link-color.
  • -
  • Use $body-bg to set a background-color on the <body> (#fff by default).
  • -
-

These styles can be found within _reboot.scss, and the global variables are defined in _variables.scss. Make sure to set $font-size-base in rem.

-

Headings

-

All HTML headings, <h1> through <h6>, are available.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeadingExample
<h1></h1>h1. Bootstrap heading
<h2></h2>h2. Bootstrap heading
<h3></h3>h3. Bootstrap heading
<h4></h4>h4. Bootstrap heading
<h5></h5>h5. Bootstrap heading
<h6></h6>h6. Bootstrap heading
-
<h1>h1. Bootstrap heading</h1>
-<h2>h2. Bootstrap heading</h2>
-<h3>h3. Bootstrap heading</h3>
-<h4>h4. Bootstrap heading</h4>
-<h5>h5. Bootstrap heading</h5>
-<h6>h6. Bootstrap heading</h6>
-
-

.h1 through .h6 classes are also available, for when you want to match the font styling of a heading but cannot use the associated HTML element.

-

h1. Bootstrap heading

-

h2. Bootstrap heading

-

h3. Bootstrap heading

-

h4. Bootstrap heading

-

h5. Bootstrap heading

-

h6. Bootstrap heading

html
<p class="h1">h1. Bootstrap heading</p>
-<p class="h2">h2. Bootstrap heading</p>
-<p class="h3">h3. Bootstrap heading</p>
-<p class="h4">h4. Bootstrap heading</p>
-<p class="h5">h5. Bootstrap heading</p>
-<p class="h6">h6. Bootstrap heading</p>
-

Customizing headings

-

Use the included utility classes to recreate the small secondary heading text from Bootstrap 3.

-

-Fancy display heading -With faded secondary text -

html
<h3>
-Fancy display heading
-<small class="text-body-secondary">With faded secondary text</small>
-</h3>
-

Display headings

-

Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a display heading—a larger, slightly more opinionated heading style.

-
Display 1
Display 2
Display 3
Display 4
Display 5
Display 6
-
<h1 class="display-1">Display 1</h1>
-<h1 class="display-2">Display 2</h1>
-<h1 class="display-3">Display 3</h1>
-<h1 class="display-4">Display 4</h1>
-<h1 class="display-5">Display 5</h1>
-<h1 class="display-6">Display 6</h1>
-
-

Display headings are configured via the $display-font-sizes Sass map and two variables, $display-font-weight and $display-line-height.

-

Display headings are customizable via two variables, $display-font-family and $display-font-style.

-
$display-font-sizes: (
-  1: 5rem,
-  2: 4.5rem,
-  3: 4rem,
-  4: 3.5rem,
-  5: 3rem,
-  6: 2.5rem
-);
-
-$display-font-family: null;
-$display-font-style:  null;
-$display-font-weight: 300;
-$display-line-height: $headings-line-height;
-
-

Lead

-

Make a paragraph stand out by adding .lead.

-

-This is a lead paragraph. It stands out from regular paragraphs. -

html
<p class="lead">
-This is a lead paragraph. It stands out from regular paragraphs.
-</p>
-

Inline text elements

-

Styling for common inline HTML5 elements.

-

You can use the mark tag to highlight text.

-

This line of text is meant to be treated as deleted text.

-

This line of text is meant to be treated as no longer accurate.

-

This line of text is meant to be treated as an addition to the document.

-

This line of text will render as underlined.

-

This line of text is meant to be treated as fine print.

-

This line rendered as bold text.

-

This line rendered as italicized text.

html
<p>You can use the mark tag to <mark>highlight</mark> text.</p>
-<p><del>This line of text is meant to be treated as deleted text.</del></p>
-<p><s>This line of text is meant to be treated as no longer accurate.</s></p>
-<p><ins>This line of text is meant to be treated as an addition to the document.</ins></p>
-<p><u>This line of text will render as underlined.</u></p>
-<p><small>This line of text is meant to be treated as fine print.</small></p>
-<p><strong>This line rendered as bold text.</strong></p>
-<p><em>This line rendered as italicized text.</em></p>
-

Beware that those tags should be used for semantic purpose:

-
    -
  • <mark> represents text which is marked or highlighted for reference or notation purposes.
  • -
  • <small> represents side-comments and small print, like copyright and legal text.
  • -
  • <s> represents element that are no longer relevant or no longer accurate.
  • -
  • <u> represents a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation.
  • -
-

If you want to style your text, you should use the following classes instead:

-
    -
  • .mark will apply the same styles as <mark>.
  • -
  • .small will apply the same styles as <small>.
  • -
  • .text-decoration-underline will apply the same styles as <u>.
  • -
  • .text-decoration-line-through will apply the same styles as <s>.
  • -
-

While not shown above, feel free to use <b> and <i> in HTML5. <b> is meant to highlight words or phrases without conveying additional importance, while <i> is mostly for voice, technical terms, etc.

-

Text utilities

-

Change text alignment, transform, style, weight, line-height, decoration and color with our text utilities and color utilities.

-

Abbreviations

-

Stylized implementation of HTML's <abbr> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations have a default underline and gain a help cursor to provide additional context on hover and to users of assistive technologies.

-

Add .initialism to an abbreviation for a slightly smaller font-size.

-

attr

-

HTML

html
<p><abbr title="attribute">attr</abbr></p>
-<p><abbr title="HyperText Markup Language" class="initialism">HTML</abbr></p>
-

Blockquotes

-

For quoting blocks of content from another source within your document. Wrap <blockquote class="blockquote"> around any HTML as the quote.

-
-

A well-known quote, contained in a blockquote element.

-
html
<blockquote class="blockquote">
-<p>A well-known quote, contained in a blockquote element.</p>
-</blockquote>
-

Naming a source

-

The HTML spec requires that blockquote attribution be placed outside the <blockquote>. When providing attribution, wrap your <blockquote> in a <figure> and use a <figcaption> or a block level element (e.g., <p>) with the .blockquote-footer class. Be sure to wrap the name of the source work in <cite> as well.

-
-
-

A well-known quote, contained in a blockquote element.

-
- -
html
<figure>
-<blockquote class="blockquote">
-  <p>A well-known quote, contained in a blockquote element.</p>
-</blockquote>
-<figcaption class="blockquote-footer">
-  Someone famous in <cite title="Source Title">Source Title</cite>
-</figcaption>
-</figure>
-

Alignment

-

Use text utilities as needed to change the alignment of your blockquote.

-
-
-

A well-known quote, contained in a blockquote element.

-
- -
html
<figure class="text-center">
-<blockquote class="blockquote">
-  <p>A well-known quote, contained in a blockquote element.</p>
-</blockquote>
-<figcaption class="blockquote-footer">
-  Someone famous in <cite title="Source Title">Source Title</cite>
-</figcaption>
-</figure>
-
-
-

A well-known quote, contained in a blockquote element.

-
- -
html
<figure class="text-end">
-<blockquote class="blockquote">
-  <p>A well-known quote, contained in a blockquote element.</p>
-</blockquote>
-<figcaption class="blockquote-footer">
-  Someone famous in <cite title="Source Title">Source Title</cite>
-</figcaption>
-</figure>
-

Lists

-

Unstyled

-

Remove the default list-style and left margin on list items (immediate children only). This only applies to immediate children list items, meaning you will need to add the class for any nested lists as well.

-
    -
  • This is a list.
  • -
  • It appears completely unstyled.
  • -
  • Structurally, it's still a list.
  • -
  • However, this style only applies to immediate child elements.
  • -
  • Nested lists: -
      -
    • are unaffected by this style
    • -
    • will still show a bullet
    • -
    • and have appropriate left margin
    • -
    -
  • -
  • This may still come in handy in some situations.
  • -
html
<ul class="list-unstyled">
-<li>This is a list.</li>
-<li>It appears completely unstyled.</li>
-<li>Structurally, it's still a list.</li>
-<li>However, this style only applies to immediate child elements.</li>
-<li>Nested lists:
-  <ul>
-    <li>are unaffected by this style</li>
-    <li>will still show a bullet</li>
-    <li>and have appropriate left margin</li>
-  </ul>
-</li>
-<li>This may still come in handy in some situations.</li>
-</ul>
-

Inline

-

Remove a list's bullets and apply some light margin with a combination of two classes, .list-inline and .list-inline-item.

-
    -
  • This is a list item.
  • -
  • And another one.
  • -
  • But they're displayed inline.
  • -
html
<ul class="list-inline">
-<li class="list-inline-item">This is a list item.</li>
-<li class="list-inline-item">And another one.</li>
-<li class="list-inline-item">But they're displayed inline.</li>
-</ul>
-

Description list alignment

-

Align terms and descriptions horizontally by using our grid system's predefined classes (or semantic mixins). For longer terms, you can optionally add a .text-truncate class to truncate the text with an ellipsis.

-
-
Description lists
-
A description list is perfect for defining terms.
- -
Term
-
-

Definition for the term.

-

And some more placeholder definition text.

-
- -
Another term
-
This definition is short, so no extra paragraphs or anything.
- -
Truncated term is truncated
-
This can be useful when space is tight. Adds an ellipsis at the end.
- -
Nesting
-
-
-
Nested definition list
-
I heard you like definition lists. Let me put a definition list inside your definition list.
-
-
-
html
<dl class="row">
-<dt class="col-sm-3">Description lists</dt>
-<dd class="col-sm-9">A description list is perfect for defining terms.</dd>
-
-<dt class="col-sm-3">Term</dt>
-<dd class="col-sm-9">
-  <p>Definition for the term.</p>
-  <p>And some more placeholder definition text.</p>
-</dd>
-
-<dt class="col-sm-3">Another term</dt>
-<dd class="col-sm-9">This definition is short, so no extra paragraphs or anything.</dd>
-
-<dt class="col-sm-3 text-truncate">Truncated term is truncated</dt>
-<dd class="col-sm-9">This can be useful when space is tight. Adds an ellipsis at the end.</dd>
-
-<dt class="col-sm-3">Nesting</dt>
-<dd class="col-sm-9">
-  <dl class="row">
-    <dt class="col-sm-4">Nested definition list</dt>
-    <dd class="col-sm-8">I heard you like definition lists. Let me put a definition list inside your definition list.</dd>
-  </dl>
-</dd>
-</dl>
-

Responsive font sizes

-

In Bootstrap 5, we've enabled responsive font sizes by default, allowing text to scale more naturally across device and viewport sizes. Have a look at the RFS page to find out how this works.

-

CSS

-

Sass variables

-

Headings have some dedicated variables for sizing and spacing.

-
$headings-margin-bottom:      $spacer * .5;
-$headings-font-family:        null;
-$headings-font-style:         null;
-$headings-font-weight:        500;
-$headings-line-height:        1.2;
-$headings-color:              inherit;
-
-

Miscellaneous typography elements covered here and in Reboot also have dedicated variables.

-
$lead-font-size:              $font-size-base * 1.25;
-$lead-font-weight:            300;
-
-$small-font-size:             .875em;
-
-$sub-sup-font-size:           .75em;
-
-// fusv-disable
-$text-muted:                  var(--#{$prefix}secondary-color); // Deprecated in 5.3.0
-// fusv-enable
-
-$initialism-font-size:        $small-font-size;
-
-$blockquote-margin-y:         $spacer;
-$blockquote-font-size:        $font-size-base * 1.25;
-$blockquote-footer-color:     $gray-600;
-$blockquote-footer-font-size: $small-font-size;
-
-$hr-margin-y:                 $spacer;
-$hr-color:                    inherit;
-
-// fusv-disable
-$hr-bg-color:                 null; // Deprecated in v5.2.0
-$hr-height:                   null; // Deprecated in v5.2.0
-// fusv-enable
-
-$hr-border-color:             null; // Allows for inherited colors
-$hr-border-width:             var(--#{$prefix}border-width);
-$hr-opacity:                  .25;
-
-// scss-docs-start vr-variables
-$vr-border-width:             var(--#{$prefix}border-width);
-// scss-docs-end vr-variables
-
-$legend-margin-bottom:        .5rem;
-$legend-font-size:            1.5rem;
-$legend-font-weight:          null;
-
-$dt-font-weight:              $font-weight-bold;
-
-$list-inline-padding:         .5rem;
-
-$mark-padding:                .1875em;
-$mark-color:                  $body-color;
-$mark-bg:                     $yellow-100;
-
-

Sass mixins

-

There are no dedicated mixins for typography, but Bootstrap does use Responsive Font Sizing (RFS).

\ No newline at end of file diff --git a/site/dist/docs/5.3/customize/color-modes/index.html b/site/dist/docs/5.3/customize/color-modes/index.html deleted file mode 100644 index 99141b426f..0000000000 --- a/site/dist/docs/5.3/customize/color-modes/index.html +++ /dev/null @@ -1,465 +0,0 @@ - Color modes · Bootstrap v5.3
-Added in v5.3 -View on GitHub -

Color modes

Bootstrap now supports color modes, or themes, as of v5.3.0. Explore our default light color mode and the new dark mode, or create your own using our styles as your template.

Try it yourself! Download the source code and working demo for using Bootstrap with Stylelint, and the color modes from the twbs/examples repository. You can also open the example in StackBlitz.

-

Dark mode

-

Bootstrap now supports color modes, starting with dark mode! With v5.3.0 you can implement your own color mode toggler (see below for an example from Bootstrap's docs) and apply the different color modes as you see fit. We support a light mode (default) and now dark mode. Color modes can be toggled globally on the <html> element, or on specific components and elements, thanks to the data-bs-theme attribute.

-

Alternatively, you can also switch to a media query implementation thanks to our color mode mixin—see the usage section for details. Heads up though—this eliminates your ability to change themes on a per-component basis as shown below.

-

Example

-

For example, to change the color mode of a dropdown menu, add data-bs-theme="light" or data-bs-theme="dark" to the parent .dropdown. Now, no matter the global color mode, these dropdowns will display with the specified theme value.

-
- -
html
<div class="dropdown" data-bs-theme="light">
-<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButtonLight" data-bs-toggle="dropdown" aria-expanded="false">
-  Default dropdown
-</button>
-<ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonLight">
-  <li><a class="dropdown-item active" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"/></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-</div>
-
-<div class="dropdown" data-bs-theme="dark">
-<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButtonDark" data-bs-toggle="dropdown" aria-expanded="false">
-  Dark dropdown
-</button>
-<ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonDark">
-  <li><a class="dropdown-item active" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"/></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-</div>
-

How it works

-
    -
  • -

    As shown above, color mode styles are controlled by the data-bs-theme attribute. This attribute can be applied to the <html> element, or to any other element or Bootstrap component. If applied to the <html> element, it will apply to everything. If applied to a component or element, it will be scoped to that specific component or element.

    -
  • -
  • -

    For each color mode you wish to support, you'll need to add new overrides for the shared global CSS variables. We do this already in our _root.scss stylesheet for dark mode, with light mode being the default values. In writing color mode specific styles, use the mixin:

    -
    // Color mode variables in _root.scss
    -@include color-mode(dark) {
    -  // CSS variable overrides here...
    -}
    -
    -
  • -
  • -

    We use a custom _variables-dark.scss to power those shared global CSS variable overrides for dark mode. This file isn't required for your own custom color modes, but it's required for our dark mode for two reasons. First, it's better to have a single place to reset global colors. Second, some Sass variables had to be overridden for background images embedded in our CSS for accordions, form components, and more.

    -
  • -
-

Usage

-

Enable dark mode

-

Enable the built in dark color mode across your entire project by adding the data-bs-theme="dark" attribute to the <html> element. This will apply the dark color mode to all components and elements, other than those with a specific data-bs-theme attribute applied. Building on the quick start template:

-
<!doctype html>
-<html lang="en" data-bs-theme="dark">
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Bootstrap demo</title>
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
-  </head>
-  <body>
-    <h1>Hello, world!</h1>
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
-  </body>
-</html>
-
-

Bootstrap does not yet ship with a built-in color mode picker, but you can use the one from our own documentation if you like. Learn more in the JavaScript section.

-

Building with Sass

-

Our new dark mode option is available to use for all users of Bootstrap, but it's controlled via data attributes instead of media queries and does not automatically toggle your project's color mode. You can disable our dark mode entirely via Sass by changing $enable-dark-mode to false.

-

We use a custom Sass mixin, color-mode(), to help you control how color modes are applied. By default, we use a data attribute approach, allowing you to create more user-friendly experiences where your visitors can choose to have an automatic dark mode or control their preference (like in our own docs here). This is also an easy and scalable way to add different themes and more custom color modes beyond light and dark.

-

In case you want to use media queries and only make color modes automatic, you can change the mixin's default type via Sass variable. Consider the following snippet and its compiled CSS output.

-
$color-mode-type: data;
-
-@include color-mode(dark) {
-  .element {
-    color: var(--bs-primary-text-emphasis);
-    background-color: var(--bs-primary-bg-subtle);
-  }
-}
-
-

Outputs to:

-
[data-bs-theme=dark] .element {
-  color: var(--bs-primary-text-emphasis);
-  background-color: var(--bs-primary-bg-subtle);
-}
-
-

And when setting to media-query:

-
$color-mode-type: media-query;
-
-@include color-mode(dark) {
-  .element {
-    color: var(--bs-primary-text-emphasis);
-    background-color: var(--bs-primary-bg-subtle);
-  }
-}
-
-

Outputs to:

-
@media (prefers-color-scheme: dark) {
-  .element {
-    color: var(--bs-primary-text-emphasis);
-    background-color: var(--bs-primary-bg-subtle);
-  }
-}
-
-

Custom color modes

-

While the primary use case for color modes is light and dark mode, custom color modes are also possible. Create your own data-bs-theme selector with a custom value as the name of your color mode, then modify our Sass and CSS variables as needed. We opted to create a separate _variables-dark.scss stylesheet to house Bootstrap's dark mode specific Sass variables, but that's not required for you.

-

For example, you can create a "blue theme" with the selector data-bs-theme="blue". In your custom Sass or CSS file, add the new selector and override any global or component CSS variables as needed. If you're using Sass, you can also use Sass's functions within your CSS variable overrides.

-
[data-bs-theme="blue"] {
-  --bs-body-color: var(--bs-white);
-  --bs-body-color-rgb: #{to-rgb($white)};
-  --bs-body-bg: var(--bs-blue);
-  --bs-body-bg-rgb: #{to-rgb($blue)};
-  --bs-tertiary-bg: #{$blue-600};
-
-  .dropdown-menu {
-    --bs-dropdown-bg: #{mix($blue-500, $blue-600)};
-    --bs-dropdown-link-active-bg: #{$blue-700};
-  }
-
-  .btn-secondary {
-    --bs-btn-bg: #{mix($gray-600, $blue-400, .5)};
-    --bs-btn-border-color: #{rgba($white, .25)};
-    --bs-btn-hover-bg: #{darken(mix($gray-600, $blue-400, .5), 5%)};
-    --bs-btn-hover-border-color: #{rgba($white, .25)};
-    --bs-btn-active-bg: #{darken(mix($gray-600, $blue-400, .5), 10%)};
-    --bs-btn-active-border-color: #{rgba($white, .5)};
-    --bs-btn-focus-border-color: #{rgba($white, .5)};
-    --bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .2);
-  }
-}
-
-
Example blue theme

Some paragraph text to show how the blue theme might look with written copy.


-
<div data-bs-theme="blue">
-  ...
-</div>
-
-

JavaScript

-

To allow visitors or users to toggle color modes, you'll need to create a toggle element to control the data-bs-theme attribute on the root element, <html>. We've built a toggler in our documentation that initially defers to a user's current system color mode, but provides an option to override that and pick a specific color mode.

-

Here's a look at the JavaScript that powers it. Feel free to inspect our own documentation navbar to see how it's implemented using HTML and CSS from our own components. It is suggested to include the JavaScript at the top of your page to reduce potential screen flickering during reloading of your site. Note that if you decide to use media queries for your color modes, your JavaScript may need to be modified or removed if you prefer an implicit control.

-
/*!
- * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
- * Copyright 2011-2025 The Bootstrap Authors
- * Licensed under the Creative Commons Attribution 3.0 Unported License.
- */
-
-(() => {
-  'use strict'
-
-  const getStoredTheme = () => localStorage.getItem('theme')
-  const setStoredTheme = theme => localStorage.setItem('theme', theme)
-
-  const getPreferredTheme = () => {
-    const storedTheme = getStoredTheme()
-    if (storedTheme) {
-      return storedTheme
-    }
-
-    return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
-  }
-
-  const setTheme = theme => {
-    if (theme === 'auto') {
-      document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'))
-    } else {
-      document.documentElement.setAttribute('data-bs-theme', theme)
-    }
-  }
-
-  setTheme(getPreferredTheme())
-
-  const showActiveTheme = (theme, focus = false) => {
-    const themeSwitcher = document.querySelector('#bd-theme')
-
-    if (!themeSwitcher) {
-      return
-    }
-
-    const themeSwitcherText = document.querySelector('#bd-theme-text')
-    const activeThemeIcon = document.querySelector('.theme-icon-active use')
-    const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`)
-    const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href')
-
-    document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
-      element.classList.remove('active')
-      element.setAttribute('aria-pressed', 'false')
-    })
-
-    btnToActive.classList.add('active')
-    btnToActive.setAttribute('aria-pressed', 'true')
-    activeThemeIcon.setAttribute('href', svgOfActiveBtn)
-    const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`
-    themeSwitcher.setAttribute('aria-label', themeSwitcherLabel)
-
-    if (focus) {
-      themeSwitcher.focus()
-    }
-  }
-
-  window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
-    const storedTheme = getStoredTheme()
-    if (storedTheme !== 'light' && storedTheme !== 'dark') {
-      setTheme(getPreferredTheme())
-    }
-  })
-
-  window.addEventListener('DOMContentLoaded', () => {
-    showActiveTheme(getPreferredTheme())
-
-    document.querySelectorAll('[data-bs-theme-value]')
-      .forEach(toggle => {
-        toggle.addEventListener('click', () => {
-          const theme = toggle.getAttribute('data-bs-theme-value')
-          setStoredTheme(theme)
-          setTheme(theme)
-          showActiveTheme(theme, true)
-        })
-      })
-  })
-})()
-
-

Adding theme colors

-

Adding a new color in $theme-colors is not enough for some of our components like alerts and list groups. New colors must also be defined in $theme-colors-text, $theme-colors-bg-subtle, and $theme-colors-border-subtle for light theme; but also in $theme-colors-text-dark, $theme-colors-bg-subtle-dark, and $theme-colors-border-subtle-dark for dark theme.

-

This is a manual process because Sass cannot generate its own Sass variables from an existing variable or map. In future versions of Bootstrap, we'll revisit this setup to reduce the duplication.

-
// Required
-@import "functions";
-@import "variables";
-@import "variables-dark";
-
-// Add a custom color to $theme-colors
-$custom-colors: (
-  "custom-color": #712cf9
-);
-$theme-colors: map-merge($theme-colors, $custom-colors);
-
-@import "maps";
-@import "mixins";
-@import "utilities";
-
-// Add a custom color to new theme maps
-
-// Light mode
-$custom-colors-text: ("custom-color": #712cf9);
-$custom-colors-bg-subtle: ("custom-color": #e1d2fe);
-$custom-colors-border-subtle: ("custom-color": #bfa1fc);
-
-$theme-colors-text: map-merge($theme-colors-text, $custom-colors-text);
-$theme-colors-bg-subtle: map-merge($theme-colors-bg-subtle, $custom-colors-bg-subtle);
-$theme-colors-border-subtle: map-merge($theme-colors-border-subtle, $custom-colors-border-subtle);
-
-// Dark mode
-$custom-colors-text-dark: ("custom-color": #e1d2f2);
-$custom-colors-bg-subtle-dark: ("custom-color": #8951fa);
-$custom-colors-border-subtle-dark: ("custom-color": #e1d2f2);
-
-$theme-colors-text-dark: map-merge($theme-colors-text-dark, $custom-colors-text-dark);
-$theme-colors-bg-subtle-dark: map-merge($theme-colors-bg-subtle-dark, $custom-colors-bg-subtle-dark);
-$theme-colors-border-subtle-dark: map-merge($theme-colors-border-subtle-dark, $custom-colors-border-subtle-dark);
-
-// Remainder of Bootstrap imports
-@import "root";
-@import "reboot";
-// etc
-
-

CSS

-

Variables

-

Dozens of root level CSS variables are repeated as overrides for dark mode. These are scoped to the color mode selector, which defaults to data-bs-theme but can be configured to use a prefers-color-scheme media query. Use these variables as a guideline for generating your own new color modes.

-
    --#{$prefix}body-color: #{$body-color-dark};
-    --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};
-    --#{$prefix}body-bg: #{$body-bg-dark};
-    --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};
-
-    --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};
-    --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};
-
-    --#{$prefix}secondary-color: #{$body-secondary-color-dark};
-    --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};
-    --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};
-    --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};
-
-    --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};
-    --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};
-    --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};
-    --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
-
-    @each $color, $value in $theme-colors-text-dark {
-      --#{$prefix}#{$color}-text-emphasis: #{$value};
-    }
-
-    @each $color, $value in $theme-colors-bg-subtle-dark {
-      --#{$prefix}#{$color}-bg-subtle: #{$value};
-    }
-
-    @each $color, $value in $theme-colors-border-subtle-dark {
-      --#{$prefix}#{$color}-border-subtle: #{$value};
-    }
-
-    --#{$prefix}heading-color: #{$headings-color-dark};
-
-    --#{$prefix}link-color: #{$link-color-dark};
-    --#{$prefix}link-hover-color: #{$link-hover-color-dark};
-    --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};
-    --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};
-
-    --#{$prefix}code-color: #{$code-color-dark};
-    --#{$prefix}highlight-color: #{$mark-color-dark};
-    --#{$prefix}highlight-bg: #{$mark-bg-dark};
-
-    --#{$prefix}border-color: #{$border-color-dark};
-    --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};
-
-    --#{$prefix}form-valid-color: #{$form-valid-color-dark};
-    --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};
-    --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};
-    --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};
-    
-

Sass variables

-

CSS variables for our dark color mode are partially generated from dark mode specific Sass variables in _variables-dark.scss. This also includes some custom overrides for changing the colors of embedded SVGs used throughout our components.

-
// scss-docs-start theme-text-dark-variables
-$primary-text-emphasis-dark:        tint-color($primary, 40%);
-$secondary-text-emphasis-dark:      tint-color($secondary, 40%);
-$success-text-emphasis-dark:        tint-color($success, 40%);
-$info-text-emphasis-dark:           tint-color($info, 40%);
-$warning-text-emphasis-dark:        tint-color($warning, 40%);
-$danger-text-emphasis-dark:         tint-color($danger, 40%);
-$light-text-emphasis-dark:          $gray-100;
-$dark-text-emphasis-dark:           $gray-300;
-// scss-docs-end theme-text-dark-variables
-
-// scss-docs-start theme-bg-subtle-dark-variables
-$primary-bg-subtle-dark:            shade-color($primary, 80%);
-$secondary-bg-subtle-dark:          shade-color($secondary, 80%);
-$success-bg-subtle-dark:            shade-color($success, 80%);
-$info-bg-subtle-dark:               shade-color($info, 80%);
-$warning-bg-subtle-dark:            shade-color($warning, 80%);
-$danger-bg-subtle-dark:             shade-color($danger, 80%);
-$light-bg-subtle-dark:              $gray-800;
-$dark-bg-subtle-dark:               mix($gray-800, $black);
-// scss-docs-end theme-bg-subtle-dark-variables
-
-// scss-docs-start theme-border-subtle-dark-variables
-$primary-border-subtle-dark:        shade-color($primary, 40%);
-$secondary-border-subtle-dark:      shade-color($secondary, 40%);
-$success-border-subtle-dark:        shade-color($success, 40%);
-$info-border-subtle-dark:           shade-color($info, 40%);
-$warning-border-subtle-dark:        shade-color($warning, 40%);
-$danger-border-subtle-dark:         shade-color($danger, 40%);
-$light-border-subtle-dark:          $gray-700;
-$dark-border-subtle-dark:           $gray-800;
-// scss-docs-end theme-border-subtle-dark-variables
-
-$body-color-dark:                   $gray-300;
-$body-bg-dark:                      $gray-900;
-$body-secondary-color-dark:         rgba($body-color-dark, .75);
-$body-secondary-bg-dark:            $gray-800;
-$body-tertiary-color-dark:          rgba($body-color-dark, .5);
-$body-tertiary-bg-dark:             mix($gray-800, $gray-900, 50%);
-$body-emphasis-color-dark:          $white;
-$border-color-dark:                 $gray-700;
-$border-color-translucent-dark:     rgba($white, .15);
-$headings-color-dark:               inherit;
-$link-color-dark:                   tint-color($primary, 40%);
-$link-hover-color-dark:             shift-color($link-color-dark, -$link-shade-percentage);
-$code-color-dark:                   tint-color($code-color, 40%);
-$mark-color-dark:                   $body-color-dark;
-$mark-bg-dark:                      $yellow-800;
-
-
-//
-// Forms
-//
-
-$form-select-indicator-color-dark:  $body-color-dark;
-$form-select-indicator-dark:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color-dark}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>");
-
-$form-switch-color-dark:            rgba($white, .25);
-$form-switch-bg-image-dark:         url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color-dark}'/></svg>");
-
-// scss-docs-start form-validation-colors-dark
-$form-valid-color-dark:             $green-300;
-$form-valid-border-color-dark:      $green-300;
-$form-invalid-color-dark:           $red-300;
-$form-invalid-border-color-dark:    $red-300;
-// scss-docs-end form-validation-colors-dark
-
-
-//
-// Accordion
-//
-
-$accordion-icon-color-dark:         $primary-text-emphasis-dark;
-$accordion-icon-active-color-dark:  $primary-text-emphasis-dark;
-
-$accordion-button-icon-dark:         url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>");
-$accordion-button-active-icon-dark:  url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>");
-
-

Sass mixins

-

Styles for dark mode, and any custom color modes you create, can be scoped appropriately to the data-bs-theme attribute selector or media query with the customizable color-mode() mixin. See the Sass usage section for more details.

-
@mixin color-mode($mode: light, $root: false) {
-  @if $color-mode-type == "media-query" {
-    @if $root == true {
-      @media (prefers-color-scheme: $mode) {
-        :root {
-          @content;
-        }
-      }
-    } @else {
-      @media (prefers-color-scheme: $mode) {
-        @content;
-      }
-    }
-  } @else {
-    [data-bs-theme="#{$mode}"] {
-      @content;
-    }
-  }
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/customize/color/index.html b/site/dist/docs/5.3/customize/color/index.html deleted file mode 100644 index 7c28dbfc56..0000000000 --- a/site/dist/docs/5.3/customize/color/index.html +++ /dev/null @@ -1,138 +0,0 @@ - Color · Bootstrap v5.3

Bootstrap is supported by an extensive color system that themes our styles and components. This enables more comprehensive customization and extension for any project.

Colors

-Added in v5.3.0 -

Bootstrap's color palette has continued to expand and become more nuanced in v5.3.0. We've added new variables for secondary and tertiary text and background colors, plus {color}-bg-subtle, {color}-border-subtle, and {color}-text-emphasis for our theme colors. These new colors are available through Sass and CSS variables (but not our color maps or utility classes) with the express goal of making it easier to customize across multiple colors modes like light and dark. These new variables are globally set on :root and are adapted for our new dark color mode while our original theme colors remain unchanged.

-

Colors ending in -rgb provide the red, green, blue values for use in rgb() and rgba() color modes. For example, rgba(var(--bs-secondary-bg-rgb), .5).

-

Heads up! There's some potential confusion with our new secondary and tertiary colors, and our existing secondary theme color, as well as our light and dark theme colors. Expect this to be ironed out in v6.

-
DescriptionSwatchVariables

Body — Default foreground (color) and background, including components.

 

--bs-body-color
--bs-body-color-rgb

 

--bs-body-bg
--bs-body-bg-rgb

Secondary — Use the color option for lighter text. Use the bg option for dividers and to indicate disabled component states.

 

--bs-secondary-color
--bs-secondary-color-rgb

 

--bs-secondary-bg
--bs-secondary-bg-rgb

Tertiary — Use the color option for even lighter text. Use the bg option to style backgrounds for hover states, accents, and wells.

 

--bs-tertiary-color
--bs-tertiary-color-rgb

 

--bs-tertiary-bg
--bs-tertiary-bg-rgb

Emphasis — For higher contrast text. Not applicable for backgrounds.

 

--bs-emphasis-color
--bs-emphasis-color-rgb

Border — For component borders, dividers, and rules. Use --bs-border-color-translucent to blend with backgrounds with an rgba() value.

 

--bs-border-color
--bs-border-color-rgb

Primary — Main theme color, used for hyperlinks, focus styles, and component and form active states.

 

--bs-primary
--bs-primary-rgb

 

--bs-primary-bg-subtle

 

--bs-primary-border-subtle

Text

--bs-primary-text-emphasis

Success — Theme color used for positive or successful actions and information.

 

--bs-success
--bs-success-rgb

 

--bs-success-bg-subtle

 

--bs-success-border-subtle

Text

--bs-success-text-emphasis

Danger — Theme color used for errors and dangerous actions.

 

--bs-danger
--bs-danger-rgb

 

--bs-danger-bg-subtle

 

--bs-danger-border-subtle

Text

--bs-danger-text-emphasis

Warning — Theme color used for non-destructive warning messages.

 

--bs-warning
--bs-warning-rgb

 

--bs-warning-bg-subtle

 

--bs-warning-border-subtle

Text

--bs-warning-text-emphasis

Info — Theme color used for neutral and informative content.

 

--bs-info
--bs-info-rgb

 

--bs-info-bg-subtle

 

--bs-info-border-subtle

Text

--bs-info-text-emphasis

Light — Additional theme option for less contrasting colors.

 

--bs-light
--bs-light-rgb

 

--bs-light-bg-subtle

 

--bs-light-border-subtle

Text

--bs-light-text-emphasis

Dark — Additional theme option for higher contrasting colors.

 

--bs-dark
--bs-dark-rgb

 

--bs-dark-bg-subtle

 

--bs-dark-border-subtle

Text

--bs-dark-text-emphasis

-

Using the new colors

-

These new colors are accessible via CSS variables and utility classes—like --bs-primary-bg-subtle and .bg-primary-subtle—allowing you to compose your own CSS rules with the variables, or to quickly apply styles via classes. The utilities are built with the color's associated CSS variables, and since we customize those CSS variables for dark mode, they are also adaptive to color mode by default.

-
-Example element with utilities -
html
<div class="p-3 text-primary-emphasis bg-primary-subtle border border-primary-subtle rounded-3">
-Example element with utilities
-</div>
-

Theme colors

-

We use a subset of all colors to create a smaller color palette for generating color schemes, also available as Sass variables and a Sass map in Bootstrap's scss/_variables.scss file.

-
Primary
Secondary
Success
Danger
Warning
Info
Light
Dark
-

All these colors are available as a Sass map, $theme-colors.

-
$theme-colors: (
-  "primary":    $primary,
-  "secondary":  $secondary,
-  "success":    $success,
-  "info":       $info,
-  "warning":    $warning,
-  "danger":     $danger,
-  "light":      $light,
-  "dark":       $dark
-);
-
-

Check out our Sass maps and loops docs for how to modify these colors.

-

All colors

-

All Bootstrap colors are available as Sass variables and a Sass map in scss/_variables.scss file. To avoid increased file sizes, we don't create text or background color classes for each of these variables. Instead, we choose a subset of these colors for a theme palette.

-

Be sure to monitor contrast ratios as you customize colors. As shown below, we've added three contrast ratios to each of the main colors—one for the swatch's current colors, one for against white, and one for against black.

-
$blue#0d6efd
$blue-100
$blue-200
$blue-300
$blue-400
$blue-500
$blue-600
$blue-700
$blue-800
$blue-900
$indigo#6610f2
$indigo-100
$indigo-200
$indigo-300
$indigo-400
$indigo-500
$indigo-600
$indigo-700
$indigo-800
$indigo-900
$purple#6f42c1
$purple-100
$purple-200
$purple-300
$purple-400
$purple-500
$purple-600
$purple-700
$purple-800
$purple-900
$pink#d63384
$pink-100
$pink-200
$pink-300
$pink-400
$pink-500
$pink-600
$pink-700
$pink-800
$pink-900
$red#dc3545
$red-100
$red-200
$red-300
$red-400
$red-500
$red-600
$red-700
$red-800
$red-900
$orange#fd7e14
$orange-100
$orange-200
$orange-300
$orange-400
$orange-500
$orange-600
$orange-700
$orange-800
$orange-900
$yellow#ffc107
$yellow-100
$yellow-200
$yellow-300
$yellow-400
$yellow-500
$yellow-600
$yellow-700
$yellow-800
$yellow-900
$green#198754
$green-100
$green-200
$green-300
$green-400
$green-500
$green-600
$green-700
$green-800
$green-900
$teal#20c997
$teal-100
$teal-200
$teal-300
$teal-400
$teal-500
$teal-600
$teal-700
$teal-800
$teal-900
$cyan#0dcaf0
$cyan-100
$cyan-200
$cyan-300
$cyan-400
$cyan-500
$cyan-600
$cyan-700
$cyan-800
$cyan-900
$gray-500#adb5bd
$gray-100
$gray-200
$gray-300
$gray-400
$gray-500
$gray-600
$gray-700
$gray-800
$gray-900

$black -#000

$white -#fff

-

Notes on Sass

-

Sass cannot programmatically generate variables, so we manually created variables for every tint and shade ourselves. We specify the midpoint value (e.g., $blue-500) and use custom color functions to tint (lighten) or shade (darken) our colors via Sass's mix() color function.

-

Using mix() is not the same as lighten() and darken()—the former blends the specified color with white or black, while the latter only adjusts the lightness value of each color. The result is a much more complete suite of colors, as shown in this CodePen demo.

-

Our tint-color() and shade-color() functions use mix() alongside our $theme-color-interval variable, which specifies a stepped percentage value for each mixed color we produce. See the scss/_functions.scss and scss/_variables.scss files for the full source code.

-

Color Sass maps

-

Bootstrap's source Sass files include three maps to help you quickly and easily loop over a list of colors and their hex values.

-
    -
  • $colors lists all our available base (500) colors
  • -
  • $theme-colors lists all semantically named theme colors (shown below)
  • -
  • $grays lists all tints and shades of gray
  • -
-

Within scss/_variables.scss, you'll find Bootstrap's color variables and Sass map. Here's an example of the $colors Sass map:

-
$colors: (
-  "blue":       $blue,
-  "indigo":     $indigo,
-  "purple":     $purple,
-  "pink":       $pink,
-  "red":        $red,
-  "orange":     $orange,
-  "yellow":     $yellow,
-  "green":      $green,
-  "teal":       $teal,
-  "cyan":       $cyan,
-  "black":      $black,
-  "white":      $white,
-  "gray":       $gray-600,
-  "gray-dark":  $gray-800
-);
-
-

Add, remove, or modify values within the map to update how they're used in many other components. Unfortunately at this time, not every component utilizes this Sass map. Future updates will strive to improve upon this. Until then, plan on making use of the ${color} variables and this Sass map.

-

Example

-

Here's how you can use these in your Sass:

-
.alpha { color: $purple; }
-.beta {
-  color: $yellow-300;
-  background-color: $indigo-900;
-}
-
-

Color and background utility classes are also available for setting color and background-color using the 500 color values.

-

Generating utilities

-Added in v5.1.0 -

Bootstrap doesn't include color and background-color utilities for every color variable, but you can generate these yourself with our utility API and our extended Sass maps added in v5.1.0.

-
    -
  1. To start, make sure you've imported our functions, variables, mixins, and utilities.
  2. -
  3. Use our map-merge-multiple() function to quickly merge multiple Sass maps together in a new map.
  4. -
  5. Merge this new combined map to extend any utility with a {color}-{level} class name.
  6. -
-

Here's an example that generates text color utilities (e.g., .text-purple-500) using the above steps.

-
@import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
-@import "bootstrap/scss/maps";
-@import "bootstrap/scss/mixins";
-@import "bootstrap/scss/utilities";
-
-$all-colors: map-merge-multiple($blues, $indigos, $purples, $pinks, $reds, $oranges, $yellows, $greens, $teals, $cyans);
-
-$utilities: map-merge(
-  $utilities,
-  (
-    "color": map-merge(
-      map-get($utilities, "color"),
-      (
-        values: map-merge(
-          map-get(map-get($utilities, "color"), "values"),
-          (
-            $all-colors
-          ),
-        ),
-      ),
-    ),
-  )
-);
-
-@import "bootstrap/scss/utilities/api";
-
-

This will generate new .text-{color}-{level} utilities for every color and level. You can do the same for any other utility and property as well.

\ No newline at end of file diff --git a/site/dist/docs/5.3/customize/components/index.html b/site/dist/docs/5.3/customize/components/index.html deleted file mode 100644 index 836c9b9a68..0000000000 --- a/site/dist/docs/5.3/customize/components/index.html +++ /dev/null @@ -1,121 +0,0 @@ - Components · Bootstrap v5.3

Components

Learn how and why we build nearly all our components responsively and with base and modifier classes.

On this page

Base classes

-

Bootstrap's components are largely built with a base-modifier nomenclature. We group as many shared properties as possible into a base class, like .btn, and then group individual styles for each variant into modifier classes, like .btn-primary or .btn-success.

-

To build our modifier classes, we use Sass's @each loops to iterate over a Sass map. This is especially helpful for generating variants of a component by our $theme-colors and creating responsive variants for each breakpoint. As you customize these Sass maps and recompile, you'll automatically see your changes reflected in these loops.

-

Check out our Sass maps and loops docs for how to customize these loops and extend Bootstrap's base-modifier approach to your own code.

-

Modifiers

-

Many of Bootstrap's components are built with a base-modifier class approach. This means the bulk of the styling is contained to a base class (e.g., .btn) while style variations are confined to modifier classes (e.g., .btn-danger). These modifier classes are built from the $theme-colors map to make customizing the number and name of our modifier classes.

-

Here are two examples of how we loop over the $theme-colors map to generate modifiers to the .alert and .list-group components.

-
// Generate contextual modifier classes for colorizing the alert
-@each $state in map-keys($theme-colors) {
-  .alert-#{$state} {
-    --#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
-    --#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
-    --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
-    --#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
-  }
-}
-
-
// List group contextual variants
-//
-// Add modifier classes to change text and background color on individual items.
-// Organizationally, this must come after the `:hover` states.
-
-@each $state in map-keys($theme-colors) {
-  .list-group-item-#{$state} {
-    --#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text-emphasis);
-    --#{$prefix}list-group-bg: var(--#{$prefix}#{$state}-bg-subtle);
-    --#{$prefix}list-group-border-color: var(--#{$prefix}#{$state}-border-subtle);
-    --#{$prefix}list-group-action-hover-color: var(--#{$prefix}emphasis-color);
-    --#{$prefix}list-group-action-hover-bg: var(--#{$prefix}#{$state}-border-subtle);
-    --#{$prefix}list-group-action-active-color: var(--#{$prefix}emphasis-color);
-    --#{$prefix}list-group-action-active-bg: var(--#{$prefix}#{$state}-border-subtle);
-    --#{$prefix}list-group-active-color: var(--#{$prefix}#{$state}-bg-subtle);
-    --#{$prefix}list-group-active-bg: var(--#{$prefix}#{$state}-text-emphasis);
-    --#{$prefix}list-group-active-border-color: var(--#{$prefix}#{$state}-text-emphasis);
-  }
-}
-
-

Responsive

-

These Sass loops aren't limited to color maps, either. You can also generate responsive variations of your components. Take for example our responsive alignment of the dropdowns where we mix an @each loop for the $grid-breakpoints Sass map with a media query include.

-
// We deliberately hardcode the `bs-` prefix because we check
-// this custom property in JS to determine Popper's positioning
-
-@each $breakpoint in map-keys($grid-breakpoints) {
-  @include media-breakpoint-up($breakpoint) {
-    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
-
-    .dropdown-menu#{$infix}-start {
-      --bs-position: start;
-
-      &[data-bs-popper] {
-        right: auto;
-        left: 0;
-      }
-    }
-
-    .dropdown-menu#{$infix}-end {
-      --bs-position: end;
-
-      &[data-bs-popper] {
-        right: 0;
-        left: auto;
-      }
-    }
-  }
-}
-
-

Should you modify your $grid-breakpoints, your changes will apply to all the loops iterating over that map.

-
$grid-breakpoints: (
-  xs: 0,
-  sm: 576px,
-  md: 768px,
-  lg: 992px,
-  xl: 1200px,
-  xxl: 1400px
-);
-
-

For more information and examples on how to modify our Sass maps and variables, please refer to the CSS section of the Grid documentation.

-

Creating your own

-

We encourage you to adopt these guidelines when building with Bootstrap to create your own components. We've extended this approach ourselves to the custom components in our documentation and examples. Components like our callouts are built just like our provided components with base and modifier classes.

-

This is a callout. We built it custom for our docs so our messages to you stand out. It has three variants via modifier classes.

-
<div class="callout">...</div>
-
-

In your CSS, you'd have something like the following where the bulk of the styling is done via .callout. Then, the unique styles between each variant is controlled via modifier class.

-
// Base class
-.callout {}
-
-// Modifier classes
-.callout-info {}
-.callout-warning {}
-.callout-danger {}
-
-

For the callouts, that unique styling is just a border-left-color. When you combine that base class with one of those modifier classes, you get your complete component family:

-

This is an info callout. Example text to show it in action.

-

This is a warning callout. Example text to show it in action.

-

This is a danger callout. Example text to show it in action.

\ No newline at end of file diff --git a/site/dist/docs/5.3/customize/css-variables/index.html b/site/dist/docs/5.3/customize/css-variables/index.html deleted file mode 100644 index 2db106a20c..0000000000 --- a/site/dist/docs/5.3/customize/css-variables/index.html +++ /dev/null @@ -1,242 +0,0 @@ - CSS variables · Bootstrap v5.3

CSS variables

Use Bootstrap's CSS custom properties for fast and forward-looking design and development.

Bootstrap includes many CSS custom properties (variables) in its compiled CSS for real-time customization without the need to recompile Sass. These provide easy access to commonly used values like our theme colors, breakpoints, and primary font stacks when working in your browser's inspector, a code sandbox, or general prototyping.

-

All our custom properties are prefixed with bs- to avoid conflicts with third party CSS.

-

Root variables

-

Here are the variables we include (note that the :root is required) that can be accessed anywhere Bootstrap's CSS is loaded. They're located in our _root.scss file and included in our compiled dist files.

-

Default

-

These CSS variables are available everywhere, regardless of color mode.

-
root,
-[data-bs-theme=light] {
-  --bs-blue: #0d6efd;
-  --bs-indigo: #6610f2;
-  --bs-purple: #6f42c1;
-  --bs-pink: #d63384;
-  --bs-red: #dc3545;
-  --bs-orange: #fd7e14;
-  --bs-yellow: #ffc107;
-  --bs-green: #198754;
-  --bs-teal: #20c997;
-  --bs-cyan: #0dcaf0;
-  --bs-black: #000;
-  --bs-white: #fff;
-  --bs-gray: #6c757d;
-  --bs-gray-dark: #343a40;
-  --bs-gray-100: #f8f9fa;
-  --bs-gray-200: #e9ecef;
-  --bs-gray-300: #dee2e6;
-  --bs-gray-400: #ced4da;
-  --bs-gray-500: #adb5bd;
-  --bs-gray-600: #6c757d;
-  --bs-gray-700: #495057;
-  --bs-gray-800: #343a40;
-  --bs-gray-900: #212529;
-  --bs-primary: #0d6efd;
-  --bs-secondary: #6c757d;
-  --bs-success: #198754;
-  --bs-info: #0dcaf0;
-  --bs-warning: #ffc107;
-  --bs-danger: #dc3545;
-  --bs-light: #f8f9fa;
-  --bs-dark: #212529;
-  --bs-primary-rgb: 13, 110, 253;
-  --bs-secondary-rgb: 108, 117, 125;
-  --bs-success-rgb: 25, 135, 84;
-  --bs-info-rgb: 13, 202, 240;
-  --bs-warning-rgb: 255, 193, 7;
-  --bs-danger-rgb: 220, 53, 69;
-  --bs-light-rgb: 248, 249, 250;
-  --bs-dark-rgb: 33, 37, 41;
-  --bs-primary-text-emphasis: #052c65;
-  --bs-secondary-text-emphasis: #2b2f32;
-  --bs-success-text-emphasis: #0a3622;
-  --bs-info-text-emphasis: #055160;
-  --bs-warning-text-emphasis: #664d03;
-  --bs-danger-text-emphasis: #58151c;
-  --bs-light-text-emphasis: #495057;
-  --bs-dark-text-emphasis: #495057;
-  --bs-primary-bg-subtle: #cfe2ff;
-  --bs-secondary-bg-subtle: #e2e3e5;
-  --bs-success-bg-subtle: #d1e7dd;
-  --bs-info-bg-subtle: #cff4fc;
-  --bs-warning-bg-subtle: #fff3cd;
-  --bs-danger-bg-subtle: #f8d7da;
-  --bs-light-bg-subtle: #fcfcfd;
-  --bs-dark-bg-subtle: #ced4da;
-  --bs-primary-border-subtle: #9ec5fe;
-  --bs-secondary-border-subtle: #c4c8cb;
-  --bs-success-border-subtle: #a3cfbb;
-  --bs-info-border-subtle: #9eeaf9;
-  --bs-warning-border-subtle: #ffe69c;
-  --bs-danger-border-subtle: #f1aeb5;
-  --bs-light-border-subtle: #e9ecef;
-  --bs-dark-border-subtle: #adb5bd;
-  --bs-white-rgb: 255, 255, 255;
-  --bs-black-rgb: 0, 0, 0;
-  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
-  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
-  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
-  --bs-body-font-family: var(--bs-font-sans-serif);
-  --bs-body-font-size: 1rem;
-  --bs-body-font-weight: 400;
-  --bs-body-line-height: 1.5;
-  --bs-body-color: #212529;
-  --bs-body-color-rgb: 33, 37, 41;
-  --bs-body-bg: #fff;
-  --bs-body-bg-rgb: 255, 255, 255;
-  --bs-emphasis-color: #000;
-  --bs-emphasis-color-rgb: 0, 0, 0;
-  --bs-secondary-color: rgba(33, 37, 41, 0.75);
-  --bs-secondary-color-rgb: 33, 37, 41;
-  --bs-secondary-bg: #e9ecef;
-  --bs-secondary-bg-rgb: 233, 236, 239;
-  --bs-tertiary-color: rgba(33, 37, 41, 0.5);
-  --bs-tertiary-color-rgb: 33, 37, 41;
-  --bs-tertiary-bg: #f8f9fa;
-  --bs-tertiary-bg-rgb: 248, 249, 250;
-  --bs-heading-color: inherit;
-  --bs-link-color: #0d6efd;
-  --bs-link-color-rgb: 13, 110, 253;
-  --bs-link-decoration: underline;
-  --bs-link-hover-color: #0a58ca;
-  --bs-link-hover-color-rgb: 10, 88, 202;
-  --bs-code-color: #d63384;
-  --bs-highlight-color: #212529;
-  --bs-highlight-bg: #fff3cd;
-  --bs-border-width: 1px;
-  --bs-border-style: solid;
-  --bs-border-color: #dee2e6;
-  --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
-  --bs-border-radius: 0.375rem;
-  --bs-border-radius-sm: 0.25rem;
-  --bs-border-radius-lg: 0.5rem;
-  --bs-border-radius-xl: 1rem;
-  --bs-border-radius-xxl: 2rem;
-  --bs-border-radius-2xl: var(--bs-border-radius-xxl);
-  --bs-border-radius-pill: 50rem;
-  --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
-  --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
-  --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
-  --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
-  --bs-focus-ring-width: 0.25rem;
-  --bs-focus-ring-opacity: 0.25;
-  --bs-focus-ring-color: rgba(13, 110, 253, 0.25);
-  --bs-form-valid-color: #198754;
-  --bs-form-valid-border-color: #198754;
-  --bs-form-invalid-color: #dc3545;
-  --bs-form-invalid-border-color: #dc3545;
-}
-

Dark mode

-

These variables are scoped to our built-in dark mode.

-
[data-bs-theme=dark] {
-  color-scheme: dark;
-  --bs-body-color: #dee2e6;
-  --bs-body-color-rgb: 222, 226, 230;
-  --bs-body-bg: #212529;
-  --bs-body-bg-rgb: 33, 37, 41;
-  --bs-emphasis-color: #fff;
-  --bs-emphasis-color-rgb: 255, 255, 255;
-  --bs-secondary-color: rgba(222, 226, 230, 0.75);
-  --bs-secondary-color-rgb: 222, 226, 230;
-  --bs-secondary-bg: #343a40;
-  --bs-secondary-bg-rgb: 52, 58, 64;
-  --bs-tertiary-color: rgba(222, 226, 230, 0.5);
-  --bs-tertiary-color-rgb: 222, 226, 230;
-  --bs-tertiary-bg: #2b3035;
-  --bs-tertiary-bg-rgb: 43, 48, 53;
-  --bs-primary-text-emphasis: #6ea8fe;
-  --bs-secondary-text-emphasis: #a7acb1;
-  --bs-success-text-emphasis: #75b798;
-  --bs-info-text-emphasis: #6edff6;
-  --bs-warning-text-emphasis: #ffda6a;
-  --bs-danger-text-emphasis: #ea868f;
-  --bs-light-text-emphasis: #f8f9fa;
-  --bs-dark-text-emphasis: #dee2e6;
-  --bs-primary-bg-subtle: #031633;
-  --bs-secondary-bg-subtle: #161719;
-  --bs-success-bg-subtle: #051b11;
-  --bs-info-bg-subtle: #032830;
-  --bs-warning-bg-subtle: #332701;
-  --bs-danger-bg-subtle: #2c0b0e;
-  --bs-light-bg-subtle: #343a40;
-  --bs-dark-bg-subtle: #1a1d20;
-  --bs-primary-border-subtle: #084298;
-  --bs-secondary-border-subtle: #41464b;
-  --bs-success-border-subtle: #0f5132;
-  --bs-info-border-subtle: #087990;
-  --bs-warning-border-subtle: #997404;
-  --bs-danger-border-subtle: #842029;
-  --bs-light-border-subtle: #495057;
-  --bs-dark-border-subtle: #343a40;
-  --bs-heading-color: inherit;
-  --bs-link-color: #6ea8fe;
-  --bs-link-hover-color: #8bb9fe;
-  --bs-link-color-rgb: 110, 168, 254;
-  --bs-link-hover-color-rgb: 139, 185, 254;
-  --bs-code-color: #e685b5;
-  --bs-highlight-color: #dee2e6;
-  --bs-highlight-bg: #664d03;
-  --bs-border-color: #495057;
-  --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
-  --bs-form-valid-color: #75b798;
-  --bs-form-valid-border-color: #75b798;
-  --bs-form-invalid-color: #ea868f;
-  --bs-form-invalid-border-color: #ea868f;
-}
-

Component variables

-

Bootstrap 5 is increasingly making use of custom properties as local variables for various components. This way we reduce our compiled CSS, ensure styles aren't inherited in places like nested tables, and allow some basic restyling and extending of Bootstrap components after Sass compilation.

-

Have a look at our table documentation for some insight into how we're using CSS variables. Our navbars also use CSS variables as of v5.2.0. We're also using CSS variables across our grids—primarily for gutters the new opt-in CSS grid—with more component usage coming in the future.

-

Whenever possible, we'll assign CSS variables at the base component level (e.g., .navbar for navbar and its sub-components). This reduces guessing on where and how to customize, and allows for easy modifications by our team in future updates.

-

Prefix

-

Most CSS variables use a prefix to avoid collisions with your own codebase. This prefix is in addition to the -- that's required on every CSS variable.

-

Customize the prefix via the $prefix Sass variable. By default, it's set to bs- (note the trailing dash).

-

Examples

-

CSS variables offer similar flexibility to Sass's variables, but without the need for compilation before being served to the browser. For example, here we're resetting our page's font and link styles with CSS variables.

-
body {
-  font: 1rem/1.5 var(--bs-font-sans-serif);
-}
-a {
-  color: var(--bs-blue);
-}
-
-

Focus variables

-Added in v5.3.0 -

Bootstrap provides custom :focus styles using a combination of Sass and CSS variables that can be optionally added to specific components and elements. We do not yet globally override all :focus styles.

-

In our Sass, we set default values that can be customized before compiling.

-
$focus-ring-width:      .25rem;
-$focus-ring-opacity:    .25;
-$focus-ring-color:      rgba($primary, $focus-ring-opacity);
-$focus-ring-blur:       0;
-$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color;
-
-

Those variables are then reassigned to :root level CSS variables that can be customized in real-time, including with options for x and y offsets (which default to their fallback value of 0).

-
  --#{$prefix}focus-ring-width: #{$focus-ring-width};
-  --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
-  --#{$prefix}focus-ring-color: #{$focus-ring-color};
-  
-

Grid breakpoints

-

While we include our grid breakpoints as CSS variables (except for xs), be aware that CSS variables do not work in media queries. This is by design in the CSS spec for variables, but may change in coming years with support for env() variables. Check out this Stack Overflow answer for some helpful links. In the meantime, you can use these variables in other CSS situations, as well as in your JavaScript.

\ No newline at end of file diff --git a/site/dist/docs/5.3/customize/index.html b/site/dist/docs/5.3/customize/index.html deleted file mode 100644 index d89c43a367..0000000000 --- a/site/dist/docs/5.3/customize/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/customize/optimize/index.html b/site/dist/docs/5.3/customize/optimize/index.html deleted file mode 100644 index a57d0cd8dc..0000000000 --- a/site/dist/docs/5.3/customize/optimize/index.html +++ /dev/null @@ -1,124 +0,0 @@ - Optimize · Bootstrap v5.3

Keep your projects lean, responsive, and maintainable so you can deliver the best experience and focus on more important jobs.

Lean Sass imports

-

When using Sass in your asset pipeline, make sure you optimize Bootstrap by only @importing the components you need. Your largest optimizations will likely come from the Layout & Components section of our bootstrap.scss.

-
// Configuration
-@import "functions";
-@import "variables";
-@import "variables-dark";
-@import "maps";
-@import "mixins";
-@import "utilities";
-
-// Layout & components
-@import "root";
-@import "reboot";
-@import "type";
-@import "images";
-@import "containers";
-@import "grid";
-@import "tables";
-@import "forms";
-@import "buttons";
-@import "transitions";
-@import "dropdown";
-@import "button-group";
-@import "nav";
-@import "navbar";
-@import "card";
-@import "accordion";
-@import "breadcrumb";
-@import "pagination";
-@import "badge";
-@import "alert";
-@import "progress";
-@import "list-group";
-@import "close";
-@import "toasts";
-@import "modal";
-@import "tooltip";
-@import "popover";
-@import "carousel";
-@import "spinners";
-@import "offcanvas";
-@import "placeholders";
-
-// Helpers
-@import "helpers";
-
-// Utilities
-@import "utilities/api";
-
-

If you're not using a component, comment it out or delete it entirely. For example, if you're not using the carousel, remove that import to save some file size in your compiled CSS. Keep in mind there are some dependencies across Sass imports that may make it more difficult to omit a file.

-

Lean JavaScript

-

Bootstrap's JavaScript includes every component in our primary dist files (bootstrap.js and bootstrap.min.js), and even our primary dependency (Popper) with our bundle files (bootstrap.bundle.js and bootstrap.bundle.min.js). While you're customizing via Sass, be sure to remove related JavaScript.

-

For instance, assuming you're using your own JavaScript bundler like Webpack, Parcel, or Vite, you'd only import the JavaScript you plan on using. In the example below, we show how to just include our modal JavaScript:

- -
// Import just what we need
-
-// import 'bootstrap/js/dist/alert';
-// import 'bootstrap/js/dist/button';
-// import 'bootstrap/js/dist/carousel';
-// import 'bootstrap/js/dist/collapse';
-// import 'bootstrap/js/dist/dropdown';
-import 'bootstrap/js/dist/modal';
-// import 'bootstrap/js/dist/offcanvas';
-// import 'bootstrap/js/dist/popover';
-// import 'bootstrap/js/dist/scrollspy';
-// import 'bootstrap/js/dist/tab';
-// import 'bootstrap/js/dist/toast';
-// import 'bootstrap/js/dist/tooltip';
-
-

This way, you're not including any JavaScript you don't intend to use for components like buttons, carousels, and tooltips. If you're importing dropdowns, tooltips or popovers, be sure to list the Popper dependency in your package.json file.

-

Heads up! Files in bootstrap/js/dist use the default export. To use them, do the following:

import Modal from 'bootstrap/js/dist/modal'
-const modal = new Modal(document.getElementById('myModal'))
-
-

Autoprefixer .browserslistrc

-

Bootstrap depends on Autoprefixer to automatically add browser prefixes to certain CSS properties. Prefixes are dictated by our .browserslistrc file, found in the root of the Bootstrap repo. Customizing this list of browsers and recompiling the Sass will automatically remove some CSS from your compiled CSS, if there are vendor prefixes unique to that browser or version.

-

Unused CSS

-

Help wanted with this section, please consider opening a PR. Thanks!

-

While we don't have a prebuilt example for using PurgeCSS with Bootstrap, there are some helpful articles and walkthroughs that the community has written. Here are some options:

- -

Lastly, this CSS Tricks article on unused CSS shows how to use PurgeCSS and other similar tools.

-

Minify and gzip

-

Whenever possible, be sure to compress all the code you serve to your visitors. If you're using Bootstrap dist files, try to stick to the minified versions (indicated by the .min.css and .min.js extensions). If you're building Bootstrap from the source with your own build system, be sure to implement your own minifiers for HTML, CSS, and JS.

-

Non-blocking files

-

While minifying and using compression might seem like enough, making your files non-blocking ones is also a big step in making your site well-optimized and fast enough.

-

If you are using a Lighthouse plugin in Google Chrome, you may have stumbled over FCP. The First Contentful Paint metric measures the time from when the page starts loading to when any part of the page's content is rendered on the screen.

-

You can improve FCP by deferring non-critical JavaScript or CSS. What does that mean? Simply, JavaScript or stylesheets that don't need to be present on the first paint of your page should be marked with async or defer attributes.

-

This ensures that the less important resources are loaded later and not blocking the first paint. On the other hand, critical resources can be included as inline scripts or styles.

-

If you want to learn more about this, there are already a lot of great articles about it:

- -

Always use HTTPS

-

Your website should only be available over HTTPS connections in production. HTTPS improves the security, privacy, and availability of all sites, and there is no such thing as non-sensitive web traffic. The steps to configure your website to be served exclusively over HTTPS vary widely depending on your architecture and web hosting provider, and thus are beyond the scope of these docs.

-

Sites served over HTTPS should also access all stylesheets, scripts, and other assets over HTTPS connections. Otherwise, you'll be sending users mixed active content, leading to potential vulnerabilities where a site can be compromised by altering a dependency. This can lead to security issues and in-browser warnings displayed to users. Whether you're getting Bootstrap from a CDN or serving it yourself, ensure that you only access it over HTTPS connections.

\ No newline at end of file diff --git a/site/dist/docs/5.3/customize/options/index.html b/site/dist/docs/5.3/customize/options/index.html deleted file mode 100644 index b57389a0f0..0000000000 --- a/site/dist/docs/5.3/customize/options/index.html +++ /dev/null @@ -1,127 +0,0 @@ - Options · Bootstrap v5.3

Quickly customize Bootstrap with built-in variables to easily toggle global CSS preferences for controlling style and behavior.

Customize Bootstrap with our built-in custom variables file and easily toggle global CSS preferences with new $enable-* Sass variables. Override a variable's value and recompile with npm run test as needed.

-

You can find and customize these variables for key global options in Bootstrap's scss/_variables.scss file.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariableValuesDescription
$spacer1rem (default), or any value > 0Specifies the default spacer value to programmatically generate our spacer utilities.
$enable-dark-modetrue (default) or falseEnables built-in dark mode support across the project and its components.
$enable-roundedtrue (default) or falseEnables predefined border-radius styles on various components.
$enable-shadowstrue or false (default)Enables predefined decorative box-shadow styles on various components. Does not affect box-shadows used for focus states.
$enable-gradientstrue or false (default)Enables predefined gradients via background-image styles on various components.
$enable-transitionstrue (default) or falseEnables predefined transitions on various components.
$enable-reduced-motiontrue (default) or falseEnables the prefers-reduced-motion media query, which suppresses certain animations/transitions based on the users' browser/operating system preferences.
$enable-grid-classestrue (default) or falseEnables the generation of CSS classes for the grid system (e.g. .row, .col-md-1, etc.).
$enable-cssgridtrue or false (default)Enables the experimental CSS Grid system (e.g. .grid, .g-col-md-1, etc.).
$enable-container-classestrue (default) or falseEnables the generation of CSS classes for layout containers. (New in v5.2.0)
$enable-carettrue (default) or falseEnables pseudo element caret on .dropdown-toggle.
$enable-button-pointerstrue (default) or falseAdd "hand" cursor to non-disabled button elements.
$enable-rfstrue (default) or falseGlobally enables RFS.
$enable-validation-iconstrue (default) or falseEnables background-image icons within textual inputs and some custom forms for validation states.
$enable-negative-marginstrue or false (default)Enables the generation of negative margin utilities.
$enable-deprecation-messagestrue (default) or falseSet to false to hide warnings when using any of the deprecated mixins and functions that are planned to be removed in v6.
$enable-important-utilitiestrue (default) or falseEnables the !important suffix in utility classes.
$enable-smooth-scrolltrue (default) or falseApplies scroll-behavior: smooth globally, except for users asking for reduced motion through prefers-reduced-motion media query
\ No newline at end of file diff --git a/site/dist/docs/5.3/customize/overview/index.html b/site/dist/docs/5.3/customize/overview/index.html deleted file mode 100644 index 0a84e8e8bb..0000000000 --- a/site/dist/docs/5.3/customize/overview/index.html +++ /dev/null @@ -1,47 +0,0 @@ - Customize · Bootstrap v5.3

Learn how to theme, customize, and extend Bootstrap with Sass, a boatload of global options, an expansive color system, and more.

Overview

-

There are multiple ways to customize Bootstrap. Your best path can depend on your project, the complexity of your build tools, the version of Bootstrap you're using, browser support, and more.

-

Our two preferred methods are:

-
    -
  1. Using Bootstrap via package manager so you can use and extend our source files.
  2. -
  3. Using Bootstrap's compiled distribution files or jsDelivr so you can add onto or override Bootstrap's styles.
  4. -
-

While we cannot go into details here on how to use every package manager, we can give some guidance on using Bootstrap with your own Sass compiler.

-

For those who want to use the distribution files, review the getting started page for how to include those files and an example HTML page. From there, consult the docs for the layout, components, and behaviors you'd like to use.

-

As you familiarize yourself with Bootstrap, continue exploring this section for more details on how to utilize our global options, making use of and changing our color system, how we build our components, how to use our growing list of CSS custom properties, and how to optimize your code when building with Bootstrap.

-

CSPs and embedded SVGs

-

Several Bootstrap components include embedded SVGs in our CSS to style components consistently and easily across browsers and devices. For organizations with more strict CSP configurations, we've documented all instances of our embedded SVGs (all of which are applied via background-image) so you can more thoroughly review your options.

- -

Based on community conversation, some options for addressing this in your own codebase include replacing the URLs with locally hosted assets, removing the images and using inline images (not possible in all components), and modifying your CSP. Our recommendation is to carefully review your own security policies and decide on the best path forward, if necessary.

\ No newline at end of file diff --git a/site/dist/docs/5.3/customize/sass/index.html b/site/dist/docs/5.3/customize/sass/index.html deleted file mode 100644 index c08030f73d..0000000000 --- a/site/dist/docs/5.3/customize/sass/index.html +++ /dev/null @@ -1,300 +0,0 @@ - Sass · Bootstrap v5.3

Utilize our source Sass files to take advantage of variables, maps, mixins, and functions to help you build faster and customize your project.

Utilize our source Sass files to take advantage of variables, maps, mixins, and more.

-

File structure

-

Whenever possible, avoid modifying Bootstrap's core files. For Sass, that means creating your own stylesheet that imports Bootstrap so you can modify and extend it. Assuming you're using a package manager like npm, you'll have a file structure that looks like this:

-
your-project/
-├── scss/
-│   └── custom.scss
-└── node_modules/
-│   └── bootstrap/
-│       ├── js/
-│       └── scss/
-└── index.html
-
-

If you've downloaded our source files and aren't using a package manager, you'll want to manually create something similar to that structure, keeping Bootstrap's source files separate from your own.

-
your-project/
-├── scss/
-│   └── custom.scss
-├── bootstrap/
-│   ├── js/
-│   └── scss/
-└── index.html
-
-

Importing

-

In your custom.scss, you'll import Bootstrap's source Sass files. You have two options: include all of Bootstrap, or pick the parts you need. We encourage the latter, though be aware there are some requirements and dependencies across our components. You also will need to include some JavaScript for our plugins.

-
// Custom.scss
-// Option A: Include all of Bootstrap
-
-// Include any default variable overrides here (though functions won't be available)
-
-@import "../node_modules/bootstrap/scss/bootstrap";
-
-// Then add additional custom code here
-
-
// Custom.scss
-// Option B: Include parts of Bootstrap
-
-// 1. Include functions first (so you can manipulate colors, SVGs, calc, etc)
-@import "../node_modules/bootstrap/scss/functions";
-
-// 2. Include any default variable overrides here
-
-// 3. Include remainder of required Bootstrap stylesheets (including any separate color mode stylesheets)
-@import "../node_modules/bootstrap/scss/variables";
-@import "../node_modules/bootstrap/scss/variables-dark";
-
-// 4. Include any default map overrides here
-
-// 5. Include remainder of required parts
-@import "../node_modules/bootstrap/scss/maps";
-@import "../node_modules/bootstrap/scss/mixins";
-@import "../node_modules/bootstrap/scss/root";
-
-// 6. Optionally include any other parts as needed
-@import "../node_modules/bootstrap/scss/utilities";
-@import "../node_modules/bootstrap/scss/reboot";
-@import "../node_modules/bootstrap/scss/type";
-@import "../node_modules/bootstrap/scss/images";
-@import "../node_modules/bootstrap/scss/containers";
-@import "../node_modules/bootstrap/scss/grid";
-@import "../node_modules/bootstrap/scss/helpers";
-
-// 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`
-@import "../node_modules/bootstrap/scss/utilities/api";
-
-// 8. Add additional custom code here
-
-

With that setup in place, you can begin to modify any of the Sass variables and maps in your custom.scss. You can also start to add parts of Bootstrap under the // Optional section as needed. We suggest using the full import stack from our bootstrap.scss file as your starting point.

-

Compiling

-

In order to use your custom Sass code as CSS in the browser, you need a Sass compiler. Sass ships as a CLI package, but you can also compile it with other build tools like Gulp or Webpack, or with a GUI applications. Some IDEs also have Sass compilers built in or as downloadable extensions.

-

We like to use the CLI to compile our Sass, but you can use whichever method you prefer. From the command line, run the following:

-
# Install Sass globally
-npm install -g sass
-
-# Watch your custom Sass for changes and compile it to CSS
-sass --watch ./scss/custom.scss ./css/custom.css
-
-

Learn more about your options at sass-lang.com/install and compiling with VS Code.

-

Using Bootstrap with another build tool? Consider reading our guides for compiling with Webpack, Parcel, or Vite. We also have production-ready demos in our examples repository on GitHub.

-

Including

-

Once your CSS is compiled, you can include it in your HTML files. Inside your index.html you'll want to include your compiled CSS file. Be sure to update the path to your compiled CSS file if you've changed it.

-
<!doctype html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Custom Bootstrap</title>
-    <link href="/css/custom.css" rel="stylesheet">
-  </head>
-  <body>
-    <h1>Hello, world!</h1>
-  </body>
-</html>
-
-

Variable defaults

-

Every Sass variable in Bootstrap includes the !default flag allowing you to override the variable's default value in your own Sass without modifying Bootstrap's source code. Copy and paste variables as needed, modify their values, and remove the !default flag. If a variable has already been assigned, then it won't be re-assigned by the default values in Bootstrap.

-

You will find the complete list of Bootstrap's variables in scss/_variables.scss. Some variables are set to null, these variables don't output the property unless they are overridden in your configuration.

-

Variable overrides must come after our functions are imported, but before the rest of the imports.

-

Here's an example that changes the background-color and color for the <body> when importing and compiling Bootstrap via npm:

-
// Required
-@import "../node_modules/bootstrap/scss/functions";
-
-// Default variable overrides
-$body-bg: #000;
-$body-color: #111;
-
-// Required
-@import "../node_modules/bootstrap/scss/variables";
-@import "../node_modules/bootstrap/scss/variables-dark";
-@import "../node_modules/bootstrap/scss/maps";
-@import "../node_modules/bootstrap/scss/mixins";
-@import "../node_modules/bootstrap/scss/root";
-
-// Optional Bootstrap components here
-@import "../node_modules/bootstrap/scss/reboot";
-@import "../node_modules/bootstrap/scss/type";
-// etc
-
-

Repeat as necessary for any variable in Bootstrap, including the global options below.

-

Get started with Bootstrap via npm with our starter project! Head to the Sass & JS example template repository to see how to build and customize Bootstrap in your own npm project. Includes Sass compiler, Autoprefixer, Stylelint, PurgeCSS, and Bootstrap Icons.

-

Maps and loops

-

Bootstrap includes a handful of Sass maps, key value pairs that make it easier to generate families of related CSS. We use Sass maps for our colors, grid breakpoints, and more. Just like Sass variables, all Sass maps include the !default flag and can be overridden and extended.

-

Some of our Sass maps are merged into empty ones by default. This is done to allow easy expansion of a given Sass map, but comes at the cost of making removing items from a map slightly more difficult.

-

Modify map

-

All variables in the $theme-colors map are defined as standalone variables. To modify an existing color in our $theme-colors map, add the following to your custom Sass file:

-
$primary: #0074d9;
-$danger: #ff4136;
-
-

Later on, these variables are set in Bootstrap's $theme-colors map:

-
$theme-colors: (
-  "primary": $primary,
-  "danger": $danger
-);
-
-

Add to map

-

Add new colors to $theme-colors, or any other map, by creating a new Sass map with your custom values and merging it with the original map. In this case, we'll create a new $custom-colors map and merge it with $theme-colors.

-
// Create your own map
-$custom-colors: (
-  "custom-color": #900
-);
-
-// Merge the maps
-$theme-colors: map-merge($theme-colors, $custom-colors);
-
-

Remove from map

-

To remove colors from $theme-colors, or any other map, use map-remove. Be aware you must insert $theme-colors between our requirements just after its definition in variables and before its usage in maps:

-
// Required
-@import "../node_modules/bootstrap/scss/functions";
-@import "../node_modules/bootstrap/scss/variables";
-@import "../node_modules/bootstrap/scss/variables-dark";
-
-$theme-colors: map-remove($theme-colors, "info", "light", "dark");
-
-@import "../node_modules/bootstrap/scss/maps";
-@import "../node_modules/bootstrap/scss/mixins";
-@import "../node_modules/bootstrap/scss/root";
-
-// Optional
-@import "../node_modules/bootstrap/scss/reboot";
-@import "../node_modules/bootstrap/scss/type";
-// etc
-
-

Required keys

-

Bootstrap assumes the presence of some specific keys within Sass maps as we used and extend these ourselves. As you customize the included maps, you may encounter errors where a specific Sass map's key is being used.

-

For example, we use the primary, success, and danger keys from $theme-colors for links, buttons, and form states. Replacing the values of these keys should present no issues, but removing them may cause Sass compilation issues. In these instances, you'll need to modify the Sass code that makes use of those values.

-

Functions

-

Colors

-

Next to the Sass maps we have, theme colors can also be used as standalone variables, like $primary.

-
.custom-element {
-  color: $gray-100;
-  background-color: $dark;
-}
-
-

You can lighten or darken colors with Bootstrap's tint-color() and shade-color() functions. These functions will mix colors with black or white, unlike Sass' native lighten() and darken() functions which will change the lightness by a fixed amount, which often doesn't lead to the desired effect.

-

shift-color() combines these two functions by shading the color if the weight is positive and tinting the color if the weight is negative.

-
// Tint a color: mix a color with white
-@function tint-color($color, $weight) {
-  @return mix(white, $color, $weight);
-}
-
-// Shade a color: mix a color with black
-@function shade-color($color, $weight) {
-  @return mix(black, $color, $weight);
-}
-
-// Shade the color if the weight is positive, else tint it
-@function shift-color($color, $weight) {
-  @return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight));
-}
-
-

In practice, you'd call the function and pass in the color and weight parameters.

-
.custom-element {
-  color: tint-color($primary, 10%);
-}
-
-.custom-element-2 {
-  color: shade-color($danger, 30%);
-}
-
-.custom-element-3 {
-  color: shift-color($success, 40%);
-  background-color: shift-color($success, -60%);
-}
-
-

Color contrast

-

In order to meet the Web Content Accessibility Guidelines (WCAG) contrast requirements, authors must provide a minimum text color contrast of 4.5:1 and a minimum non-text color contrast of 3:1, with very few exceptions.

-

To help with this, we included the color-contrast function in Bootstrap. It uses the WCAG contrast ratio algorithm for calculating contrast thresholds based on relative luminance in an sRGB color space to automatically return a light (#fff), dark (#212529) or black (#000) contrast color based on the specified base color. This function is especially useful for mixins or loops where you're generating multiple classes.

-

For example, to generate color swatches from our $theme-colors map:

-
@each $color, $value in $theme-colors {
-  .swatch-#{$color} {
-    color: color-contrast($value);
-  }
-}
-
-

It can also be used for one-off contrast needs:

-
.custom-element {
-  color: color-contrast(#000); // returns `color: #fff`
-}
-
-

You can also specify a base color with our color map functions:

-
.custom-element {
-  color: color-contrast($dark); // returns `color: #fff`
-}
-
-

Escape SVG

-

We use the escape-svg function to escape the <, > and # characters for SVG background images. When using the escape-svg function, data URIs must be quoted.

-

Add and Subtract functions

-

We use the add and subtract functions to wrap the CSS calc function. The primary purpose of these functions is to avoid errors when a "unitless" 0 value is passed into a calc expression. Expressions like calc(10px - 0) will return an error in all browsers, despite being mathematically correct.

-

Example where the calc is valid:

-
$border-radius: .25rem;
-$border-width: 1px;
-
-.element {
-  // Output calc(.25rem - 1px) is valid
-  border-radius: calc($border-radius - $border-width);
-}
-
-.element {
-  // Output the same calc(.25rem - 1px) as above
-  border-radius: subtract($border-radius, $border-width);
-}
-
-

Example where the calc is invalid:

-
$border-radius: .25rem;
-$border-width: 0;
-
-.element {
-  // Output calc(.25rem - 0) is invalid
-  border-radius: calc($border-radius - $border-width);
-}
-
-.element {
-  // Output .25rem
-  border-radius: subtract($border-radius, $border-width);
-}
-
-

Mixins

-

Our scss/mixins/ directory has a ton of mixins that power parts of Bootstrap and can also be used across your own project.

-

Color schemes

-

A shorthand mixin for the prefers-color-scheme media query is available with support for light and dark color schemes. See the color modes documentation for information on our color mode mixin.

-
@mixin color-scheme($name) {
-  @media (prefers-color-scheme: #{$name}) {
-    @content;
-  }
-}
-
-
.custom-element {
-  @include color-scheme(light) {
-    // Insert light mode styles here
-  }
-
-  @include color-scheme(dark) {
-    // Insert dark mode styles here
-  }
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-grid.css b/site/dist/docs/5.3/dist/css/bootstrap-grid.css deleted file mode 100644 index 3882a8199b..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-grid.css +++ /dev/null @@ -1,4085 +0,0 @@ -/*! - * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - width: 100%; - padding-right: calc(var(--bs-gutter-x) * 0.5); - padding-left: calc(var(--bs-gutter-x) * 0.5); - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; - } -} -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; - } -} -:root { - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; -} - -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--bs-gutter-y)); - margin-right: calc(-0.5 * var(--bs-gutter-x)); - margin-left: calc(-0.5 * var(--bs-gutter-x)); -} -.row > * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--bs-gutter-x) * 0.5); - padding-left: calc(var(--bs-gutter-x) * 0.5); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.33333333%; -} - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; -} - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-left: 8.33333333%; -} - -.offset-2 { - margin-left: 16.66666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.33333333%; -} - -.offset-5 { - margin-left: 41.66666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.33333333%; -} - -.offset-8 { - margin-left: 66.66666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.33333333%; -} - -.offset-11 { - margin-left: 91.66666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-sm-0 { - margin-left: 0; - } - .offset-sm-1 { - margin-left: 8.33333333%; - } - .offset-sm-2 { - margin-left: 16.66666667%; - } - .offset-sm-3 { - margin-left: 25%; - } - .offset-sm-4 { - margin-left: 33.33333333%; - } - .offset-sm-5 { - margin-left: 41.66666667%; - } - .offset-sm-6 { - margin-left: 50%; - } - .offset-sm-7 { - margin-left: 58.33333333%; - } - .offset-sm-8 { - margin-left: 66.66666667%; - } - .offset-sm-9 { - margin-left: 75%; - } - .offset-sm-10 { - margin-left: 83.33333333%; - } - .offset-sm-11 { - margin-left: 91.66666667%; - } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; - } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; - } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; - } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; - } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; - } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-md-0 { - margin-left: 0; - } - .offset-md-1 { - margin-left: 8.33333333%; - } - .offset-md-2 { - margin-left: 16.66666667%; - } - .offset-md-3 { - margin-left: 25%; - } - .offset-md-4 { - margin-left: 33.33333333%; - } - .offset-md-5 { - margin-left: 41.66666667%; - } - .offset-md-6 { - margin-left: 50%; - } - .offset-md-7 { - margin-left: 58.33333333%; - } - .offset-md-8 { - margin-left: 66.66666667%; - } - .offset-md-9 { - margin-left: 75%; - } - .offset-md-10 { - margin-left: 83.33333333%; - } - .offset-md-11 { - margin-left: 91.66666667%; - } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; - } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; - } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; - } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; - } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; - } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; - } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; - } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; - } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; - } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; - } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; - } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-lg-0 { - margin-left: 0; - } - .offset-lg-1 { - margin-left: 8.33333333%; - } - .offset-lg-2 { - margin-left: 16.66666667%; - } - .offset-lg-3 { - margin-left: 25%; - } - .offset-lg-4 { - margin-left: 33.33333333%; - } - .offset-lg-5 { - margin-left: 41.66666667%; - } - .offset-lg-6 { - margin-left: 50%; - } - .offset-lg-7 { - margin-left: 58.33333333%; - } - .offset-lg-8 { - margin-left: 66.66666667%; - } - .offset-lg-9 { - margin-left: 75%; - } - .offset-lg-10 { - margin-left: 83.33333333%; - } - .offset-lg-11 { - margin-left: 91.66666667%; - } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; - } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; - } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; - } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; - } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; - } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xl-0 { - margin-left: 0; - } - .offset-xl-1 { - margin-left: 8.33333333%; - } - .offset-xl-2 { - margin-left: 16.66666667%; - } - .offset-xl-3 { - margin-left: 25%; - } - .offset-xl-4 { - margin-left: 33.33333333%; - } - .offset-xl-5 { - margin-left: 41.66666667%; - } - .offset-xl-6 { - margin-left: 50%; - } - .offset-xl-7 { - margin-left: 58.33333333%; - } - .offset-xl-8 { - margin-left: 66.66666667%; - } - .offset-xl-9 { - margin-left: 75%; - } - .offset-xl-10 { - margin-left: 83.33333333%; - } - .offset-xl-11 { - margin-left: 91.66666667%; - } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; - } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; - } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; - } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; - } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; - } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xxl-0 { - margin-left: 0; - } - .offset-xxl-1 { - margin-left: 8.33333333%; - } - .offset-xxl-2 { - margin-left: 16.66666667%; - } - .offset-xxl-3 { - margin-left: 25%; - } - .offset-xxl-4 { - margin-left: 33.33333333%; - } - .offset-xxl-5 { - margin-left: 41.66666667%; - } - .offset-xxl-6 { - margin-left: 50%; - } - .offset-xxl-7 { - margin-left: 58.33333333%; - } - .offset-xxl-8 { - margin-left: 66.66666667%; - } - .offset-xxl-9 { - margin-left: 75%; - } - .offset-xxl-10 { - margin-left: 83.33333333%; - } - .offset-xxl-11 { - margin-left: 91.66666667%; - } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; - } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; - } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; - } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; - } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; - } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: grid !important; -} - -.d-inline-grid { - display: inline-grid !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-none { - display: none !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important; -} - -.mx-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; -} - -.mx-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; -} - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; -} - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; -} - -.mx-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; -} - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-right: 0 !important; -} - -.me-1 { - margin-right: 0.25rem !important; -} - -.me-2 { - margin-right: 0.5rem !important; -} - -.me-3 { - margin-right: 1rem !important; -} - -.me-4 { - margin-right: 1.5rem !important; -} - -.me-5 { - margin-right: 3rem !important; -} - -.me-auto { - margin-right: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-left: 0 !important; -} - -.ms-1 { - margin-left: 0.25rem !important; -} - -.ms-2 { - margin-left: 0.5rem !important; -} - -.ms-3 { - margin-left: 1rem !important; -} - -.ms-4 { - margin-left: 1.5rem !important; -} - -.ms-5 { - margin-left: 3rem !important; -} - -.ms-auto { - margin-left: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important; -} - -.px-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; -} - -.px-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; -} - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; -} - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; -} - -.px-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-right: 0 !important; -} - -.pe-1 { - padding-right: 0.25rem !important; -} - -.pe-2 { - padding-right: 0.5rem !important; -} - -.pe-3 { - padding-right: 1rem !important; -} - -.pe-4 { - padding-right: 1.5rem !important; -} - -.pe-5 { - padding-right: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-left: 0 !important; -} - -.ps-1 { - padding-left: 0.25rem !important; -} - -.ps-2 { - padding-left: 0.5rem !important; -} - -.ps-3 { - padding-left: 1rem !important; -} - -.ps-4 { - padding-left: 1.5rem !important; -} - -.ps-5 { - padding-left: 3rem !important; -} - -@media (min-width: 576px) { - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-grid { - display: grid !important; - } - .d-sm-inline-grid { - display: inline-grid !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: flex !important; - } - .d-sm-inline-flex { - display: inline-flex !important; - } - .d-sm-none { - display: none !important; - } - .flex-sm-fill { - flex: 1 1 auto !important; - } - .flex-sm-row { - flex-direction: row !important; - } - .flex-sm-column { - flex-direction: column !important; - } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - .flex-sm-wrap { - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-sm-start { - justify-content: flex-start !important; - } - .justify-content-sm-end { - justify-content: flex-end !important; - } - .justify-content-sm-center { - justify-content: center !important; - } - .justify-content-sm-between { - justify-content: space-between !important; - } - .justify-content-sm-around { - justify-content: space-around !important; - } - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - .align-items-sm-start { - align-items: flex-start !important; - } - .align-items-sm-end { - align-items: flex-end !important; - } - .align-items-sm-center { - align-items: center !important; - } - .align-items-sm-baseline { - align-items: baseline !important; - } - .align-items-sm-stretch { - align-items: stretch !important; - } - .align-content-sm-start { - align-content: flex-start !important; - } - .align-content-sm-end { - align-content: flex-end !important; - } - .align-content-sm-center { - align-content: center !important; - } - .align-content-sm-between { - align-content: space-between !important; - } - .align-content-sm-around { - align-content: space-around !important; - } - .align-content-sm-stretch { - align-content: stretch !important; - } - .align-self-sm-auto { - align-self: auto !important; - } - .align-self-sm-start { - align-self: flex-start !important; - } - .align-self-sm-end { - align-self: flex-end !important; - } - .align-self-sm-center { - align-self: center !important; - } - .align-self-sm-baseline { - align-self: baseline !important; - } - .align-self-sm-stretch { - align-self: stretch !important; - } - .order-sm-first { - order: -1 !important; - } - .order-sm-0 { - order: 0 !important; - } - .order-sm-1 { - order: 1 !important; - } - .order-sm-2 { - order: 2 !important; - } - .order-sm-3 { - order: 3 !important; - } - .order-sm-4 { - order: 4 !important; - } - .order-sm-5 { - order: 5 !important; - } - .order-sm-last { - order: 6 !important; - } - .m-sm-0 { - margin: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-sm-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-sm-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-sm-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-sm-0 { - margin-top: 0 !important; - } - .mt-sm-1 { - margin-top: 0.25rem !important; - } - .mt-sm-2 { - margin-top: 0.5rem !important; - } - .mt-sm-3 { - margin-top: 1rem !important; - } - .mt-sm-4 { - margin-top: 1.5rem !important; - } - .mt-sm-5 { - margin-top: 3rem !important; - } - .mt-sm-auto { - margin-top: auto !important; - } - .me-sm-0 { - margin-right: 0 !important; - } - .me-sm-1 { - margin-right: 0.25rem !important; - } - .me-sm-2 { - margin-right: 0.5rem !important; - } - .me-sm-3 { - margin-right: 1rem !important; - } - .me-sm-4 { - margin-right: 1.5rem !important; - } - .me-sm-5 { - margin-right: 3rem !important; - } - .me-sm-auto { - margin-right: auto !important; - } - .mb-sm-0 { - margin-bottom: 0 !important; - } - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - .mb-sm-3 { - margin-bottom: 1rem !important; - } - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - .mb-sm-5 { - margin-bottom: 3rem !important; - } - .mb-sm-auto { - margin-bottom: auto !important; - } - .ms-sm-0 { - margin-left: 0 !important; - } - .ms-sm-1 { - margin-left: 0.25rem !important; - } - .ms-sm-2 { - margin-left: 0.5rem !important; - } - .ms-sm-3 { - margin-left: 1rem !important; - } - .ms-sm-4 { - margin-left: 1.5rem !important; - } - .ms-sm-5 { - margin-left: 3rem !important; - } - .ms-sm-auto { - margin-left: auto !important; - } - .p-sm-0 { - padding: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-sm-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-sm-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-sm-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-sm-0 { - padding-top: 0 !important; - } - .pt-sm-1 { - padding-top: 0.25rem !important; - } - .pt-sm-2 { - padding-top: 0.5rem !important; - } - .pt-sm-3 { - padding-top: 1rem !important; - } - .pt-sm-4 { - padding-top: 1.5rem !important; - } - .pt-sm-5 { - padding-top: 3rem !important; - } - .pe-sm-0 { - padding-right: 0 !important; - } - .pe-sm-1 { - padding-right: 0.25rem !important; - } - .pe-sm-2 { - padding-right: 0.5rem !important; - } - .pe-sm-3 { - padding-right: 1rem !important; - } - .pe-sm-4 { - padding-right: 1.5rem !important; - } - .pe-sm-5 { - padding-right: 3rem !important; - } - .pb-sm-0 { - padding-bottom: 0 !important; - } - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - .pb-sm-3 { - padding-bottom: 1rem !important; - } - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - .pb-sm-5 { - padding-bottom: 3rem !important; - } - .ps-sm-0 { - padding-left: 0 !important; - } - .ps-sm-1 { - padding-left: 0.25rem !important; - } - .ps-sm-2 { - padding-left: 0.5rem !important; - } - .ps-sm-3 { - padding-left: 1rem !important; - } - .ps-sm-4 { - padding-left: 1.5rem !important; - } - .ps-sm-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 768px) { - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-grid { - display: grid !important; - } - .d-md-inline-grid { - display: inline-grid !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: flex !important; - } - .d-md-inline-flex { - display: inline-flex !important; - } - .d-md-none { - display: none !important; - } - .flex-md-fill { - flex: 1 1 auto !important; - } - .flex-md-row { - flex-direction: row !important; - } - .flex-md-column { - flex-direction: column !important; - } - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - .flex-md-grow-0 { - flex-grow: 0 !important; - } - .flex-md-grow-1 { - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - .flex-md-wrap { - flex-wrap: wrap !important; - } - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-md-start { - justify-content: flex-start !important; - } - .justify-content-md-end { - justify-content: flex-end !important; - } - .justify-content-md-center { - justify-content: center !important; - } - .justify-content-md-between { - justify-content: space-between !important; - } - .justify-content-md-around { - justify-content: space-around !important; - } - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - .align-items-md-start { - align-items: flex-start !important; - } - .align-items-md-end { - align-items: flex-end !important; - } - .align-items-md-center { - align-items: center !important; - } - .align-items-md-baseline { - align-items: baseline !important; - } - .align-items-md-stretch { - align-items: stretch !important; - } - .align-content-md-start { - align-content: flex-start !important; - } - .align-content-md-end { - align-content: flex-end !important; - } - .align-content-md-center { - align-content: center !important; - } - .align-content-md-between { - align-content: space-between !important; - } - .align-content-md-around { - align-content: space-around !important; - } - .align-content-md-stretch { - align-content: stretch !important; - } - .align-self-md-auto { - align-self: auto !important; - } - .align-self-md-start { - align-self: flex-start !important; - } - .align-self-md-end { - align-self: flex-end !important; - } - .align-self-md-center { - align-self: center !important; - } - .align-self-md-baseline { - align-self: baseline !important; - } - .align-self-md-stretch { - align-self: stretch !important; - } - .order-md-first { - order: -1 !important; - } - .order-md-0 { - order: 0 !important; - } - .order-md-1 { - order: 1 !important; - } - .order-md-2 { - order: 2 !important; - } - .order-md-3 { - order: 3 !important; - } - .order-md-4 { - order: 4 !important; - } - .order-md-5 { - order: 5 !important; - } - .order-md-last { - order: 6 !important; - } - .m-md-0 { - margin: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-md-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-md-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-md-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-md-0 { - margin-top: 0 !important; - } - .mt-md-1 { - margin-top: 0.25rem !important; - } - .mt-md-2 { - margin-top: 0.5rem !important; - } - .mt-md-3 { - margin-top: 1rem !important; - } - .mt-md-4 { - margin-top: 1.5rem !important; - } - .mt-md-5 { - margin-top: 3rem !important; - } - .mt-md-auto { - margin-top: auto !important; - } - .me-md-0 { - margin-right: 0 !important; - } - .me-md-1 { - margin-right: 0.25rem !important; - } - .me-md-2 { - margin-right: 0.5rem !important; - } - .me-md-3 { - margin-right: 1rem !important; - } - .me-md-4 { - margin-right: 1.5rem !important; - } - .me-md-5 { - margin-right: 3rem !important; - } - .me-md-auto { - margin-right: auto !important; - } - .mb-md-0 { - margin-bottom: 0 !important; - } - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - .mb-md-3 { - margin-bottom: 1rem !important; - } - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - .mb-md-5 { - margin-bottom: 3rem !important; - } - .mb-md-auto { - margin-bottom: auto !important; - } - .ms-md-0 { - margin-left: 0 !important; - } - .ms-md-1 { - margin-left: 0.25rem !important; - } - .ms-md-2 { - margin-left: 0.5rem !important; - } - .ms-md-3 { - margin-left: 1rem !important; - } - .ms-md-4 { - margin-left: 1.5rem !important; - } - .ms-md-5 { - margin-left: 3rem !important; - } - .ms-md-auto { - margin-left: auto !important; - } - .p-md-0 { - padding: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-md-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-md-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-md-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-md-0 { - padding-top: 0 !important; - } - .pt-md-1 { - padding-top: 0.25rem !important; - } - .pt-md-2 { - padding-top: 0.5rem !important; - } - .pt-md-3 { - padding-top: 1rem !important; - } - .pt-md-4 { - padding-top: 1.5rem !important; - } - .pt-md-5 { - padding-top: 3rem !important; - } - .pe-md-0 { - padding-right: 0 !important; - } - .pe-md-1 { - padding-right: 0.25rem !important; - } - .pe-md-2 { - padding-right: 0.5rem !important; - } - .pe-md-3 { - padding-right: 1rem !important; - } - .pe-md-4 { - padding-right: 1.5rem !important; - } - .pe-md-5 { - padding-right: 3rem !important; - } - .pb-md-0 { - padding-bottom: 0 !important; - } - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - .pb-md-3 { - padding-bottom: 1rem !important; - } - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - .pb-md-5 { - padding-bottom: 3rem !important; - } - .ps-md-0 { - padding-left: 0 !important; - } - .ps-md-1 { - padding-left: 0.25rem !important; - } - .ps-md-2 { - padding-left: 0.5rem !important; - } - .ps-md-3 { - padding-left: 1rem !important; - } - .ps-md-4 { - padding-left: 1.5rem !important; - } - .ps-md-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 992px) { - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-grid { - display: grid !important; - } - .d-lg-inline-grid { - display: inline-grid !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: flex !important; - } - .d-lg-inline-flex { - display: inline-flex !important; - } - .d-lg-none { - display: none !important; - } - .flex-lg-fill { - flex: 1 1 auto !important; - } - .flex-lg-row { - flex-direction: row !important; - } - .flex-lg-column { - flex-direction: column !important; - } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - .flex-lg-wrap { - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-lg-start { - justify-content: flex-start !important; - } - .justify-content-lg-end { - justify-content: flex-end !important; - } - .justify-content-lg-center { - justify-content: center !important; - } - .justify-content-lg-between { - justify-content: space-between !important; - } - .justify-content-lg-around { - justify-content: space-around !important; - } - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - .align-items-lg-start { - align-items: flex-start !important; - } - .align-items-lg-end { - align-items: flex-end !important; - } - .align-items-lg-center { - align-items: center !important; - } - .align-items-lg-baseline { - align-items: baseline !important; - } - .align-items-lg-stretch { - align-items: stretch !important; - } - .align-content-lg-start { - align-content: flex-start !important; - } - .align-content-lg-end { - align-content: flex-end !important; - } - .align-content-lg-center { - align-content: center !important; - } - .align-content-lg-between { - align-content: space-between !important; - } - .align-content-lg-around { - align-content: space-around !important; - } - .align-content-lg-stretch { - align-content: stretch !important; - } - .align-self-lg-auto { - align-self: auto !important; - } - .align-self-lg-start { - align-self: flex-start !important; - } - .align-self-lg-end { - align-self: flex-end !important; - } - .align-self-lg-center { - align-self: center !important; - } - .align-self-lg-baseline { - align-self: baseline !important; - } - .align-self-lg-stretch { - align-self: stretch !important; - } - .order-lg-first { - order: -1 !important; - } - .order-lg-0 { - order: 0 !important; - } - .order-lg-1 { - order: 1 !important; - } - .order-lg-2 { - order: 2 !important; - } - .order-lg-3 { - order: 3 !important; - } - .order-lg-4 { - order: 4 !important; - } - .order-lg-5 { - order: 5 !important; - } - .order-lg-last { - order: 6 !important; - } - .m-lg-0 { - margin: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-lg-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-lg-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-lg-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-lg-0 { - margin-top: 0 !important; - } - .mt-lg-1 { - margin-top: 0.25rem !important; - } - .mt-lg-2 { - margin-top: 0.5rem !important; - } - .mt-lg-3 { - margin-top: 1rem !important; - } - .mt-lg-4 { - margin-top: 1.5rem !important; - } - .mt-lg-5 { - margin-top: 3rem !important; - } - .mt-lg-auto { - margin-top: auto !important; - } - .me-lg-0 { - margin-right: 0 !important; - } - .me-lg-1 { - margin-right: 0.25rem !important; - } - .me-lg-2 { - margin-right: 0.5rem !important; - } - .me-lg-3 { - margin-right: 1rem !important; - } - .me-lg-4 { - margin-right: 1.5rem !important; - } - .me-lg-5 { - margin-right: 3rem !important; - } - .me-lg-auto { - margin-right: auto !important; - } - .mb-lg-0 { - margin-bottom: 0 !important; - } - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - .mb-lg-3 { - margin-bottom: 1rem !important; - } - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - .mb-lg-5 { - margin-bottom: 3rem !important; - } - .mb-lg-auto { - margin-bottom: auto !important; - } - .ms-lg-0 { - margin-left: 0 !important; - } - .ms-lg-1 { - margin-left: 0.25rem !important; - } - .ms-lg-2 { - margin-left: 0.5rem !important; - } - .ms-lg-3 { - margin-left: 1rem !important; - } - .ms-lg-4 { - margin-left: 1.5rem !important; - } - .ms-lg-5 { - margin-left: 3rem !important; - } - .ms-lg-auto { - margin-left: auto !important; - } - .p-lg-0 { - padding: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-lg-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-lg-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-lg-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-lg-0 { - padding-top: 0 !important; - } - .pt-lg-1 { - padding-top: 0.25rem !important; - } - .pt-lg-2 { - padding-top: 0.5rem !important; - } - .pt-lg-3 { - padding-top: 1rem !important; - } - .pt-lg-4 { - padding-top: 1.5rem !important; - } - .pt-lg-5 { - padding-top: 3rem !important; - } - .pe-lg-0 { - padding-right: 0 !important; - } - .pe-lg-1 { - padding-right: 0.25rem !important; - } - .pe-lg-2 { - padding-right: 0.5rem !important; - } - .pe-lg-3 { - padding-right: 1rem !important; - } - .pe-lg-4 { - padding-right: 1.5rem !important; - } - .pe-lg-5 { - padding-right: 3rem !important; - } - .pb-lg-0 { - padding-bottom: 0 !important; - } - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - .pb-lg-3 { - padding-bottom: 1rem !important; - } - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - .pb-lg-5 { - padding-bottom: 3rem !important; - } - .ps-lg-0 { - padding-left: 0 !important; - } - .ps-lg-1 { - padding-left: 0.25rem !important; - } - .ps-lg-2 { - padding-left: 0.5rem !important; - } - .ps-lg-3 { - padding-left: 1rem !important; - } - .ps-lg-4 { - padding-left: 1.5rem !important; - } - .ps-lg-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1200px) { - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-grid { - display: grid !important; - } - .d-xl-inline-grid { - display: inline-grid !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: flex !important; - } - .d-xl-inline-flex { - display: inline-flex !important; - } - .d-xl-none { - display: none !important; - } - .flex-xl-fill { - flex: 1 1 auto !important; - } - .flex-xl-row { - flex-direction: row !important; - } - .flex-xl-column { - flex-direction: column !important; - } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xl-wrap { - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xl-start { - justify-content: flex-start !important; - } - .justify-content-xl-end { - justify-content: flex-end !important; - } - .justify-content-xl-center { - justify-content: center !important; - } - .justify-content-xl-between { - justify-content: space-between !important; - } - .justify-content-xl-around { - justify-content: space-around !important; - } - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - .align-items-xl-start { - align-items: flex-start !important; - } - .align-items-xl-end { - align-items: flex-end !important; - } - .align-items-xl-center { - align-items: center !important; - } - .align-items-xl-baseline { - align-items: baseline !important; - } - .align-items-xl-stretch { - align-items: stretch !important; - } - .align-content-xl-start { - align-content: flex-start !important; - } - .align-content-xl-end { - align-content: flex-end !important; - } - .align-content-xl-center { - align-content: center !important; - } - .align-content-xl-between { - align-content: space-between !important; - } - .align-content-xl-around { - align-content: space-around !important; - } - .align-content-xl-stretch { - align-content: stretch !important; - } - .align-self-xl-auto { - align-self: auto !important; - } - .align-self-xl-start { - align-self: flex-start !important; - } - .align-self-xl-end { - align-self: flex-end !important; - } - .align-self-xl-center { - align-self: center !important; - } - .align-self-xl-baseline { - align-self: baseline !important; - } - .align-self-xl-stretch { - align-self: stretch !important; - } - .order-xl-first { - order: -1 !important; - } - .order-xl-0 { - order: 0 !important; - } - .order-xl-1 { - order: 1 !important; - } - .order-xl-2 { - order: 2 !important; - } - .order-xl-3 { - order: 3 !important; - } - .order-xl-4 { - order: 4 !important; - } - .order-xl-5 { - order: 5 !important; - } - .order-xl-last { - order: 6 !important; - } - .m-xl-0 { - margin: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-xl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-xl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-xl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xl-0 { - margin-top: 0 !important; - } - .mt-xl-1 { - margin-top: 0.25rem !important; - } - .mt-xl-2 { - margin-top: 0.5rem !important; - } - .mt-xl-3 { - margin-top: 1rem !important; - } - .mt-xl-4 { - margin-top: 1.5rem !important; - } - .mt-xl-5 { - margin-top: 3rem !important; - } - .mt-xl-auto { - margin-top: auto !important; - } - .me-xl-0 { - margin-right: 0 !important; - } - .me-xl-1 { - margin-right: 0.25rem !important; - } - .me-xl-2 { - margin-right: 0.5rem !important; - } - .me-xl-3 { - margin-right: 1rem !important; - } - .me-xl-4 { - margin-right: 1.5rem !important; - } - .me-xl-5 { - margin-right: 3rem !important; - } - .me-xl-auto { - margin-right: auto !important; - } - .mb-xl-0 { - margin-bottom: 0 !important; - } - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xl-3 { - margin-bottom: 1rem !important; - } - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xl-5 { - margin-bottom: 3rem !important; - } - .mb-xl-auto { - margin-bottom: auto !important; - } - .ms-xl-0 { - margin-left: 0 !important; - } - .ms-xl-1 { - margin-left: 0.25rem !important; - } - .ms-xl-2 { - margin-left: 0.5rem !important; - } - .ms-xl-3 { - margin-left: 1rem !important; - } - .ms-xl-4 { - margin-left: 1.5rem !important; - } - .ms-xl-5 { - margin-left: 3rem !important; - } - .ms-xl-auto { - margin-left: auto !important; - } - .p-xl-0 { - padding: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-xl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-xl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-xl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xl-0 { - padding-top: 0 !important; - } - .pt-xl-1 { - padding-top: 0.25rem !important; - } - .pt-xl-2 { - padding-top: 0.5rem !important; - } - .pt-xl-3 { - padding-top: 1rem !important; - } - .pt-xl-4 { - padding-top: 1.5rem !important; - } - .pt-xl-5 { - padding-top: 3rem !important; - } - .pe-xl-0 { - padding-right: 0 !important; - } - .pe-xl-1 { - padding-right: 0.25rem !important; - } - .pe-xl-2 { - padding-right: 0.5rem !important; - } - .pe-xl-3 { - padding-right: 1rem !important; - } - .pe-xl-4 { - padding-right: 1.5rem !important; - } - .pe-xl-5 { - padding-right: 3rem !important; - } - .pb-xl-0 { - padding-bottom: 0 !important; - } - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xl-3 { - padding-bottom: 1rem !important; - } - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xl-5 { - padding-bottom: 3rem !important; - } - .ps-xl-0 { - padding-left: 0 !important; - } - .ps-xl-1 { - padding-left: 0.25rem !important; - } - .ps-xl-2 { - padding-left: 0.5rem !important; - } - .ps-xl-3 { - padding-left: 1rem !important; - } - .ps-xl-4 { - padding-left: 1.5rem !important; - } - .ps-xl-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1400px) { - .d-xxl-inline { - display: inline !important; - } - .d-xxl-inline-block { - display: inline-block !important; - } - .d-xxl-block { - display: block !important; - } - .d-xxl-grid { - display: grid !important; - } - .d-xxl-inline-grid { - display: inline-grid !important; - } - .d-xxl-table { - display: table !important; - } - .d-xxl-table-row { - display: table-row !important; - } - .d-xxl-table-cell { - display: table-cell !important; - } - .d-xxl-flex { - display: flex !important; - } - .d-xxl-inline-flex { - display: inline-flex !important; - } - .d-xxl-none { - display: none !important; - } - .flex-xxl-fill { - flex: 1 1 auto !important; - } - .flex-xxl-row { - flex-direction: row !important; - } - .flex-xxl-column { - flex-direction: column !important; - } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xxl-start { - justify-content: flex-start !important; - } - .justify-content-xxl-end { - justify-content: flex-end !important; - } - .justify-content-xxl-center { - justify-content: center !important; - } - .justify-content-xxl-between { - justify-content: space-between !important; - } - .justify-content-xxl-around { - justify-content: space-around !important; - } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - .align-items-xxl-start { - align-items: flex-start !important; - } - .align-items-xxl-end { - align-items: flex-end !important; - } - .align-items-xxl-center { - align-items: center !important; - } - .align-items-xxl-baseline { - align-items: baseline !important; - } - .align-items-xxl-stretch { - align-items: stretch !important; - } - .align-content-xxl-start { - align-content: flex-start !important; - } - .align-content-xxl-end { - align-content: flex-end !important; - } - .align-content-xxl-center { - align-content: center !important; - } - .align-content-xxl-between { - align-content: space-between !important; - } - .align-content-xxl-around { - align-content: space-around !important; - } - .align-content-xxl-stretch { - align-content: stretch !important; - } - .align-self-xxl-auto { - align-self: auto !important; - } - .align-self-xxl-start { - align-self: flex-start !important; - } - .align-self-xxl-end { - align-self: flex-end !important; - } - .align-self-xxl-center { - align-self: center !important; - } - .align-self-xxl-baseline { - align-self: baseline !important; - } - .align-self-xxl-stretch { - align-self: stretch !important; - } - .order-xxl-first { - order: -1 !important; - } - .order-xxl-0 { - order: 0 !important; - } - .order-xxl-1 { - order: 1 !important; - } - .order-xxl-2 { - order: 2 !important; - } - .order-xxl-3 { - order: 3 !important; - } - .order-xxl-4 { - order: 4 !important; - } - .order-xxl-5 { - order: 5 !important; - } - .order-xxl-last { - order: 6 !important; - } - .m-xxl-0 { - margin: 0 !important; - } - .m-xxl-1 { - margin: 0.25rem !important; - } - .m-xxl-2 { - margin: 0.5rem !important; - } - .m-xxl-3 { - margin: 1rem !important; - } - .m-xxl-4 { - margin: 1.5rem !important; - } - .m-xxl-5 { - margin: 3rem !important; - } - .m-xxl-auto { - margin: auto !important; - } - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-xxl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-xxl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-xxl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xxl-0 { - margin-top: 0 !important; - } - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - .mt-xxl-3 { - margin-top: 1rem !important; - } - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - .mt-xxl-5 { - margin-top: 3rem !important; - } - .mt-xxl-auto { - margin-top: auto !important; - } - .me-xxl-0 { - margin-right: 0 !important; - } - .me-xxl-1 { - margin-right: 0.25rem !important; - } - .me-xxl-2 { - margin-right: 0.5rem !important; - } - .me-xxl-3 { - margin-right: 1rem !important; - } - .me-xxl-4 { - margin-right: 1.5rem !important; - } - .me-xxl-5 { - margin-right: 3rem !important; - } - .me-xxl-auto { - margin-right: auto !important; - } - .mb-xxl-0 { - margin-bottom: 0 !important; - } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - .mb-xxl-auto { - margin-bottom: auto !important; - } - .ms-xxl-0 { - margin-left: 0 !important; - } - .ms-xxl-1 { - margin-left: 0.25rem !important; - } - .ms-xxl-2 { - margin-left: 0.5rem !important; - } - .ms-xxl-3 { - margin-left: 1rem !important; - } - .ms-xxl-4 { - margin-left: 1.5rem !important; - } - .ms-xxl-5 { - margin-left: 3rem !important; - } - .ms-xxl-auto { - margin-left: auto !important; - } - .p-xxl-0 { - padding: 0 !important; - } - .p-xxl-1 { - padding: 0.25rem !important; - } - .p-xxl-2 { - padding: 0.5rem !important; - } - .p-xxl-3 { - padding: 1rem !important; - } - .p-xxl-4 { - padding: 1.5rem !important; - } - .p-xxl-5 { - padding: 3rem !important; - } - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-xxl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-xxl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-xxl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xxl-0 { - padding-top: 0 !important; - } - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - .pt-xxl-3 { - padding-top: 1rem !important; - } - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - .pt-xxl-5 { - padding-top: 3rem !important; - } - .pe-xxl-0 { - padding-right: 0 !important; - } - .pe-xxl-1 { - padding-right: 0.25rem !important; - } - .pe-xxl-2 { - padding-right: 0.5rem !important; - } - .pe-xxl-3 { - padding-right: 1rem !important; - } - .pe-xxl-4 { - padding-right: 1.5rem !important; - } - .pe-xxl-5 { - padding-right: 3rem !important; - } - .pb-xxl-0 { - padding-bottom: 0 !important; - } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - .ps-xxl-0 { - padding-left: 0 !important; - } - .ps-xxl-1 { - padding-left: 0.25rem !important; - } - .ps-xxl-2 { - padding-left: 0.5rem !important; - } - .ps-xxl-3 { - padding-left: 1rem !important; - } - .ps-xxl-4 { - padding-left: 1.5rem !important; - } - .ps-xxl-5 { - padding-left: 3rem !important; - } -} -@media print { - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-grid { - display: grid !important; - } - .d-print-inline-grid { - display: inline-grid !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: flex !important; - } - .d-print-inline-flex { - display: inline-flex !important; - } - .d-print-none { - display: none !important; - } -} - -/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-grid.css.map b/site/dist/docs/5.3/dist/css/bootstrap-grid.css.map deleted file mode 100644 index ce99ec1966..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-grid.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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EE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EA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;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,2BAAA;ALsjDZ;;AK7jDQ;EAOI,iCAAA;AL0jDZ;;AKjkDQ;EAOI,gCAAA;AL8jDZ;;AKrkDQ;EAOI,8BAAA;ALkkDZ;;AKzkDQ;EAOI,gCAAA;ALskDZ;;AK7kDQ;EAOI,8BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,0BAAA;ALsmDZ;;AK7mDQ;EAOI,gCAAA;AL0mDZ;;AKjnDQ;EAOI,+BAAA;AL8mDZ;;AKrnDQ;EAOI,6BAAA;ALknDZ;;AKznDQ;EAOI,+BAAA;ALsnDZ;;AK7nDQ;EAOI,6BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA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nEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,0BAAA;IAAA,yBAAA;ELswEV;EK7wEM;IAO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EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;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AAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,0BAAA;ELw9FV;EK/9FM;IAOI,gCAAA;EL29FV;EKl+FM;IAOI,+BAAA;EL89FV;EKr+FM;IAOI,6BAAA;ELi+FV;EKx+FM;IAOI,+BAAA;ELo+FV;EK3+FM;IAOI,6BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/l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ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,2BAAA;ELm4GV;EK14GM;IAOI,iCAAA;ELs4GV;EK74GM;IAOI,gCAAA;ELy4GV;EKh5GM;IAOI,8BAAA;EL44GV;EKn5GM;IAOI,gCAAA;EL+4GV;EKt5GM;IAOI,8BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,0BAAA;ELu6GV;EK96GM;IAOI,gCAAA;EL06GV;EKj7GM;IAOI,+BAAA;EL66GV;EKp7GM;IAOI,6BAAA;ELg7GV;EKv7GM;IAOI,+BAAA;ELm7GV;EK17GM;IAOI,6BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;I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","file":"bootstrap-grid.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n// scss-docs-start vr-variables\n$vr-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end vr-variables\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-color: $body-color !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}emphasis-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;\n\n$table-border-factor: .2 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n$btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}secondary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-icon-color: $navbar-dark-color !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n// fusv-disable\n$accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.3.3\n// fusv-enable\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;\n$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n\n@import \"variables-dark\"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-grid.min.css b/site/dist/docs/5.3/dist/css/bootstrap-grid.min.css deleted file mode 100644 index 49b843b194..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-grid.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-grid.min.css.map b/site/dist/docs/5.3/dist/css/bootstrap-grid.min.css.map deleted file mode 100644 index a0db8b57a8..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-grid.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.css b/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.css deleted file mode 100644 index 1a5d65630b..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.css +++ /dev/null @@ -1,4084 +0,0 @@ -/*! - * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - width: 100%; - padding-left: calc(var(--bs-gutter-x) * 0.5); - padding-right: calc(var(--bs-gutter-x) * 0.5); - margin-left: auto; - margin-right: auto; -} - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; - } -} -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; - } -} -:root { - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; -} - -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--bs-gutter-y)); - margin-left: calc(-0.5 * var(--bs-gutter-x)); - margin-right: calc(-0.5 * var(--bs-gutter-x)); -} -.row > * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-left: calc(var(--bs-gutter-x) * 0.5); - padding-right: calc(var(--bs-gutter-x) * 0.5); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.33333333%; -} - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; -} - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-right: 8.33333333%; -} - -.offset-2 { - margin-right: 16.66666667%; -} - -.offset-3 { - margin-right: 25%; -} - -.offset-4 { - margin-right: 33.33333333%; -} - -.offset-5 { - margin-right: 41.66666667%; -} - -.offset-6 { - margin-right: 50%; -} - -.offset-7 { - margin-right: 58.33333333%; -} - -.offset-8 { - margin-right: 66.66666667%; -} - -.offset-9 { - margin-right: 75%; -} - -.offset-10 { - margin-right: 83.33333333%; -} - -.offset-11 { - margin-right: 91.66666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-sm-0 { - margin-right: 0; - } - .offset-sm-1 { - margin-right: 8.33333333%; - } - .offset-sm-2 { - margin-right: 16.66666667%; - } - .offset-sm-3 { - margin-right: 25%; - } - .offset-sm-4 { - margin-right: 33.33333333%; - } - .offset-sm-5 { - margin-right: 41.66666667%; - } - .offset-sm-6 { - margin-right: 50%; - } - .offset-sm-7 { - margin-right: 58.33333333%; - } - .offset-sm-8 { - margin-right: 66.66666667%; - } - .offset-sm-9 { - margin-right: 75%; - } - .offset-sm-10 { - margin-right: 83.33333333%; - } - .offset-sm-11 { - margin-right: 91.66666667%; - } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; - } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; - } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; - } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; - } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; - } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-md-0 { - margin-right: 0; - } - .offset-md-1 { - margin-right: 8.33333333%; - } - .offset-md-2 { - margin-right: 16.66666667%; - } - .offset-md-3 { - margin-right: 25%; - } - .offset-md-4 { - margin-right: 33.33333333%; - } - .offset-md-5 { - margin-right: 41.66666667%; - } - .offset-md-6 { - margin-right: 50%; - } - .offset-md-7 { - margin-right: 58.33333333%; - } - .offset-md-8 { - margin-right: 66.66666667%; - } - .offset-md-9 { - margin-right: 75%; - } - .offset-md-10 { - margin-right: 83.33333333%; - } - .offset-md-11 { - margin-right: 91.66666667%; - } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; - } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; - } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; - } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; - } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; - } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; - } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; - } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; - } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; - } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; - } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; - } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-lg-0 { - margin-right: 0; - } - .offset-lg-1 { - margin-right: 8.33333333%; - } - .offset-lg-2 { - margin-right: 16.66666667%; - } - .offset-lg-3 { - margin-right: 25%; - } - .offset-lg-4 { - margin-right: 33.33333333%; - } - .offset-lg-5 { - margin-right: 41.66666667%; - } - .offset-lg-6 { - margin-right: 50%; - } - .offset-lg-7 { - margin-right: 58.33333333%; - } - .offset-lg-8 { - margin-right: 66.66666667%; - } - .offset-lg-9 { - margin-right: 75%; - } - .offset-lg-10 { - margin-right: 83.33333333%; - } - .offset-lg-11 { - margin-right: 91.66666667%; - } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; - } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; - } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; - } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; - } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; - } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xl-0 { - margin-right: 0; - } - .offset-xl-1 { - margin-right: 8.33333333%; - } - .offset-xl-2 { - margin-right: 16.66666667%; - } - .offset-xl-3 { - margin-right: 25%; - } - .offset-xl-4 { - margin-right: 33.33333333%; - } - .offset-xl-5 { - margin-right: 41.66666667%; - } - .offset-xl-6 { - margin-right: 50%; - } - .offset-xl-7 { - margin-right: 58.33333333%; - } - .offset-xl-8 { - margin-right: 66.66666667%; - } - .offset-xl-9 { - margin-right: 75%; - } - .offset-xl-10 { - margin-right: 83.33333333%; - } - .offset-xl-11 { - margin-right: 91.66666667%; - } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; - } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; - } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; - } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; - } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; - } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xxl-0 { - margin-right: 0; - } - .offset-xxl-1 { - margin-right: 8.33333333%; - } - .offset-xxl-2 { - margin-right: 16.66666667%; - } - .offset-xxl-3 { - margin-right: 25%; - } - .offset-xxl-4 { - margin-right: 33.33333333%; - } - .offset-xxl-5 { - margin-right: 41.66666667%; - } - .offset-xxl-6 { - margin-right: 50%; - } - .offset-xxl-7 { - margin-right: 58.33333333%; - } - .offset-xxl-8 { - margin-right: 66.66666667%; - } - .offset-xxl-9 { - margin-right: 75%; - } - .offset-xxl-10 { - margin-right: 83.33333333%; - } - .offset-xxl-11 { - margin-right: 91.66666667%; - } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; - } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; - } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; - } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; - } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; - } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: grid !important; -} - -.d-inline-grid { - display: inline-grid !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-none { - display: none !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-left: 0 !important; - margin-right: 0 !important; -} - -.mx-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; -} - -.mx-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; -} - -.mx-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; -} - -.mx-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; -} - -.mx-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; -} - -.mx-auto { - margin-left: auto !important; - margin-right: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-left: 0 !important; -} - -.me-1 { - margin-left: 0.25rem !important; -} - -.me-2 { - margin-left: 0.5rem !important; -} - -.me-3 { - margin-left: 1rem !important; -} - -.me-4 { - margin-left: 1.5rem !important; -} - -.me-5 { - margin-left: 3rem !important; -} - -.me-auto { - margin-left: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-right: 0 !important; -} - -.ms-1 { - margin-right: 0.25rem !important; -} - -.ms-2 { - margin-right: 0.5rem !important; -} - -.ms-3 { - margin-right: 1rem !important; -} - -.ms-4 { - margin-right: 1.5rem !important; -} - -.ms-5 { - margin-right: 3rem !important; -} - -.ms-auto { - margin-right: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-left: 0 !important; - padding-right: 0 !important; -} - -.px-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; -} - -.px-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; -} - -.px-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; -} - -.px-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; -} - -.px-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-left: 0 !important; -} - -.pe-1 { - padding-left: 0.25rem !important; -} - -.pe-2 { - padding-left: 0.5rem !important; -} - -.pe-3 { - padding-left: 1rem !important; -} - -.pe-4 { - padding-left: 1.5rem !important; -} - -.pe-5 { - padding-left: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-right: 0 !important; -} - -.ps-1 { - padding-right: 0.25rem !important; -} - -.ps-2 { - padding-right: 0.5rem !important; -} - -.ps-3 { - padding-right: 1rem !important; -} - -.ps-4 { - padding-right: 1.5rem !important; -} - -.ps-5 { - padding-right: 3rem !important; -} - -@media (min-width: 576px) { - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-grid { - display: grid !important; - } - .d-sm-inline-grid { - display: inline-grid !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: flex !important; - } - .d-sm-inline-flex { - display: inline-flex !important; - } - .d-sm-none { - display: none !important; - } - .flex-sm-fill { - flex: 1 1 auto !important; - } - .flex-sm-row { - flex-direction: row !important; - } - .flex-sm-column { - flex-direction: column !important; - } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - .flex-sm-wrap { - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-sm-start { - justify-content: flex-start !important; - } - .justify-content-sm-end { - justify-content: flex-end !important; - } - .justify-content-sm-center { - justify-content: center !important; - } - .justify-content-sm-between { - justify-content: space-between !important; - } - .justify-content-sm-around { - justify-content: space-around !important; - } - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - .align-items-sm-start { - align-items: flex-start !important; - } - .align-items-sm-end { - align-items: flex-end !important; - } - .align-items-sm-center { - align-items: center !important; - } - .align-items-sm-baseline { - align-items: baseline !important; - } - .align-items-sm-stretch { - align-items: stretch !important; - } - .align-content-sm-start { - align-content: flex-start !important; - } - .align-content-sm-end { - align-content: flex-end !important; - } - .align-content-sm-center { - align-content: center !important; - } - .align-content-sm-between { - align-content: space-between !important; - } - .align-content-sm-around { - align-content: space-around !important; - } - .align-content-sm-stretch { - align-content: stretch !important; - } - .align-self-sm-auto { - align-self: auto !important; - } - .align-self-sm-start { - align-self: flex-start !important; - } - .align-self-sm-end { - align-self: flex-end !important; - } - .align-self-sm-center { - align-self: center !important; - } - .align-self-sm-baseline { - align-self: baseline !important; - } - .align-self-sm-stretch { - align-self: stretch !important; - } - .order-sm-first { - order: -1 !important; - } - .order-sm-0 { - order: 0 !important; - } - .order-sm-1 { - order: 1 !important; - } - .order-sm-2 { - order: 2 !important; - } - .order-sm-3 { - order: 3 !important; - } - .order-sm-4 { - order: 4 !important; - } - .order-sm-5 { - order: 5 !important; - } - .order-sm-last { - order: 6 !important; - } - .m-sm-0 { - margin: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mx-sm-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-sm-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-sm-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-sm-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-sm-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-sm-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-sm-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-sm-0 { - margin-top: 0 !important; - } - .mt-sm-1 { - margin-top: 0.25rem !important; - } - .mt-sm-2 { - margin-top: 0.5rem !important; - } - .mt-sm-3 { - margin-top: 1rem !important; - } - .mt-sm-4 { - margin-top: 1.5rem !important; - } - .mt-sm-5 { - margin-top: 3rem !important; - } - .mt-sm-auto { - margin-top: auto !important; - } - .me-sm-0 { - margin-left: 0 !important; - } - .me-sm-1 { - margin-left: 0.25rem !important; - } - .me-sm-2 { - margin-left: 0.5rem !important; - } - .me-sm-3 { - margin-left: 1rem !important; - } - .me-sm-4 { - margin-left: 1.5rem !important; - } - .me-sm-5 { - margin-left: 3rem !important; - } - .me-sm-auto { - margin-left: auto !important; - } - .mb-sm-0 { - margin-bottom: 0 !important; - } - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - .mb-sm-3 { - margin-bottom: 1rem !important; - } - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - .mb-sm-5 { - margin-bottom: 3rem !important; - } - .mb-sm-auto { - margin-bottom: auto !important; - } - .ms-sm-0 { - margin-right: 0 !important; - } - .ms-sm-1 { - margin-right: 0.25rem !important; - } - .ms-sm-2 { - margin-right: 0.5rem !important; - } - .ms-sm-3 { - margin-right: 1rem !important; - } - .ms-sm-4 { - margin-right: 1.5rem !important; - } - .ms-sm-5 { - margin-right: 3rem !important; - } - .ms-sm-auto { - margin-right: auto !important; - } - .p-sm-0 { - padding: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .px-sm-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-sm-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-sm-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-sm-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-sm-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-sm-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-sm-0 { - padding-top: 0 !important; - } - .pt-sm-1 { - padding-top: 0.25rem !important; - } - .pt-sm-2 { - padding-top: 0.5rem !important; - } - .pt-sm-3 { - padding-top: 1rem !important; - } - .pt-sm-4 { - padding-top: 1.5rem !important; - } - .pt-sm-5 { - padding-top: 3rem !important; - } - .pe-sm-0 { - padding-left: 0 !important; - } - .pe-sm-1 { - padding-left: 0.25rem !important; - } - .pe-sm-2 { - padding-left: 0.5rem !important; - } - .pe-sm-3 { - padding-left: 1rem !important; - } - .pe-sm-4 { - padding-left: 1.5rem !important; - } - .pe-sm-5 { - padding-left: 3rem !important; - } - .pb-sm-0 { - padding-bottom: 0 !important; - } - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - .pb-sm-3 { - padding-bottom: 1rem !important; - } - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - .pb-sm-5 { - padding-bottom: 3rem !important; - } - .ps-sm-0 { - padding-right: 0 !important; - } - .ps-sm-1 { - padding-right: 0.25rem !important; - } - .ps-sm-2 { - padding-right: 0.5rem !important; - } - .ps-sm-3 { - padding-right: 1rem !important; - } - .ps-sm-4 { - padding-right: 1.5rem !important; - } - .ps-sm-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 768px) { - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-grid { - display: grid !important; - } - .d-md-inline-grid { - display: inline-grid !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: flex !important; - } - .d-md-inline-flex { - display: inline-flex !important; - } - .d-md-none { - display: none !important; - } - .flex-md-fill { - flex: 1 1 auto !important; - } - .flex-md-row { - flex-direction: row !important; - } - .flex-md-column { - flex-direction: column !important; - } - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - .flex-md-grow-0 { - flex-grow: 0 !important; - } - .flex-md-grow-1 { - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - .flex-md-wrap { - flex-wrap: wrap !important; - } - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-md-start { - justify-content: flex-start !important; - } - .justify-content-md-end { - justify-content: flex-end !important; - } - .justify-content-md-center { - justify-content: center !important; - } - .justify-content-md-between { - justify-content: space-between !important; - } - .justify-content-md-around { - justify-content: space-around !important; - } - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - .align-items-md-start { - align-items: flex-start !important; - } - .align-items-md-end { - align-items: flex-end !important; - } - .align-items-md-center { - align-items: center !important; - } - .align-items-md-baseline { - align-items: baseline !important; - } - .align-items-md-stretch { - align-items: stretch !important; - } - .align-content-md-start { - align-content: flex-start !important; - } - .align-content-md-end { - align-content: flex-end !important; - } - .align-content-md-center { - align-content: center !important; - } - .align-content-md-between { - align-content: space-between !important; - } - .align-content-md-around { - align-content: space-around !important; - } - .align-content-md-stretch { - align-content: stretch !important; - } - .align-self-md-auto { - align-self: auto !important; - } - .align-self-md-start { - align-self: flex-start !important; - } - .align-self-md-end { - align-self: flex-end !important; - } - .align-self-md-center { - align-self: center !important; - } - .align-self-md-baseline { - align-self: baseline !important; - } - .align-self-md-stretch { - align-self: stretch !important; - } - .order-md-first { - order: -1 !important; - } - .order-md-0 { - order: 0 !important; - } - .order-md-1 { - order: 1 !important; - } - .order-md-2 { - order: 2 !important; - } - .order-md-3 { - order: 3 !important; - } - .order-md-4 { - order: 4 !important; - } - .order-md-5 { - order: 5 !important; - } - .order-md-last { - order: 6 !important; - } - .m-md-0 { - margin: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mx-md-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-md-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-md-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-md-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-md-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-md-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-md-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-md-0 { - margin-top: 0 !important; - } - .mt-md-1 { - margin-top: 0.25rem !important; - } - .mt-md-2 { - margin-top: 0.5rem !important; - } - .mt-md-3 { - margin-top: 1rem !important; - } - .mt-md-4 { - margin-top: 1.5rem !important; - } - .mt-md-5 { - margin-top: 3rem !important; - } - .mt-md-auto { - margin-top: auto !important; - } - .me-md-0 { - margin-left: 0 !important; - } - .me-md-1 { - margin-left: 0.25rem !important; - } - .me-md-2 { - margin-left: 0.5rem !important; - } - .me-md-3 { - margin-left: 1rem !important; - } - .me-md-4 { - margin-left: 1.5rem !important; - } - .me-md-5 { - margin-left: 3rem !important; - } - .me-md-auto { - margin-left: auto !important; - } - .mb-md-0 { - margin-bottom: 0 !important; - } - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - .mb-md-3 { - margin-bottom: 1rem !important; - } - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - .mb-md-5 { - margin-bottom: 3rem !important; - } - .mb-md-auto { - margin-bottom: auto !important; - } - .ms-md-0 { - margin-right: 0 !important; - } - .ms-md-1 { - margin-right: 0.25rem !important; - } - .ms-md-2 { - margin-right: 0.5rem !important; - } - .ms-md-3 { - margin-right: 1rem !important; - } - .ms-md-4 { - margin-right: 1.5rem !important; - } - .ms-md-5 { - margin-right: 3rem !important; - } - .ms-md-auto { - margin-right: auto !important; - } - .p-md-0 { - padding: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .px-md-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-md-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-md-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-md-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-md-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-md-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-md-0 { - padding-top: 0 !important; - } - .pt-md-1 { - padding-top: 0.25rem !important; - } - .pt-md-2 { - padding-top: 0.5rem !important; - } - .pt-md-3 { - padding-top: 1rem !important; - } - .pt-md-4 { - padding-top: 1.5rem !important; - } - .pt-md-5 { - padding-top: 3rem !important; - } - .pe-md-0 { - padding-left: 0 !important; - } - .pe-md-1 { - padding-left: 0.25rem !important; - } - .pe-md-2 { - padding-left: 0.5rem !important; - } - .pe-md-3 { - padding-left: 1rem !important; - } - .pe-md-4 { - padding-left: 1.5rem !important; - } - .pe-md-5 { - padding-left: 3rem !important; - } - .pb-md-0 { - padding-bottom: 0 !important; - } - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - .pb-md-3 { - padding-bottom: 1rem !important; - } - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - .pb-md-5 { - padding-bottom: 3rem !important; - } - .ps-md-0 { - padding-right: 0 !important; - } - .ps-md-1 { - padding-right: 0.25rem !important; - } - .ps-md-2 { - padding-right: 0.5rem !important; - } - .ps-md-3 { - padding-right: 1rem !important; - } - .ps-md-4 { - padding-right: 1.5rem !important; - } - .ps-md-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 992px) { - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-grid { - display: grid !important; - } - .d-lg-inline-grid { - display: inline-grid !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: flex !important; - } - .d-lg-inline-flex { - display: inline-flex !important; - } - .d-lg-none { - display: none !important; - } - .flex-lg-fill { - flex: 1 1 auto !important; - } - .flex-lg-row { - flex-direction: row !important; - } - .flex-lg-column { - flex-direction: column !important; - } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - .flex-lg-wrap { - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-lg-start { - justify-content: flex-start !important; - } - .justify-content-lg-end { - justify-content: flex-end !important; - } - .justify-content-lg-center { - justify-content: center !important; - } - .justify-content-lg-between { - justify-content: space-between !important; - } - .justify-content-lg-around { - justify-content: space-around !important; - } - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - .align-items-lg-start { - align-items: flex-start !important; - } - .align-items-lg-end { - align-items: flex-end !important; - } - .align-items-lg-center { - align-items: center !important; - } - .align-items-lg-baseline { - align-items: baseline !important; - } - .align-items-lg-stretch { - align-items: stretch !important; - } - .align-content-lg-start { - align-content: flex-start !important; - } - .align-content-lg-end { - align-content: flex-end !important; - } - .align-content-lg-center { - align-content: center !important; - } - .align-content-lg-between { - align-content: space-between !important; - } - .align-content-lg-around { - align-content: space-around !important; - } - .align-content-lg-stretch { - align-content: stretch !important; - } - .align-self-lg-auto { - align-self: auto !important; - } - .align-self-lg-start { - align-self: flex-start !important; - } - .align-self-lg-end { - align-self: flex-end !important; - } - .align-self-lg-center { - align-self: center !important; - } - .align-self-lg-baseline { - align-self: baseline !important; - } - .align-self-lg-stretch { - align-self: stretch !important; - } - .order-lg-first { - order: -1 !important; - } - .order-lg-0 { - order: 0 !important; - } - .order-lg-1 { - order: 1 !important; - } - .order-lg-2 { - order: 2 !important; - } - .order-lg-3 { - order: 3 !important; - } - .order-lg-4 { - order: 4 !important; - } - .order-lg-5 { - order: 5 !important; - } - .order-lg-last { - order: 6 !important; - } - .m-lg-0 { - margin: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mx-lg-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-lg-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-lg-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-lg-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-lg-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-lg-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-lg-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-lg-0 { - margin-top: 0 !important; - } - .mt-lg-1 { - margin-top: 0.25rem !important; - } - .mt-lg-2 { - margin-top: 0.5rem !important; - } - .mt-lg-3 { - margin-top: 1rem !important; - } - .mt-lg-4 { - margin-top: 1.5rem !important; - } - .mt-lg-5 { - margin-top: 3rem !important; - } - .mt-lg-auto { - margin-top: auto !important; - } - .me-lg-0 { - margin-left: 0 !important; - } - .me-lg-1 { - margin-left: 0.25rem !important; - } - .me-lg-2 { - margin-left: 0.5rem !important; - } - .me-lg-3 { - margin-left: 1rem !important; - } - .me-lg-4 { - margin-left: 1.5rem !important; - } - .me-lg-5 { - margin-left: 3rem !important; - } - .me-lg-auto { - margin-left: auto !important; - } - .mb-lg-0 { - margin-bottom: 0 !important; - } - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - .mb-lg-3 { - margin-bottom: 1rem !important; - } - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - .mb-lg-5 { - margin-bottom: 3rem !important; - } - .mb-lg-auto { - margin-bottom: auto !important; - } - .ms-lg-0 { - margin-right: 0 !important; - } - .ms-lg-1 { - margin-right: 0.25rem !important; - } - .ms-lg-2 { - margin-right: 0.5rem !important; - } - .ms-lg-3 { - margin-right: 1rem !important; - } - .ms-lg-4 { - margin-right: 1.5rem !important; - } - .ms-lg-5 { - margin-right: 3rem !important; - } - .ms-lg-auto { - margin-right: auto !important; - } - .p-lg-0 { - padding: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .px-lg-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-lg-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-lg-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-lg-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-lg-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-lg-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-lg-0 { - padding-top: 0 !important; - } - .pt-lg-1 { - padding-top: 0.25rem !important; - } - .pt-lg-2 { - padding-top: 0.5rem !important; - } - .pt-lg-3 { - padding-top: 1rem !important; - } - .pt-lg-4 { - padding-top: 1.5rem !important; - } - .pt-lg-5 { - padding-top: 3rem !important; - } - .pe-lg-0 { - padding-left: 0 !important; - } - .pe-lg-1 { - padding-left: 0.25rem !important; - } - .pe-lg-2 { - padding-left: 0.5rem !important; - } - .pe-lg-3 { - padding-left: 1rem !important; - } - .pe-lg-4 { - padding-left: 1.5rem !important; - } - .pe-lg-5 { - padding-left: 3rem !important; - } - .pb-lg-0 { - padding-bottom: 0 !important; - } - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - .pb-lg-3 { - padding-bottom: 1rem !important; - } - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - .pb-lg-5 { - padding-bottom: 3rem !important; - } - .ps-lg-0 { - padding-right: 0 !important; - } - .ps-lg-1 { - padding-right: 0.25rem !important; - } - .ps-lg-2 { - padding-right: 0.5rem !important; - } - .ps-lg-3 { - padding-right: 1rem !important; - } - .ps-lg-4 { - padding-right: 1.5rem !important; - } - .ps-lg-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 1200px) { - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-grid { - display: grid !important; - } - .d-xl-inline-grid { - display: inline-grid !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: flex !important; - } - .d-xl-inline-flex { - display: inline-flex !important; - } - .d-xl-none { - display: none !important; - } - .flex-xl-fill { - flex: 1 1 auto !important; - } - .flex-xl-row { - flex-direction: row !important; - } - .flex-xl-column { - flex-direction: column !important; - } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xl-wrap { - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xl-start { - justify-content: flex-start !important; - } - .justify-content-xl-end { - justify-content: flex-end !important; - } - .justify-content-xl-center { - justify-content: center !important; - } - .justify-content-xl-between { - justify-content: space-between !important; - } - .justify-content-xl-around { - justify-content: space-around !important; - } - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - .align-items-xl-start { - align-items: flex-start !important; - } - .align-items-xl-end { - align-items: flex-end !important; - } - .align-items-xl-center { - align-items: center !important; - } - .align-items-xl-baseline { - align-items: baseline !important; - } - .align-items-xl-stretch { - align-items: stretch !important; - } - .align-content-xl-start { - align-content: flex-start !important; - } - .align-content-xl-end { - align-content: flex-end !important; - } - .align-content-xl-center { - align-content: center !important; - } - .align-content-xl-between { - align-content: space-between !important; - } - .align-content-xl-around { - align-content: space-around !important; - } - .align-content-xl-stretch { - align-content: stretch !important; - } - .align-self-xl-auto { - align-self: auto !important; - } - .align-self-xl-start { - align-self: flex-start !important; - } - .align-self-xl-end { - align-self: flex-end !important; - } - .align-self-xl-center { - align-self: center !important; - } - .align-self-xl-baseline { - align-self: baseline !important; - } - .align-self-xl-stretch { - align-self: stretch !important; - } - .order-xl-first { - order: -1 !important; - } - .order-xl-0 { - order: 0 !important; - } - .order-xl-1 { - order: 1 !important; - } - .order-xl-2 { - order: 2 !important; - } - .order-xl-3 { - order: 3 !important; - } - .order-xl-4 { - order: 4 !important; - } - .order-xl-5 { - order: 5 !important; - } - .order-xl-last { - order: 6 !important; - } - .m-xl-0 { - margin: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mx-xl-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-xl-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-xl-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-xl-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-xl-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-xl-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-xl-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xl-0 { - margin-top: 0 !important; - } - .mt-xl-1 { - margin-top: 0.25rem !important; - } - .mt-xl-2 { - margin-top: 0.5rem !important; - } - .mt-xl-3 { - margin-top: 1rem !important; - } - .mt-xl-4 { - margin-top: 1.5rem !important; - } - .mt-xl-5 { - margin-top: 3rem !important; - } - .mt-xl-auto { - margin-top: auto !important; - } - .me-xl-0 { - margin-left: 0 !important; - } - .me-xl-1 { - margin-left: 0.25rem !important; - } - .me-xl-2 { - margin-left: 0.5rem !important; - } - .me-xl-3 { - margin-left: 1rem !important; - } - .me-xl-4 { - margin-left: 1.5rem !important; - } - .me-xl-5 { - margin-left: 3rem !important; - } - .me-xl-auto { - margin-left: auto !important; - } - .mb-xl-0 { - margin-bottom: 0 !important; - } - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xl-3 { - margin-bottom: 1rem !important; - } - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xl-5 { - margin-bottom: 3rem !important; - } - .mb-xl-auto { - margin-bottom: auto !important; - } - .ms-xl-0 { - margin-right: 0 !important; - } - .ms-xl-1 { - margin-right: 0.25rem !important; - } - .ms-xl-2 { - margin-right: 0.5rem !important; - } - .ms-xl-3 { - margin-right: 1rem !important; - } - .ms-xl-4 { - margin-right: 1.5rem !important; - } - .ms-xl-5 { - margin-right: 3rem !important; - } - .ms-xl-auto { - margin-right: auto !important; - } - .p-xl-0 { - padding: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .px-xl-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-xl-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-xl-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-xl-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-xl-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-xl-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xl-0 { - padding-top: 0 !important; - } - .pt-xl-1 { - padding-top: 0.25rem !important; - } - .pt-xl-2 { - padding-top: 0.5rem !important; - } - .pt-xl-3 { - padding-top: 1rem !important; - } - .pt-xl-4 { - padding-top: 1.5rem !important; - } - .pt-xl-5 { - padding-top: 3rem !important; - } - .pe-xl-0 { - padding-left: 0 !important; - } - .pe-xl-1 { - padding-left: 0.25rem !important; - } - .pe-xl-2 { - padding-left: 0.5rem !important; - } - .pe-xl-3 { - padding-left: 1rem !important; - } - .pe-xl-4 { - padding-left: 1.5rem !important; - } - .pe-xl-5 { - padding-left: 3rem !important; - } - .pb-xl-0 { - padding-bottom: 0 !important; - } - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xl-3 { - padding-bottom: 1rem !important; - } - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xl-5 { - padding-bottom: 3rem !important; - } - .ps-xl-0 { - padding-right: 0 !important; - } - .ps-xl-1 { - padding-right: 0.25rem !important; - } - .ps-xl-2 { - padding-right: 0.5rem !important; - } - .ps-xl-3 { - padding-right: 1rem !important; - } - .ps-xl-4 { - padding-right: 1.5rem !important; - } - .ps-xl-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 1400px) { - .d-xxl-inline { - display: inline !important; - } - .d-xxl-inline-block { - display: inline-block !important; - } - .d-xxl-block { - display: block !important; - } - .d-xxl-grid { - display: grid !important; - } - .d-xxl-inline-grid { - display: inline-grid !important; - } - .d-xxl-table { - display: table !important; - } - .d-xxl-table-row { - display: table-row !important; - } - .d-xxl-table-cell { - display: table-cell !important; - } - .d-xxl-flex { - display: flex !important; - } - .d-xxl-inline-flex { - display: inline-flex !important; - } - .d-xxl-none { - display: none !important; - } - .flex-xxl-fill { - flex: 1 1 auto !important; - } - .flex-xxl-row { - flex-direction: row !important; - } - .flex-xxl-column { - flex-direction: column !important; - } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xxl-start { - justify-content: flex-start !important; - } - .justify-content-xxl-end { - justify-content: flex-end !important; - } - .justify-content-xxl-center { - justify-content: center !important; - } - .justify-content-xxl-between { - justify-content: space-between !important; - } - .justify-content-xxl-around { - justify-content: space-around !important; - } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - .align-items-xxl-start { - align-items: flex-start !important; - } - .align-items-xxl-end { - align-items: flex-end !important; - } - .align-items-xxl-center { - align-items: center !important; - } - .align-items-xxl-baseline { - align-items: baseline !important; - } - .align-items-xxl-stretch { - align-items: stretch !important; - } - .align-content-xxl-start { - align-content: flex-start !important; - } - .align-content-xxl-end { - align-content: flex-end !important; - } - .align-content-xxl-center { - align-content: center !important; - } - .align-content-xxl-between { - align-content: space-between !important; - } - .align-content-xxl-around { - align-content: space-around !important; - } - .align-content-xxl-stretch { - align-content: stretch !important; - } - .align-self-xxl-auto { - align-self: auto !important; - } - .align-self-xxl-start { - align-self: flex-start !important; - } - .align-self-xxl-end { - align-self: flex-end !important; - } - .align-self-xxl-center { - align-self: center !important; - } - .align-self-xxl-baseline { - align-self: baseline !important; - } - .align-self-xxl-stretch { - align-self: stretch !important; - } - .order-xxl-first { - order: -1 !important; - } - .order-xxl-0 { - order: 0 !important; - } - .order-xxl-1 { - order: 1 !important; - } - .order-xxl-2 { - order: 2 !important; - } - .order-xxl-3 { - order: 3 !important; - } - .order-xxl-4 { - order: 4 !important; - } - .order-xxl-5 { - order: 5 !important; - } - .order-xxl-last { - order: 6 !important; - } - .m-xxl-0 { - margin: 0 !important; - } - .m-xxl-1 { - margin: 0.25rem !important; - } - .m-xxl-2 { - margin: 0.5rem !important; - } - .m-xxl-3 { - margin: 1rem !important; - } - .m-xxl-4 { - margin: 1.5rem !important; - } - .m-xxl-5 { - margin: 3rem !important; - } - .m-xxl-auto { - margin: auto !important; - } - .mx-xxl-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-xxl-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-xxl-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-xxl-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-xxl-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-xxl-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-xxl-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xxl-0 { - margin-top: 0 !important; - } - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - .mt-xxl-3 { - margin-top: 1rem !important; - } - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - .mt-xxl-5 { - margin-top: 3rem !important; - } - .mt-xxl-auto { - margin-top: auto !important; - } - .me-xxl-0 { - margin-left: 0 !important; - } - .me-xxl-1 { - margin-left: 0.25rem !important; - } - .me-xxl-2 { - margin-left: 0.5rem !important; - } - .me-xxl-3 { - margin-left: 1rem !important; - } - .me-xxl-4 { - margin-left: 1.5rem !important; - } - .me-xxl-5 { - margin-left: 3rem !important; - } - .me-xxl-auto { - margin-left: auto !important; - } - .mb-xxl-0 { - margin-bottom: 0 !important; - } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - .mb-xxl-auto { - margin-bottom: auto !important; - } - .ms-xxl-0 { - margin-right: 0 !important; - } - .ms-xxl-1 { - margin-right: 0.25rem !important; - } - .ms-xxl-2 { - margin-right: 0.5rem !important; - } - .ms-xxl-3 { - margin-right: 1rem !important; - } - .ms-xxl-4 { - margin-right: 1.5rem !important; - } - .ms-xxl-5 { - margin-right: 3rem !important; - } - .ms-xxl-auto { - margin-right: auto !important; - } - .p-xxl-0 { - padding: 0 !important; - } - .p-xxl-1 { - padding: 0.25rem !important; - } - .p-xxl-2 { - padding: 0.5rem !important; - } - .p-xxl-3 { - padding: 1rem !important; - } - .p-xxl-4 { - padding: 1.5rem !important; - } - .p-xxl-5 { - padding: 3rem !important; - } - .px-xxl-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-xxl-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-xxl-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-xxl-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-xxl-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-xxl-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xxl-0 { - padding-top: 0 !important; - } - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - .pt-xxl-3 { - padding-top: 1rem !important; - } - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - .pt-xxl-5 { - padding-top: 3rem !important; - } - .pe-xxl-0 { - padding-left: 0 !important; - } - .pe-xxl-1 { - padding-left: 0.25rem !important; - } - .pe-xxl-2 { - padding-left: 0.5rem !important; - } - .pe-xxl-3 { - padding-left: 1rem !important; - } - .pe-xxl-4 { - padding-left: 1.5rem !important; - } - .pe-xxl-5 { - padding-left: 3rem !important; - } - .pb-xxl-0 { - padding-bottom: 0 !important; - } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - .ps-xxl-0 { - padding-right: 0 !important; - } - .ps-xxl-1 { - padding-right: 0.25rem !important; - } - .ps-xxl-2 { - padding-right: 0.5rem !important; - } - .ps-xxl-3 { - padding-right: 1rem !important; - } - .ps-xxl-4 { - padding-right: 1.5rem !important; - } - .ps-xxl-5 { - padding-right: 3rem !important; - } -} -@media print { - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-grid { - display: grid !important; - } - .d-print-inline-grid { - display: inline-grid !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: flex !important; - } - .d-print-inline-flex { - display: inline-flex !important; - } - .d-print-none { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap-grid.rtl.css.map */ \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.css.map b/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.css.map deleted file mode 100644 index 8df43cfcc3..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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EE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EA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;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,0BAAA;ALsjDZ;;AK7jDQ;EAOI,gCAAA;AL0jDZ;;AKjkDQ;EAOI,+BAAA;AL8jDZ;;AKrkDQ;EAOI,6BAAA;ALkkDZ;;AKzkDQ;EAOI,+BAAA;ALskDZ;;AK7kDQ;EAOI,6BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,2BAAA;ALsmDZ;;AK7mDQ;EAOI,iCAAA;AL0mDZ;;AKjnDQ;EAOI,gCAAA;AL8mDZ;;AKrnDQ;EAOI,8BAAA;ALknDZ;;AKznDQ;EAOI,gCAAA;ALsnDZ;;AK7nDQ;EAOI,8BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA;ELgtDV;EKvtDM;IAOI,wCAAA;ELmtDV;EK1tDM;IAOI,kCAAA;ELstDV;EK7tDM;IAOI,gCAAA;ELytDV;EKhuDM;IAOI,8BAAA;EL4tDV;EKnuDM;IAOI,gCAAA;EL+tDV;EKtuDM;IAOI,+BAAA;ELkuDV;EKzuDM;IAOI,oCAAA;ELquDV;EK5uDM;IAOI,kCAAA;ELwuDV;EK/uDM;IAOI,gCAAA;EL2uDV;EKlvDM;IAOI,uCAAA;EL8uDV;EKrvDM;IAOI,sCAAA;ELivDV;EKxvDM;IAOI,iCAAA;ELovDV;EK3vDM;IAOI,2BAAA;ELuvDV;EK9vDM;IAOI,iCAAA;EL0vDV;EKjwDM;IAOI,+BAAA;EL6vDV;EKpwDM;IAOI,6BAAA;ELgwDV;EKvwDM;IAOI,+BAAA;ELmwDV;EK1wDM;IAOI,8BAAA;ELswDV;EK7wDM;IAOI,oBAAA;ELywDV;EKhxDM;IAOI,mBAAA;EL4wDV;EKnxDM;IAOI,mBAAA;EL+wDV;EKtxDM;IAOI,mBAAA;ELkxDV;EKzxDM;IAOI,mBAAA;ELqxDV;EK5xDM;IAOI,mBAAA;ELwxDV;EK/xDM;IAOI,mBAAA;EL2xDV;EKlyDM;IAOI,mBAAA;EL8xDV;EKryDM;IAOI,oBAAA;ELiyDV;EKxyDM;IAOI,0BAAA;ELoyDV;EK3yDM;IAOI,yBAAA;ELuyDV;EK9yDM;IAOI,uBAAA;EL0yDV;EKjzDM;IAOI,yBAAA;EL6yDV;EKpzDM;IAOI,uBAAA;ELgzDV;EKvzDM;IAOI,uBAAA;ELmzDV;EK1zDM;IAOI,yBAAA;IAAA,0BAAA;ELuzDV;EK9zDM;IAOI,+BAAA;IAAA,gCAAA;EL2zDV;EKl0DM;IAOI,8BAAA;IAAA,+BAAA;EL+zDV;EKt0DM;IAOI,4BAAA;IAAA,6BAAA;ELm0DV;EK10DM;IAOI,8BAAA;IAAA,+BAAA;ELu0DV;EK90DM;IAOI,4BAAA;IAAA,6BAAA;EL20DV;EKl1DM;IAOI,4BAAA;IAAA,6BAAA;EL+0DV;EKt1DM;IAOI,wBAAA;IAAA,2BAAA;ELm1DV;EK11DM;IAOI,8BAAA;IAAA,iCAAA;ELu1DV;EK91DM;IAOI,6BAAA;IAAA,gCAAA;EL21DV;EKl2DM;IAOI,2BAAA;IAAA,8BAAA;EL+1DV;EKt2DM;IAOI,6BAAA;IAAA,gCAAA;ELm2DV;EK12DM;IAOI,2BAAA;IAAA,8BAAA;ELu2DV;EK92DM;IAOI,2BAAA;IAAA,8BAAA;EL22DV;EKl3DM;IAOI,wBAAA;EL82DV;EKr3DM;IAOI,8BAAA;ELi3DV;EKx3DM;IAOI,6BAAA;ELo3DV;EK33DM;IAOI,2BAAA;ELu3DV;EK93DM;IAOI,6BAAA;EL03DV;EKj4DM;IAOI,2BAAA;EL63DV;EKp4DM;IAOI,2BAAA;ELg4DV;EKv4DM;IAOI,yBAAA;ELm4DV;EK14DM;IAOI,+BAAA;ELs4DV;EK74DM;IAOI,8BAAA;ELy4DV;EKh5DM;IAOI,4BAAA;EL44DV;EKn5DM;IAOI,8BAAA;EL+4DV;EKt5DM;IAOI,4BAAA;ELk5DV;EKz5DM;IAOI,4BAAA;ELq5DV;EK55DM;IAOI,2BAAA;ELw5DV;EK/5DM;IAOI,iCAAA;EL25DV;EKl6DM;IAOI,gCAAA;EL85DV;EKr6DM;IAOI,8BAAA;ELi6DV;EKx6DM;IAOI,gCAAA;ELo6DV;EK36DM;IAOI,8BAAA;ELu6DV;EK96DM;IAOI,8BAAA;EL06DV;EKj7DM;IAOI,0BAAA;EL66DV;EKp7DM;IAOI,gCAAA;ELg7DV;EKv7DM;IAOI,+BAAA;ELm7DV;EK17DM;IAOI,6BAAA;ELs7DV;EK77DM;IAOI,+BAAA;ELy7DV;EKh8DM;IAOI,6BAAA;EL47DV;EKn8DM;IAOI,6BAAA;EL+7DV;EKt8DM;IAOI,qBAAA;ELk8DV;EKz8DM;IAOI,2BAAA;ELq8DV;EK58DM;IAOI,0BAAA;ELw8DV;EK/8DM;IAOI,wBAAA;EL28DV;EKl9DM;IAOI,0BAAA;EL88DV;EKr9DM;IAOI,wBAAA;ELi9DV;EKx9DM;IAOI,0BAAA;IAAA,2BAAA;ELq9DV;EK59DM;IAOI,gCAAA;IAAA,iCAAA;ELy9DV;EKh+DM;IAOI,+BAAA;IAAA,gCAAA;EL69DV;EKp+DM;IAOI,6BAAA;IAAA,8BAAA;ELi+DV;EKx+DM;IAOI,+BAAA;IAAA,gCAAA;ELq+DV;EK5+DM;IAOI,6BAAA;IAAA,8BAAA;ELy+DV;EKh/DM;IAOI,yBAAA;IAAA,4BAAA;EL6+DV;EKp/DM;IAOI,+BAAA;IAAA,kCAAA;ELi/DV;EKx/DM;IAOI,8BAAA;IAAA,iCAAA;ELq/DV;EK5/DM;IAOI,4BAAA;IAAA,+BAAA;ELy/DV;EKhgEM;IAOI,8BAAA;IAAA,iCAAA;EL6/DV;EKpgEM;IAOI,4BAAA;IAAA,+BAAA;ELigEV;EKxgEM;IAOI,yBAAA;ELogEV;EK3gEM;IAOI,+BAAA;ELugEV;EK9gEM;IAOI,8BAAA;EL0gEV;EKjhEM;IAOI,4BAAA;EL6gEV;EKphEM;IAOI,8BAAA;ELghEV;EKvhEM;IAOI,4BAAA;ELmhEV;EK1hEM;IAOI,0BAAA;ELshEV;EK7hEM;IAOI,gCAAA;ELyhEV;EKhiEM;IAOI,+BAAA;EL4hEV;EKniEM;IAOI,6BAAA;EL+hEV;EKtiEM;IAOI,+BAAA;ELkiEV;EKziEM;IAOI,6BAAA;ELqiEV;EK5iEM;IAOI,4BAAA;ELwiEV;EK/iEM;IAOI,kCAAA;EL2iEV;EKljEM;IAOI,iCAAA;EL8iEV;EKrjEM;IAOI,+BAAA;ELijEV;EKxjEM;IAOI,iCAAA;ELojEV;EK3jEM;IAOI,+BAAA;ELujEV;EK9jEM;IAOI,2BAAA;EL0jEV;EKjkEM;IAOI,iCAAA;EL6jEV;EKpkEM;IAOI,gCAAA;ELgkEV;EKvkEM;IAOI,8BAAA;ELmkEV;EK1kEM;IAOI,gCAAA;ELskEV;EK7kEM;IAOI,8BAAA;ELykEV;AACF;ACplEI;EIGI;IAOI,0BAAA;EL8kEV;EKrlEM;IAOI,gCAAA;ELilEV;EKxlEM;IAOI,yBAAA;ELolEV;EK3lEM;IAOI,wBAAA;ELulEV;EK9lEM;IAOI,+BAAA;EL0lEV;EKjmEM;IAOI,yBAAA;EL6lEV;EKpmEM;IAOI,6BAAA;ELgmEV;EKvmEM;IAOI,8BAAA;ELmmEV;EK1mEM;IAOI,wBAAA;ELsmEV;EK7mEM;IAOI,+BAAA;ELymEV;EKhnEM;IAOI,wBAAA;EL4mEV;EKnnEM;IAOI,yBAAA;EL+mEV;EKtnEM;IAOI,8BAAA;ELknEV;EKznEM;IAOI,iCAAA;ELqnEV;EK5nEM;IAOI,sCAAA;ELwnEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,yBAAA;IAAA,0BAAA;ELswEV;EK7wEM;IAO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EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;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AAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,2BAAA;ELw9FV;EK/9FM;IAOI,iCAAA;EL29FV;EKl+FM;IAOI,gCAAA;EL89FV;EKr+FM;IAOI,8BAAA;ELi+FV;EKx+FM;IAOI,gCAAA;ELo+FV;EK3+FM;IAOI,8BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/l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ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,0BAAA;ELm4GV;EK14GM;IAOI,gCAAA;ELs4GV;EK74GM;IAOI,+BAAA;ELy4GV;EKh5GM;IAOI,6BAAA;EL44GV;EKn5GM;IAOI,+BAAA;EL+4GV;EKt5GM;IAOI,6BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,2BAAA;ELu6GV;EK96GM;IAOI,iCAAA;EL06GV;EKj7GM;IAOI,gCAAA;EL66GV;EKp7GM;IAOI,8BAAA;ELg7GV;EKv7GM;IAOI,gCAAA;ELm7GV;EK17GM;IAOI,8BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;I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","file":"bootstrap-grid.rtl.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n// scss-docs-start vr-variables\n$vr-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end vr-variables\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-color: $body-color !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}emphasis-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;\n\n$table-border-factor: .2 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n$btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}secondary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-icon-color: $navbar-dark-color !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n// fusv-disable\n$accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.3.3\n// fusv-enable\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;\n$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n\n@import \"variables-dark\"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.min.css b/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.min.css deleted file mode 100644 index 672cbc2e62..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-left:calc(-.5 * var(--bs-gutter-x));margin-right:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */ \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.min.css.map b/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.min.css.map deleted file mode 100644 index 1c926af57e..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-grid.rtl.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.rtl.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.33333333%;\n}\n\n.offset-2 {\n margin-right: 16.66666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.33333333%;\n}\n\n.offset-5 {\n margin-right: 41.66666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.33333333%;\n}\n\n.offset-8 {\n margin-right: 66.66666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.33333333%;\n}\n\n.offset-11 {\n margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.33333333%;\n }\n .offset-sm-2 {\n margin-right: 16.66666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.33333333%;\n }\n .offset-sm-5 {\n margin-right: 41.66666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.33333333%;\n }\n .offset-sm-8 {\n margin-right: 66.66666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.33333333%;\n }\n .offset-sm-11 {\n margin-right: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.33333333%;\n }\n .offset-md-2 {\n margin-right: 16.66666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.33333333%;\n }\n .offset-md-5 {\n margin-right: 41.66666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.33333333%;\n }\n .offset-md-8 {\n margin-right: 66.66666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.33333333%;\n }\n .offset-md-11 {\n margin-right: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.33333333%;\n }\n .offset-lg-2 {\n margin-right: 16.66666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.33333333%;\n }\n .offset-lg-5 {\n margin-right: 41.66666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.33333333%;\n }\n .offset-lg-8 {\n margin-right: 66.66666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.33333333%;\n }\n .offset-lg-11 {\n margin-right: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xl-11 {\n margin-right: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-right: 0;\n }\n .offset-xxl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-right: 25%;\n }\n .offset-xxl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-right: 50%;\n }\n .offset-xxl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-right: 75%;\n }\n .offset-xxl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-right: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-left: 0 !important;\n }\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n .me-sm-auto {\n margin-left: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n .ms-sm-auto {\n margin-right: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-left: 0 !important;\n }\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n .me-md-3 {\n margin-left: 1rem !important;\n }\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n .me-md-5 {\n margin-left: 3rem !important;\n }\n .me-md-auto {\n margin-left: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-right: 0 !important;\n }\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n .ms-md-auto {\n margin-right: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-left: 0 !important;\n }\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-right: 0 !important;\n }\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-left: 0 !important;\n }\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n .me-lg-auto {\n margin-left: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n .ms-lg-auto {\n margin-right: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-left: 0 !important;\n }\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n .me-xl-auto {\n margin-left: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n .ms-xl-auto {\n margin-right: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n .me-xxl-auto {\n margin-left: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-reboot.css b/site/dist/docs/5.3/dist/css/bootstrap-reboot.css deleted file mode 100644 index 6305410923..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-reboot.css +++ /dev/null @@ -1,597 +0,0 @@ -/*! - * Bootstrap Reboot v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -:root, -[data-bs-theme=light] { - --bs-blue: #0d6efd; - --bs-indigo: #6610f2; - --bs-purple: #6f42c1; - --bs-pink: #d63384; - --bs-red: #dc3545; - --bs-orange: #fd7e14; - --bs-yellow: #ffc107; - --bs-green: #198754; - --bs-teal: #20c997; - --bs-cyan: #0dcaf0; - --bs-black: #000; - --bs-white: #fff; - --bs-gray: #6c757d; - --bs-gray-dark: #343a40; - --bs-gray-100: #f8f9fa; - --bs-gray-200: #e9ecef; - --bs-gray-300: #dee2e6; - --bs-gray-400: #ced4da; - --bs-gray-500: #adb5bd; - --bs-gray-600: #6c757d; - --bs-gray-700: #495057; - --bs-gray-800: #343a40; - --bs-gray-900: #212529; - --bs-primary: #0d6efd; - --bs-secondary: #6c757d; - --bs-success: #198754; - --bs-info: #0dcaf0; - --bs-warning: #ffc107; - --bs-danger: #dc3545; - --bs-light: #f8f9fa; - --bs-dark: #212529; - --bs-primary-rgb: 13, 110, 253; - --bs-secondary-rgb: 108, 117, 125; - --bs-success-rgb: 25, 135, 84; - --bs-info-rgb: 13, 202, 240; - --bs-warning-rgb: 255, 193, 7; - --bs-danger-rgb: 220, 53, 69; - --bs-light-rgb: 248, 249, 250; - --bs-dark-rgb: 33, 37, 41; - --bs-primary-text-emphasis: #052c65; - --bs-secondary-text-emphasis: #2b2f32; - --bs-success-text-emphasis: #0a3622; - --bs-info-text-emphasis: #055160; - --bs-warning-text-emphasis: #664d03; - --bs-danger-text-emphasis: #58151c; - --bs-light-text-emphasis: #495057; - --bs-dark-text-emphasis: #495057; - --bs-primary-bg-subtle: #cfe2ff; - --bs-secondary-bg-subtle: #e2e3e5; - --bs-success-bg-subtle: #d1e7dd; - --bs-info-bg-subtle: #cff4fc; - --bs-warning-bg-subtle: #fff3cd; - --bs-danger-bg-subtle: #f8d7da; - --bs-light-bg-subtle: #fcfcfd; - --bs-dark-bg-subtle: #ced4da; - --bs-primary-border-subtle: #9ec5fe; - --bs-secondary-border-subtle: #c4c8cb; - --bs-success-border-subtle: #a3cfbb; - --bs-info-border-subtle: #9eeaf9; - --bs-warning-border-subtle: #ffe69c; - --bs-danger-border-subtle: #f1aeb5; - --bs-light-border-subtle: #e9ecef; - --bs-dark-border-subtle: #adb5bd; - --bs-white-rgb: 255, 255, 255; - --bs-black-rgb: 0, 0, 0; - --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --bs-body-font-family: var(--bs-font-sans-serif); - --bs-body-font-size: 1rem; - --bs-body-font-weight: 400; - --bs-body-line-height: 1.5; - --bs-body-color: #212529; - --bs-body-color-rgb: 33, 37, 41; - --bs-body-bg: #fff; - --bs-body-bg-rgb: 255, 255, 255; - --bs-emphasis-color: #000; - --bs-emphasis-color-rgb: 0, 0, 0; - --bs-secondary-color: rgba(33, 37, 41, 0.75); - --bs-secondary-color-rgb: 33, 37, 41; - --bs-secondary-bg: #e9ecef; - --bs-secondary-bg-rgb: 233, 236, 239; - --bs-tertiary-color: rgba(33, 37, 41, 0.5); - --bs-tertiary-color-rgb: 33, 37, 41; - --bs-tertiary-bg: #f8f9fa; - --bs-tertiary-bg-rgb: 248, 249, 250; - --bs-heading-color: inherit; - --bs-link-color: #0d6efd; - --bs-link-color-rgb: 13, 110, 253; - --bs-link-decoration: underline; - --bs-link-hover-color: #0a58ca; - --bs-link-hover-color-rgb: 10, 88, 202; - --bs-code-color: #d63384; - --bs-highlight-color: #212529; - --bs-highlight-bg: #fff3cd; - --bs-border-width: 1px; - --bs-border-style: solid; - --bs-border-color: #dee2e6; - --bs-border-color-translucent: rgba(0, 0, 0, 0.175); - --bs-border-radius: 0.375rem; - --bs-border-radius-sm: 0.25rem; - --bs-border-radius-lg: 0.5rem; - --bs-border-radius-xl: 1rem; - --bs-border-radius-xxl: 2rem; - --bs-border-radius-2xl: var(--bs-border-radius-xxl); - --bs-border-radius-pill: 50rem; - --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); - --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); - --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); - --bs-focus-ring-width: 0.25rem; - --bs-focus-ring-opacity: 0.25; - --bs-focus-ring-color: rgba(13, 110, 253, 0.25); - --bs-form-valid-color: #198754; - --bs-form-valid-border-color: #198754; - --bs-form-invalid-color: #dc3545; - --bs-form-invalid-border-color: #dc3545; -} - -[data-bs-theme=dark] { - color-scheme: dark; - --bs-body-color: #dee2e6; - --bs-body-color-rgb: 222, 226, 230; - --bs-body-bg: #212529; - --bs-body-bg-rgb: 33, 37, 41; - --bs-emphasis-color: #fff; - --bs-emphasis-color-rgb: 255, 255, 255; - --bs-secondary-color: rgba(222, 226, 230, 0.75); - --bs-secondary-color-rgb: 222, 226, 230; - --bs-secondary-bg: #343a40; - --bs-secondary-bg-rgb: 52, 58, 64; - --bs-tertiary-color: rgba(222, 226, 230, 0.5); - --bs-tertiary-color-rgb: 222, 226, 230; - --bs-tertiary-bg: #2b3035; - --bs-tertiary-bg-rgb: 43, 48, 53; - --bs-primary-text-emphasis: #6ea8fe; - --bs-secondary-text-emphasis: #a7acb1; - --bs-success-text-emphasis: #75b798; - --bs-info-text-emphasis: #6edff6; - --bs-warning-text-emphasis: #ffda6a; - --bs-danger-text-emphasis: #ea868f; - --bs-light-text-emphasis: #f8f9fa; - --bs-dark-text-emphasis: #dee2e6; - --bs-primary-bg-subtle: #031633; - --bs-secondary-bg-subtle: #161719; - --bs-success-bg-subtle: #051b11; - --bs-info-bg-subtle: #032830; - --bs-warning-bg-subtle: #332701; - --bs-danger-bg-subtle: #2c0b0e; - --bs-light-bg-subtle: #343a40; - --bs-dark-bg-subtle: #1a1d20; - --bs-primary-border-subtle: #084298; - --bs-secondary-border-subtle: #41464b; - --bs-success-border-subtle: #0f5132; - --bs-info-border-subtle: #087990; - --bs-warning-border-subtle: #997404; - --bs-danger-border-subtle: #842029; - --bs-light-border-subtle: #495057; - --bs-dark-border-subtle: #343a40; - --bs-heading-color: inherit; - --bs-link-color: #6ea8fe; - --bs-link-hover-color: #8bb9fe; - --bs-link-color-rgb: 110, 168, 254; - --bs-link-hover-color-rgb: 139, 185, 254; - --bs-code-color: #e685b5; - --bs-highlight-color: #dee2e6; - --bs-highlight-bg: #664d03; - --bs-border-color: #495057; - --bs-border-color-translucent: rgba(255, 255, 255, 0.15); - --bs-form-valid-color: #75b798; - --bs-form-valid-border-color: #75b798; - --bs-form-invalid-color: #ea868f; - --bs-form-invalid-border-color: #ea868f; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -@media (prefers-reduced-motion: no-preference) { - :root { - scroll-behavior: smooth; - } -} - -body { - margin: 0; - font-family: var(--bs-body-font-family); - font-size: var(--bs-body-font-size); - font-weight: var(--bs-body-font-weight); - line-height: var(--bs-body-line-height); - color: var(--bs-body-color); - text-align: var(--bs-body-text-align); - background-color: var(--bs-body-bg); - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -hr { - margin: 1rem 0; - color: inherit; - border: 0; - border-top: var(--bs-border-width) solid; - opacity: 0.25; -} - -h6, h5, h4, h3, h2, h1 { - margin-top: 0; - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; - color: var(--bs-heading-color); -} - -h1 { - font-size: calc(1.375rem + 1.5vw); -} -@media (min-width: 1200px) { - h1 { - font-size: 2.5rem; - } -} - -h2 { - font-size: calc(1.325rem + 0.9vw); -} -@media (min-width: 1200px) { - h2 { - font-size: 2rem; - } -} - -h3 { - font-size: calc(1.3rem + 0.6vw); -} -@media (min-width: 1200px) { - h3 { - font-size: 1.75rem; - } -} - -h4 { - font-size: calc(1.275rem + 0.3vw); -} -@media (min-width: 1200px) { - h4 { - font-size: 1.5rem; - } -} - -h5 { - font-size: 1.25rem; -} - -h6 { - font-size: 1rem; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -abbr[title] { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - cursor: help; - -webkit-text-decoration-skip-ink: none; - text-decoration-skip-ink: none; -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; -} - -ol, -ul { - padding-left: 2rem; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 700; -} - -dd { - margin-bottom: 0.5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small { - font-size: 0.875em; -} - -mark { - padding: 0.1875em; - color: var(--bs-highlight-color); - background-color: var(--bs-highlight-bg); -} - -sub, -sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -a { - color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); - text-decoration: underline; -} -a:hover { - --bs-link-color-rgb: var(--bs-link-hover-color-rgb); -} - -a:not([href]):not([class]), a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none; -} - -pre, -code, -kbd, -samp { - font-family: var(--bs-font-monospace); - font-size: 1em; -} - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 0.875em; -} -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -code { - font-size: 0.875em; - color: var(--bs-code-color); - word-wrap: break-word; -} -a > code { - color: inherit; -} - -kbd { - padding: 0.1875rem 0.375rem; - font-size: 0.875em; - color: var(--bs-body-bg); - background-color: var(--bs-body-color); - border-radius: 0.25rem; -} -kbd kbd { - padding: 0; - font-size: 1em; -} - -figure { - margin: 0 0 1rem; -} - -img, -svg { - vertical-align: middle; -} - -table { - caption-side: bottom; - border-collapse: collapse; -} - -caption { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: var(--bs-secondary-color); - text-align: left; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -label { - display: inline-block; -} - -button { - border-radius: 0; -} - -button:focus:not(:focus-visible) { - outline: 0; -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -select { - text-transform: none; -} - -[role=button] { - cursor: pointer; -} - -select { - word-wrap: normal; -} -select:disabled { - opacity: 1; -} - -[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { - display: none !important; -} - -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} -button:not(:disabled), -[type=button]:not(:disabled), -[type=reset]:not(:disabled), -[type=submit]:not(:disabled) { - cursor: pointer; -} - -::-moz-focus-inner { - padding: 0; - border-style: none; -} - -textarea { - resize: vertical; -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} - -legend { - float: left; - width: 100%; - padding: 0; - margin-bottom: 0.5rem; - font-size: calc(1.275rem + 0.3vw); - line-height: inherit; -} -@media (min-width: 1200px) { - legend { - font-size: 1.5rem; - } -} -legend + * { - clear: left; -} - -::-webkit-datetime-edit-fields-wrapper, -::-webkit-datetime-edit-text, -::-webkit-datetime-edit-minute, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-year-field { - padding: 0; -} - -::-webkit-inner-spin-button { - height: auto; -} - -[type=search] { - -webkit-appearance: textfield; - outline-offset: -2px; -} - -/* rtl:raw: -[type="tel"], -[type="url"], -[type="email"], -[type="number"] { - direction: ltr; -} -*/ -::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-color-swatch-wrapper { - padding: 0; -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} - -::file-selector-button { - font: inherit; - -webkit-appearance: button; -} - -output { - display: inline-block; -} - -iframe { - border: 0; -} - -summary { - display: list-item; - cursor: pointer; -} - -progress { - vertical-align: baseline; -} - -[hidden] { - display: none !important; -} - -/*# sourceMappingURL=bootstrap-reboot.css.map */ \ No newline at end of file diff --git a/site/dist/docs/5.3/dist/css/bootstrap-reboot.css.map b/site/dist/docs/5.3/dist/css/bootstrap-reboot.css.map deleted file mode 100644 index 5fe522b6d7..0000000000 --- a/site/dist/docs/5.3/dist/css/bootstrap-reboot.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, h5, h4, h3, h2, h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1 {\n font-size: 2.5rem;\n }\n}\n\nh2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2 {\n font-size: 2rem;\n }\n}\n\nh3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3 {\n font-size: 1.75rem;\n }\n}\n\nh4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4 {\n font-size: 1.5rem;\n }\n}\n\nh5 {\n font-size: 1.25rem;\n}\n\nh6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 0.875em;\n}\n\nmark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` Bootstrap

Bootstrap

Docs reference

Examples of Bootstrap's documentation-specific components and styles.

On this page

Buttons

- - - -

Callouts

-

Default callout

-

Warning callout

-

Danger callout

-

Code example

-
.test {
-  --color: blue;
-}
-
-

The HTML abbreviation element.

-
This is a test.
html
<div class="test">This is a test.</div>
-
$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0));
-
-
  const toastTrigger = document.getElementById('liveToastBtn')
-  const toastLiveExample = document.getElementById('liveToast')
-
-  if (toastTrigger) {
-    const toastBootstrap = bootstrap.Toast.getOrCreateInstance(toastLiveExample)
-    toastTrigger.addEventListener('click', () => {
-      toastBootstrap.show()
-    })
-  }
-  
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/album-rtl/index.html b/site/dist/docs/5.3/examples/album-rtl/index.html deleted file mode 100644 index b7e63f2e1f..0000000000 --- a/site/dist/docs/5.3/examples/album-rtl/index.html +++ /dev/null @@ -1,8 +0,0 @@ - مثال الألبوم · Bootstrap v5.3

مثال الألبوم

وصف قصير حول الألبوم أدناه (محتوياته ، ومنشؤه ، وما إلى ذلك). اجعله قصير ولطيف، ولكن ليست قصير جدًا حتى لا يتخطى الناس هذا الألبوم تمامًا.

الدعوة الرئيسية للعمل عمل ثانوي

Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
Placeholderصورة مصغرة

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

9 دقائق
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/album/index.html b/site/dist/docs/5.3/examples/album/index.html deleted file mode 100644 index 1320d9cdd3..0000000000 --- a/site/dist/docs/5.3/examples/album/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Album example · Bootstrap v5.3

Album example

Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don’t simply skip over it entirely.

Main call to action Secondary action

PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
PlaceholderThumbnail

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

9 mins
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/badges/badges.css b/site/dist/docs/5.3/examples/badges/badges.css deleted file mode 100644 index b6ce0f5b82..0000000000 --- a/site/dist/docs/5.3/examples/badges/badges.css +++ /dev/null @@ -1,3 +0,0 @@ -.badge > a { - color: inherit; -} diff --git a/site/dist/docs/5.3/examples/badges/index.html b/site/dist/docs/5.3/examples/badges/index.html deleted file mode 100644 index 6ad88df378..0000000000 --- a/site/dist/docs/5.3/examples/badges/index.html +++ /dev/null @@ -1,32 +0,0 @@ - Badges · Bootstrap v5.3
Primary Secondary Success Danger Warning Info Light Dark
Primary Secondary Success Danger Warning Info Light Dark
Primary Secondary Success Danger Warning Info Light Dark
Primary - Secondary - Success - Danger - Warning - Info - Light - Dark -
Primary 1 Primary 2 Primary 3
-Primary - -Secondary - -Success - -Danger - -Warning - -Info - -Light - -Dark -
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/blog-rtl/index.html b/site/dist/docs/5.3/examples/blog-rtl/index.html deleted file mode 100644 index fda1cea652..0000000000 --- a/site/dist/docs/5.3/examples/blog-rtl/index.html +++ /dev/null @@ -1,14 +0,0 @@ - قالب المدونة · Bootstrap v5.3

عنوان تدوينة مميزة أطول

عدة أسطر نصية متعددة تعبر عن التدوية، وذلك لإعلام القراء الجدد بسرعة وكفاءة حول أكثر الأشياء إثارة للاهتمام في محتويات هذه التدوينة.

أكمل القراءة...

العالم

مشاركة مميزة

نوفمبر 12

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي.

-أكمل القراءة -
Placeholderصورة مصغرة
التصميم

عنوان الوظيفة

نوفمبر 11

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي.

-أكمل القراءة -
Placeholderصورة مصغرة

-من Firehose -

تعرض مشاركة المدونة هذه بضعة أنواع مختلفة من المحتوى الذي يتم دعمه وتصميمه باستخدام Bootstrap. النصوص الأساسية، الصور، والأكواد مدعومة بشكل كامل.


يشكِّل تأمين الغذاء في المستقبل قضية تؤرِّق حكومات العالَم والعلماء على حدٍّ سواء. فخلال القرن العشرين ازداد عدد سكان الأرض أربعة أضعاف، وتشير التقديرات إلى أن العدد سوف يصل إلى عشرة مليارات إنسان بحلول عام 2050م. وسوف تمثل هذه الزيادة الهائلة تحدياً كبيراً وضغطاً متصاعداً على قدرة الإنتاج الزراعي. الأمر الذي كان ولا بد من أن يدفع إلى تطوير تقنيات مبتكرة في تصنيع الغذاء غير الزراعة، منها تقنية مستقبلية تقوم على تصنيع الغذاء من الهواء.

تشغل الزراعة مساحات كبيرة من اليابسة، وتستهلك كميات هائلة من المياه، كما أن إنتاج الغذاء بواسطة الزراعة يسهم بنسبة عالية من انبعاثات غازات الاحتباس الحراري العالمية

تشغل الزراعة مساحات كبيرة من اليابسة، وتستهلك كميات هائلة من المياه. كما أن إنتاج الغذاء بواسطة الزراعة يسهم بنسبة عالية من انبعاثات غازات الاحتباس الحراري العالمية، وللمقارنة فإن هذه النسبة من الانبعاثات هي أكبر مما ينتجه قطاع النقل بكل ما فيه من سيارات وشاحنات وطائرات وقطارات.

عنوان

تحصل النباتات على غذائها بواسطة عملية تسمى البناء الضوئي، حيث تقوم النباتات بتحويل ضوء الشمس والماء وثاني أكسيد الكربون الموجود في الغلاف الجوي إلى غذاء وتطلق الأكسجين كمنتج ثانوي لهذا التفاعل الكيميائي. وتحدث هذه العملية في "البلاستيدات الخضراء". فالنباتات تستفيد من طاقة ضوء الشمس في تقسيم الماء إلى هيدروجين وأكسجين، وتحدث تفاعلات كيميائية أخرى ينتج عنها سكر الجلكوز الذي تستخدمه كمصدر للغذاء وينطلق الأكسجين من النباتات إلى الغلاف الجوي. وهذا يعني أن النباتات تحوِّل ثاني أكسيد الكربون إلى غذاء من خلال تفاعلات كيميائية معقَّدة. ويُعد البناء الضوئي من أهم التفاعلات الكيميائية على كوكب الأرض، فقد ساعد في الماضي على تطوُّر كوكبنا وظهور الحياة عليه. فالنباتات تستخدم ثاني أكسيد الكربون لصنع غذائها، وتطلق الأكسجين لتساعد الكائنات الأخرى على التنفس!

عنوان فرعي

ألهمت هذه العملية علماء وكالة الفضاء الأمريكية (ناسا) خلال الستينيات من القرن الماضي، لبحث فكرة إطعام روَّاد الفضاء في مهمات الفضاء الطويلة مثل السفر إلى المريخ. وكانت واحدة من الأفكار الواعدة تصنيع الغذاء عن طريق ثاني أكسيد الكربون الذي ينتجه روَّاد الفضاء، لكن ليس بواسطة النباتات بل عن طريق ميكروبات صغيرة وحيدة الخلية قادرة على حصد ثاني أكسيد الكربون لإنتاج كميات وفيرة من البروتين المغذي على شكل مسحوق عديم النكهة، كما يمكن استخدام المادة في صنع الأطعمة المألوفة لدينا.

Example code block

وخلافاً لما هو الحال في عالم النبات، فإن هذه الميكروبات لا تستخدم الضوء كما يحدث في عملية البناء الضوئي التي تستخدمها النباتات للحصول على الغذاء، أي لأنها قادرة على النمو في الظلام. تسمى هذه البكتريا "هيدروجينوتروف" (Hydrogenotrophs)، وهي تستخدم الهيدروجين كوقود لإنتاج الغذاء من ثاني أكسيد الكربون. فعندما يُنتج روَّاد الفضاء ثاني أكسيد الكربون، تلتقطه الميكروبات، ويتحوَّل مع مدخلات أخرى إلى غذاء غني بالكربون. وبهذه الطريقة سوف نحصل على دورة كربون مغلقة الحلقة.

عنوان فرعي

بعد مرور أكثر من نصف قرن على أبحاث ناسا، تعمل حالياً عدة شركات في قطاع البيولوجيا التركيبية من ضمنها إير بروتين (Air Protein) وسولار فودز (Solar Foods) على تطوير جيل جديد من المنتجات الغذائية المستدامة، من دون وجود بصمة كربونية. ولن تقتصر هذه المنتجات الغذائية على روَّاد الفضاء فحسب، بل سوف تمتد لتشمل جميع سكان الأرض، وسوف تُنتَج في فترة زمنية قصيرة، بدلاً من الشهور، ومن دون الاعتماد على الأراضي الزراعية. وهذا يعني الحصول على منتجات غذائية بشكل سريع جداً. كما سيصبح من الممكن تصنيع الغذاء بطريقة عمودية من خلال هذه الميكروبات، بدلاً من الطريقة الأفقية التقليدية الشبيهة بتقنية الزراعة العمودية الحديثة. وهذا يعني توفير منتجات غذائية أكبر من المساحة نفسها.

يتكوَّن الغذاء البشري من ثلاثة أنواع رئيسة، هي:

  • البروتينات
  • الكربوهيدرات
  • الدهون

وتتكوَّن البروتينات من الأحماض الأمينية، وهي مجموعة من المركبات العضوية يبلغ عددها في جسم الإنسان عشرين حمضاً أمينياً، من بينها تسعة أساسية يحصل عليها الجسم من الغذاء. وتتكوَّن الأحماض الأمينية بشكل أساس من:

  1. الكربون
  2. الهيدروجين
  3. الأكسجين
  4. النيتروجين

ومن الملاحظ أن النيتروجين يشكِّل نسبة %78 من الهواء، كما أن الهيدروجين نحصل عليه من خلال التحليل الكهربائي للماء، ومن الممكن نظرياً سحب الكربون من الهواء لتشكيل هذه الأحماض، ذلك أن الكربون هو العمود الفقري للأحماض الأمينية، كما أن الحياة على كوكب الأرض قائمة على الكربون لقدرته على تكوين سلاسل كربونية طويلة، وهذا ما تفعله الميكروبات بتصنيع أحماض أمينية من ثاني أكسيد الكربون من خلال مجموعة من التفاعلات الكيميائية المعقَّدة. وإضافة إلى صنع وجبات غنية بالبروتين، فهذه الميكروبات تنتج منتجات أخرى مثل الزيوت التي لها عديد من الاستخدامات.

في الوقت الحالي، تدرس عدَّة شركات هذه الميكروبات بشكل أعمق، وتستزرعها من أجل الحصول على الغذاء. ففي عام 2019م، أعلن باحثون في شركة (Air Protein) الأمريكية نجاحهم في تحويل ثاني أكسيد الكربون الموجود في الهواء إلى لحوم صناعية مصنوعة من البروتين، التي لا تتطلَّب أي أرض زراعية، بل هي معتمدة بشكل أساسي على الهواء.

تم تصنيع اللحوم بأنواع عديدة

إذ استخدم هؤلاء الباحثون الهواء والطاقة المتجدِّدة كمدخلات في عملية مشابهة للتخمير، لإنتاج بروتين يحتوي على الأحماض الأمينية التسعة الأساسية وغني بالفيتامينات والمعادن، كما أنه خالٍ من الهرمونات والمضادات الحيوية والمبيدات الحشرية ومبيدات الأعشاب.

وتم تصنيع اللحوم بأنواع عديدة بما فيها الدواجن والأبقار والمأكولات البحرية، من دون حصول انبعاثات كربونية، على عكس تربية الأبقار التي تسهم في انبعاث غاز الميثان أحد غازات الاحتباس الحراري.

كما أن الشركة الفنلندية (Solar Foods) طوَّرت تقنية لإنتاج البروتين من الهواء، حيث تبدأ العملية بتقسيم الماء إلى مكوناته الهيدروجين والأكسجين عن طريق الكهرباء. فالهيدروجين يوفِّر الطاقة للبكتريا لتحويل ثاني أكسيد الكربون والنيتروجين الموجودين في الهواء إلى مادة عضوية غنية بالبروتين بشكل أكفأ من نمو النباتات باستخدام البناء الضوئي. وهذا البروتين يشبه دقيق القمح وقد أطلق عليه اسم "سولين" (Solein).

وتقوم الشركة حالياً بجمع البيانات حول المنتج الغذائي لتقديمه إلى الاتحاد الأوروبي بهدف الحصول على ترخيص غذائي، كما أنها تخطط لبدء الإنتاج التجاري في العام المقبل 2021م. وقد أوضحت الشركة أنها مهتمة بإنتاج أطعمة صديقة للبيئة من خلال استخدام المواد الأساسية: الكهرباء وثاني أكسيد الكربون، وهذه الأطعمة سوف تجنبنا الأثر السلبي البيئي للزراعة التقليدية الذي يشمل كل شيء من استخدام الأرض والمياه إلى الانبعاثات الناتجة من تسميد المحاصيل أو تربية الحيوانات.

وعلى هذا، فإن البروتينات المشتقة من الميكروبات سوف:

  • توفر حلاً ممكناً في ظل زيادة الطلب العالمي المستقبلي على الغذاء
  • تتوسع مصانع الغذاء في المستقبل لتكون أكفأ وأكثر استدامة
  • تصبح قادرة على توفير الغذاء لروَّاد الفضاء في سفرهم إلى المريخ وجميع سكان كوكب الأرض في عام 2050م

فتخيّل أن الميكروبات ستكون مصانع المستقبل، وأن غذاء المستقبل سيكون مصنوعاً من الهواء! وأن عام 2050م سيكون مختلفاً تماماً عن عالمنا اليوم. فهو عالم من دون زراعة ولا تربية حيوانات من أجل الغذاء! قد يبدو ذلك خيالياً لكنه ليس مستحيلاً!

حول

أقبلت، فأقبلت معك الحياة بجميع صنوفها وألوانها: فالنبات ينبت، والأشجار تورق وتزهر، والهرة تموء، والقمري يسجع، والغنم يثغو، والبقر يخور، وكل أليف يدعو أليفه. كل شيء يشعر بالحياة وينسي هموم الحياة، ولا يذكر إلا سعادة الحياة، فإن كان الزمان جسدا فأنت روحه، وإن كان عمرا فأنت شبابه.

في مكان آخر

  1. GitHub
  2. Twitter
  3. Facebook
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/blog/blog.css b/site/dist/docs/5.3/examples/blog/blog.css deleted file mode 100644 index 86eedaf1de..0000000000 --- a/site/dist/docs/5.3/examples/blog/blog.css +++ /dev/null @@ -1,39 +0,0 @@ -/* stylelint-disable @stylistic/selector-list-comma-newline-after */ - -.blog-header-logo { - font-family: "Playfair Display", Georgia, "Times New Roman", serif/*rtl:Amiri, Georgia, "Times New Roman", serif*/; - font-size: 2.25rem; -} - -.blog-header-logo:hover { - text-decoration: none; -} - -h1, h2, h3, h4, h5, h6 { - font-family: "Playfair Display", Georgia, "Times New Roman", serif/*rtl:Amiri, Georgia, "Times New Roman", serif*/; -} - -.flex-auto { - flex: 0 0 auto; -} - -.h-250 { height: 250px; } -@media (min-width: 768px) { - .h-md-250 { height: 250px; } -} - -/* Pagination */ -.blog-pagination { - margin-bottom: 4rem; -} - -/* - * Blog posts - */ -.blog-post { - margin-bottom: 4rem; -} -.blog-post-meta { - margin-bottom: 1.25rem; - color: #727272; -} diff --git a/site/dist/docs/5.3/examples/blog/blog.rtl.css b/site/dist/docs/5.3/examples/blog/blog.rtl.css deleted file mode 100644 index bd0c9d1f05..0000000000 --- a/site/dist/docs/5.3/examples/blog/blog.rtl.css +++ /dev/null @@ -1,39 +0,0 @@ -/* stylelint-disable @stylistic/selector-list-comma-newline-after */ - -.blog-header-logo { - font-family: Amiri, Georgia, "Times New Roman", serif; - font-size: 2.25rem; -} - -.blog-header-logo:hover { - text-decoration: none; -} - -h1, h2, h3, h4, h5, h6 { - font-family: Amiri, Georgia, "Times New Roman", serif; -} - -.flex-auto { - flex: 0 0 auto; -} - -.h-250 { height: 250px; } -@media (min-width: 768px) { - .h-md-250 { height: 250px; } -} - -/* Pagination */ -.blog-pagination { - margin-bottom: 4rem; -} - -/* - * Blog posts - */ -.blog-post { - margin-bottom: 4rem; -} -.blog-post-meta { - margin-bottom: 1.25rem; - color: #727272; -} diff --git a/site/dist/docs/5.3/examples/blog/index.html b/site/dist/docs/5.3/examples/blog/index.html deleted file mode 100644 index cc16324181..0000000000 --- a/site/dist/docs/5.3/examples/blog/index.html +++ /dev/null @@ -1,14 +0,0 @@ - Blog Template · Bootstrap v5.3

Title of a longer featured blog post

Multiple lines of text that form the lede, informing new readers quickly and efficiently about what’s most interesting in this post’s contents.

Continue reading...

World

Featured post

Nov 12

This is a wider card with supporting text below as a natural lead-in to additional content.

-Continue reading -
PlaceholderThumbnail
Design

Post title

Nov 11

This is a wider card with supporting text below as a natural lead-in to additional content.

-Continue reading -
PlaceholderThumbnail

-From the Firehose -

This blog post shows a few different types of content that’s supported and styled with Bootstrap. Basic typography, lists, tables, images, code, and more are all supported as expected.


This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.

Blockquotes

This is an example blockquote in action:

Quoted text goes here.

This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.

Example lists

This is some additional paragraph placeholder content. It's a slightly shorter version of the other highly repetitive body text used throughout. This is an example unordered list:

  • First list item
  • Second list item with a longer description
  • Third list item to close it out

And this is an ordered list:

  1. First list item
  2. Second list item with a longer description
  3. Third list item to close it out

And this is a definition list:

HyperText Markup Language (HTML)
The language used to describe and define the content of a Web page
Cascading Style Sheets (CSS)
Used to describe the appearance of Web content
JavaScript (JS)
The programming language used to build advanced Web sites and applications

Inline HTML elements

HTML defines a long list of available inline tags, a complete list of which can be found on the Mozilla Developer Network.

  • To bold text, use <strong>.
  • To italicize text, use <em>.
  • Abbreviations, like HTML should use <abbr>, with an optional title attribute for the full phrase.
  • Citations, like — Mark Otto, should use <cite>.
  • Deleted text should use <del> and inserted text should use <ins>.
  • Superscript text uses <sup> and subscript text uses <sub>.

Most of these elements are styled by browsers with few modifications on our part.

Heading

This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.

Sub-heading

This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.

Example code block

This is some additional paragraph placeholder content. It's a slightly shorter version of the other highly repetitive body text used throughout.

This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.

Longer quote goes here, maybe with some emphasized text in the middle of it.

This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.

Example table

And don't forget about tables in these posts:

Name Upvotes Downvotes
Alice 10 11
Bob 4 3
Charlie 7 9
Totals 21 23

This is some additional paragraph placeholder content. It's a slightly shorter version of the other highly repetitive body text used throughout.

This is some additional paragraph placeholder content. It has been written to fill the available space and show how a longer snippet of text affects the surrounding content. We'll repeat it often to keep the demonstration flowing, so be on the lookout for this exact same string of text.

  • First list item
  • Second list item with a longer description
  • Third list item to close it out

This is some additional paragraph placeholder content. It's a slightly shorter version of the other highly repetitive body text used throughout.

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/breadcrumbs/breadcrumbs.css b/site/dist/docs/5.3/examples/breadcrumbs/breadcrumbs.css deleted file mode 100644 index a6be558618..0000000000 --- a/site/dist/docs/5.3/examples/breadcrumbs/breadcrumbs.css +++ /dev/null @@ -1,50 +0,0 @@ -.breadcrumb-chevron { - --bs-breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%236c757d'%3E%3Cpath fill-rule='evenodd' d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E"); - gap: .5rem; -} -.breadcrumb-chevron .breadcrumb-item { - display: flex; - gap: inherit; - align-items: center; - padding-left: 0; - line-height: 1; -} -.breadcrumb-chevron .breadcrumb-item::before { - gap: inherit; - float: none; - width: 1rem; - height: 1rem; -} - -.breadcrumb-custom .breadcrumb-item { - position: relative; - flex-grow: 1; - padding: .75rem 3rem; -} -.breadcrumb-custom .breadcrumb-item::before { - display: none; -} -.breadcrumb-custom .breadcrumb-item::after { - position: absolute; - top: 50%; - right: -25px; - z-index: 1; - display: inline-block; - width: 50px; - height: 50px; - margin-top: -25px; - content: ""; - background-color: var(--bs-tertiary-bg); - border-top-right-radius: .5rem; - box-shadow: 1px -1px var(--bs-border-color); - transform: scale(.707) rotate(45deg); -} -.breadcrumb-custom .breadcrumb-item:first-child { - padding-left: 1.5rem; -} -.breadcrumb-custom .breadcrumb-item:last-child { - padding-right: 1.5rem; -} -.breadcrumb-custom .breadcrumb-item:last-child::after { - display: none; -} diff --git a/site/dist/docs/5.3/examples/breadcrumbs/index.html b/site/dist/docs/5.3/examples/breadcrumbs/index.html deleted file mode 100644 index 34687271a3..0000000000 --- a/site/dist/docs/5.3/examples/breadcrumbs/index.html +++ /dev/null @@ -1,16 +0,0 @@ - Breadcrumbs · Bootstrap v5.3
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/buttons/index.html b/site/dist/docs/5.3/examples/buttons/index.html deleted file mode 100644 index 744a12a7a8..0000000000 --- a/site/dist/docs/5.3/examples/buttons/index.html +++ /dev/null @@ -1,12 +0,0 @@ - Buttons · Bootstrap v5.3
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/carousel-rtl/index.html b/site/dist/docs/5.3/examples/carousel-rtl/index.html deleted file mode 100644 index 3a75f41122..0000000000 --- a/site/dist/docs/5.3/examples/carousel-rtl/index.html +++ /dev/null @@ -1,9 +0,0 @@ - قالب شرائح العرض · Bootstrap v5.3
Placeholder

عنوان

تذكر دائماً أن الحاسوب لا يمتلك ذكاءً، ولكنه يكتسب الذكاء الاصطناعي من خلال ثلاثة عناصر وظيفية رئيسة، هي: القدرة على التحليل، والقدرة على التأليف، والاستدلال المنطقي.

عرض التفاصيل

Placeholder

عنوان آخر

إذا أردنا استخدام الحاسوب الذكي في معالجة اللغة العربية فإننا نجد أنفسنا أمام تحدٍّ كبير، خاصة وأن لغتنا تمتاز بتماسك منظوماتها وتداخلها، ومع ذلك فإن الذكاء الاصطناعي يمكّننا من الحصول على أربعة أنواع من المعالجة، هي: المعالجة الصوتية، والمعالجة الصرفية، والمعالجة النحوية، والمعالجة الدلالية.

عرض التفاصيل

Placeholder

عنوان ثالث لتأكيد المعلومة

بفضل بحوث الذكاء الاصطناعي وتقنياته استطعنا الانتقال من مرحلة التعامل مع الفيزيائي إلى مرحلة التعامل مع المنطقي، وقد انعكس هذا الانتقال بصورة إيجابية على الكيفية التي تتعامل بها الشعوب مع لغاتها الحيَّة، وهذا يعني أنه يجب أن ينعكس بصورة إيجابية على كيفية تعاملنا مع لغتنا العربية.

عرض التفاصيل


العنوان الأول المميز. سيذهل عقلك.

وجه الإنسان هو جزء معقَّد ومتميِّز للغاية من جسمه. وفي الواقع، إنه أحد أكثر أنظمة الإشارات المتاحة تعقيداً لدينا؛ فهو يتضمَّن أكثر من 40 عضلة مستقلة هيكلياً ووظيفياً، بحيث يمكن تشغيل كل منها بشكل مستقل عن البعض الآخر؛ وتشكِّل أحد أقوى مؤشرات العواطف.

Placeholder500x500

أوه نعم، هذا جيد. شاهد بنفسك.

عندما نضحك أو نبكي، فإننا نعرض عواطفنا، مما يسمح للآخرين بإلقاء نظرة خاطفة على أذهاننا أثناء "قراءة" وجوهنا بناءً على التغييرات في مكوّنات الوجه الرئيسة، مثل: العينين والحاجبين والجفنين والأنف والشفتين.

Placeholder500x500

وأخيرًا، هذا. كش ملك.

إن جميع العضلات في أجسامنا مدعمة بالأعصاب المتصلة من كافة أنحاء الجسم بالنخاع الشوكي والدماغ. وهذا الاتصال العصبي هو ثنائي الاتجاه، أي إن العصب يتسبَّب في تقلصات العضلات بناءً على إشارات الدماغ، ويقوم في الوقت نفسه بإرسال معلومات عن حالة العضلات إلى الدماغ

Placeholder500x500

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/carousel/carousel.css b/site/dist/docs/5.3/examples/carousel/carousel.css deleted file mode 100644 index be0af524a6..0000000000 --- a/site/dist/docs/5.3/examples/carousel/carousel.css +++ /dev/null @@ -1,82 +0,0 @@ -/* GLOBAL STYLES --------------------------------------------------- */ -/* Padding below the footer and lighter body text */ - -body { - padding-top: 3rem; - padding-bottom: 3rem; - color: rgb(var(--bs-tertiary-color-rgb)); -} - - -/* CUSTOMIZE THE CAROUSEL --------------------------------------------------- */ - -/* Carousel base class */ -.carousel { - margin-bottom: 4rem; -} -/* Since positioning the image, we need to help out the caption */ -.carousel-caption { - bottom: 3rem; - z-index: 10; -} - -/* Declare heights because of positioning of img element */ -.carousel-item { - height: 32rem; -} - - -/* MARKETING CONTENT --------------------------------------------------- */ - -/* Center align the text within the three columns below the carousel */ -.marketing .col-lg-4 { - margin-bottom: 1.5rem; - text-align: center; -} -/* rtl:begin:ignore */ -.marketing .col-lg-4 p { - margin-right: .75rem; - margin-left: .75rem; -} -/* rtl:end:ignore */ - - -/* Featurettes -------------------------- */ - -.featurette-divider { - margin: 5rem 0; /* Space out the Bootstrap
more */ -} - -/* Thin out the marketing headings */ -/* rtl:begin:remove */ -.featurette-heading { - letter-spacing: -.05rem; -} - -/* rtl:end:remove */ - -/* RESPONSIVE CSS --------------------------------------------------- */ - -@media (min-width: 40em) { - /* Bump up size of carousel content */ - .carousel-caption p { - margin-bottom: 1.25rem; - font-size: 1.25rem; - line-height: 1.4; - } - - .featurette-heading { - font-size: 50px; - } -} - -@media (min-width: 62em) { - .featurette-heading { - margin-top: 7rem; - } -} diff --git a/site/dist/docs/5.3/examples/carousel/carousel.rtl.css b/site/dist/docs/5.3/examples/carousel/carousel.rtl.css deleted file mode 100644 index 9ff275d4ea..0000000000 --- a/site/dist/docs/5.3/examples/carousel/carousel.rtl.css +++ /dev/null @@ -1,74 +0,0 @@ -/* GLOBAL STYLES --------------------------------------------------- */ -/* Padding below the footer and lighter body text */ - -body { - padding-top: 3rem; - padding-bottom: 3rem; - color: rgb(var(--bs-tertiary-color-rgb)); -} - - -/* CUSTOMIZE THE CAROUSEL --------------------------------------------------- */ - -/* Carousel base class */ -.carousel { - margin-bottom: 4rem; -} -/* Since positioning the image, we need to help out the caption */ -.carousel-caption { - bottom: 3rem; - z-index: 10; -} - -/* Declare heights because of positioning of img element */ -.carousel-item { - height: 32rem; -} - - -/* MARKETING CONTENT --------------------------------------------------- */ - -/* Center align the text within the three columns below the carousel */ -.marketing .col-lg-4 { - margin-bottom: 1.5rem; - text-align: center; -} -.marketing .col-lg-4 p { - margin-right: .75rem; - margin-left: .75rem; -} - - -/* Featurettes -------------------------- */ - -.featurette-divider { - margin: 5rem 0; /* Space out the Bootstrap
more */ -} - -/* Thin out the marketing headings */ - -/* RESPONSIVE CSS --------------------------------------------------- */ - -@media (min-width: 40em) { - /* Bump up size of carousel content */ - .carousel-caption p { - margin-bottom: 1.25rem; - font-size: 1.25rem; - line-height: 1.4; - } - - .featurette-heading { - font-size: 50px; - } -} - -@media (min-width: 62em) { - .featurette-heading { - margin-top: 7rem; - } -} diff --git a/site/dist/docs/5.3/examples/carousel/index.html b/site/dist/docs/5.3/examples/carousel/index.html deleted file mode 100644 index 0b69ae2f14..0000000000 --- a/site/dist/docs/5.3/examples/carousel/index.html +++ /dev/null @@ -1,9 +0,0 @@ - Carousel Template · Bootstrap v5.3
Placeholder

Heading

Some representative placeholder content for the three columns of text below the carousel. This is the first column.

View details »

Placeholder

Heading

Another exciting bit of representative placeholder content. This time, we've moved on to the second column.

View details »

Placeholder

Heading

And lastly this, the third column of representative placeholder content.

View details »


First featurette heading. It’ll blow your mind.

Some great placeholder content for the first featurette here. Imagine some exciting prose here.

Placeholder500x500

Oh yeah, it’s that good. See for yourself.

Another featurette? Of course. More placeholder content here to give you an idea of how this layout would work with some actual real-world content in place.

Placeholder500x500

And lastly, this one. Checkmate.

And yes, this is the last block of representative placeholder content. Again, not really intended to be actually read, simply here to give you a better view of what this would look like with some actual content. Your content.

Placeholder500x500

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/cheatsheet-rtl/index.html b/site/dist/docs/5.3/examples/cheatsheet-rtl/index.html deleted file mode 100644 index 34617c2500..0000000000 --- a/site/dist/docs/5.3/examples/cheatsheet-rtl/index.html +++ /dev/null @@ -1,1276 +0,0 @@ - ورقة الغش · Bootstrap v5.3

Bootstrap -ورقة الغش -

جدول بيانات LTR

المحتوى

-

العرض 1

-

العرض 2

-

العرض 3

-

العرض 4

-

العرض 5

-

العرض 6

-
-

عنوان 1

-

عنوان 2

-

عنوان 3

-

عنوان 4

-

عنوان 5

-

عنوان 6

-
-

- هذه قطعة إملائية متميزة، فهي مصممة لتكون بارزة من بين القطع الإملائية الأخرى. -

-
-

يمكنك استخدام تصنيف mark لتحديد نص.

-

من المفترض أن يتم التعامل مع هذا السطر كنص محذوف.

-

من المفترض أن يتم التعامل مع هذا السطر على أنه لم يعد دقيقًا.

-

من المفترض أن يتم التعامل مع هذا السطر كإضافة إلى المستند.

-

سيتم عرض النص في هذا السطر كما وتحته خط.

-

من المفترض أن يتم التعامل مع هذا السطر على أنه يحوي تفاصيل صغيرة.

-

هذا السطر يحوي نص عريض.

-

هذا السطر يحوي نص مائل.

-
-
-
-
-

إقتباس مبهر، موضوع في عنصر blockquote

-
شخص مشهور في عنوان المصدر
-
-
-
    -
  • هذه قائمة عناصر.
  • -
  • بالرغم من أنها مصممة كي لا تظهر كذلك.
  • -
  • إلا أنها مجهزة كـ قائمة خلف الكواليس
  • -
  • هذا التصميم ينطبق فقد على القائمة الرئيسية
  • -
  • القوائم الفرعية -
      -
    • لا تتأثر بهذا التصميم
    • -
    • فهي تظهر عليها علامات الترقيم
    • -
    • وتحتوي على مساحة فارغة بجوارها
    • -
    -
  • -
  • قد يكون هذا التصميم مفيدًا في بعض الأحيان.
  • -
-
-
    -
  • هذا عنصر في قائمة.
  • -
  • وهذا أيضًا.
  • -
  • لكنهم يظهرون متجاورين.
  • -
-
- Placeholderصورة مستجيبة -
- صورة عنصر نائب مربع عام مع حدود بيضاء حولها ، مما يجعلها تشبه صورة تم التقاطها بكاميرا فورية قديمة200x200 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#الاسم الاولالكنيةالاسم المستعار
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#الاسم الاولالكنيةالاسم المستعار
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Classعنوانعنوان
Defaultخليةخلية
Primaryخليةخلية
Secondaryخليةخلية
Successخليةخلية
Dangerخليةخلية
Warningخليةخلية
Infoخليةخلية
Lightخليةخلية
Darkخليةخلية
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#الاسم الاولالكنيةالاسم المستعار
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-

النماذج

نظرة عامة

دليل الإستخدام
-
-
- - -
لن نقوم بمشاركة بريدك الإلكتروني مع أي شخص آخر.
-
-
- - -
-
- - -
-
- - -
-
- أزرار الاختيار الأحادي -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -
-

الحقول المعطلة

دليل الإستخدام
-
-
-
- - -
-
- - -
-
-
- - -
-
-
- أزرار اختيار أحادي معطلين -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -
-
-
-
- -
-
- -
-
- -
-
-
- -
-
- -
-
- -
-

مجموعة الإدخال

دليل الإستخدام
-
- أنا اسمي - -
-
- - وغيرها -
- -
- - https://example.com/users/ -
-
- .00 - - $ -
-
- مع textarea - -
-

الحقول ذوي العناوين العائمة

دليل الإستخدام
-
-
- - -
-
- - -
-
-
-
-
- - -
- يبدو صحيحًا! -
-
-
- - -
- يبدو صحيحًا! -
-
-
- -
- - @ -
- يرجى اختيار اسم مستخدم. -
-
-
-
- - -
- يرجى إدخال مدينة صحيحة. -
-
-
- - -
- يرجى اختيار ولاية صحيحة. -
-
-
- - -
- يرجى إدخال رمز بريدي صحيح. -
-
-
-
- - -
- تجب الموافقة قبل إرسال النموذج. -
-
-
-
- -
-
-

العناصر

-
-
-

- -

-
-
- هذا هو محتوى عنصر المطوية الأول. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
-

- -

-
-
- هذا هو محتوى عنصر المطوية الثاني. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
-

- -

-
-
- هذا هو محتوى عنصر المطوية الثالث. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
-

الإنذارات

دليل الإستخدام
- - - - - - - - - - - - - - - - - - - - - - -
- -
-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-
- Primary - - - Secondary - - - Success - - - Danger - - - Warning - - - Info - - - Light - - - Dark -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - -
-
-
-
- Placeholderغطاء الصورة -
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

- اذهب لمكان ما -
-
-
-
-
-
- متميز -
-
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

- اذهب لمكان ما -
- -
-
-
-
-
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

-
-
    -
  • عنصر
  • -
  • عنصر آخر
  • -
  • عنصر ثالث
  • -
- -
-
-
-
-
-
- Placeholderصورة -
-
-
-
عنوان البطاقة
-

هذه بطاقة أعرض مع نص داعم تحتها كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-

آخر تحديث منذ 3 دقائق

-
-
-
-
-
-
-

مجموعة العناصر

دليل الإستخدام
-
    -
  • عنصر معطل
  • -
  • عنصر ثاني
  • -
  • عنصر ثالث
  • -
  • عنصر رابع
  • -
  • وعنصر خامس أيضًا
  • -
-
-
    -
  • عنصر
  • -
  • عنصر ثاني
  • -
  • عنصر ثالث
  • -
  • عنصر رابع
  • -
  • وعنصر خامس أيضًا
  • -
-

الصناديق المنبثقة

دليل الإستخدام
- -
- - - - -

المخطوطة

دليل الإستخدام

@fat

محتوى لتوضيح كيف تعمل المخطوطة. ببساطة، المخطوطة عبارة عن منشور طويل يحتوي على عدة أقسام، ولديه شريط تنقل يسهل الوصول إلى هذه الأقسام الفرعية.

@mdo

بصرف النظر عن تحسيننا جدوى المكيّفات أو عدم تحسينها، فإن الطلب على الطاقة سيزداد. وطبقاً لما جاء في مقالة معهد ماساشوستس للتكنولوجيا، السالف ذكره، ثمَّة أمر يجب عدم إغفاله، وهو كيف أن هذا الطلب سيضغط على نظم توفير الطاقة الحالية. إذ لا بد من إعادة تأهيل كل شبكات الكهرباء، وتوسيعها لتلبية طلب الطاقة في زمن الذروة، خلال موجات الحرارة المتزايدة. فحين يكون الحر شديداً يجنح الناس إلى البقاء في الداخل، وإلى زيادة تشغيل المكيّفات، سعياً إلى جو لطيف وهم يستخدمون أدوات وأجهزة مختلفة أخرى.

واحد

وكل هذه الأمور المتزامنة من تشغيل الأجهزة، يزيد الضغط على شبكات الطاقة، كما أسلفنا. لكن مجرد زيادة سعة الشبكة ليس كافياً. إذ لا بد من تطوير الشبكات الذكية التي تستخدم الجسّاسات، ونظم المراقبة، والبرامج الإلكترونية، لتحديد متى يكون الشاغلون في المبنى، ومتى يكون ثمَّة حاجة إلى الطاقة، ومتى تكون الحرارة منخفضة، وبذلك يخرج الناس، فلا يستخدمون كثيراً من الكهرباء.

اثنان

مع الأسف، كل هذه الحلول المبتكرة مكلِّفة، وهذا ما يجعلها عديمة الجدوى في نظر بعض الشركات الخاصة والمواطن المتقشّف. إن بعض الأفراد الواعين بيئياً يبذلون قصارى جهدهم في تقليص استهلاكهم من الطاقة، ويعون جيداً أهمية أجهزة التكييف المجدية والأرفق بالبيئة. ولكن جهات كثيرة لن تتحرّك لمجرد حافز سلامة المناخ ووقف هدر الطاقة، ما دامت لا تحركها حوافز قانونية. وعلى الحكومات أن تُقدِم عند الاهتمام بالتغيّر المناخي، على وضع التشريعات المناسبة. فبالنظم والحوافز والدعم، يمكن دفع الشركات إلى اعتماد الحلول الأجدى في مكاتبها.

ثلاثة

وكما يتبيّن لنا، من عدد الحلول الملطِّفة للمشكلة، ومن تنوّعها، وهي الحلول التي أسلفنا الحديث عنها، فإن التكنولوجيا التي نحتاج إليها من أجل معالجة هذه التحديات، هي في مدى قدرتنا، لكنها ربما تتطلّب بعض التحسين، ودعماً استثمارياً أكبر!

ولا مانع من إضافة محتوى آخر ليس تحت أي قسم معين.

الدوائر المتحركة

دليل الإستخدام
-
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
-
-
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
- - -
- جار التحميل... -
-

الإشعارات

دليل الإستخدام
- -

التلميحات

دليل الإستخدام
- - - - - -
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.css b/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.css deleted file mode 100644 index 5721a028e9..0000000000 --- a/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.css +++ /dev/null @@ -1,163 +0,0 @@ -body { - scroll-behavior: smooth; -} - -/** - * Bootstrap "Journal code" icon - * @link https://icons.getbootstrap.com/icons/journal-code/ - */ -.bd-heading a::before { - display: inline-block; - width: 1em; - height: 1em; - margin-right: .25rem; - content: ""; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23999' viewBox='0 0 16 16'%3E%3Cpath d='M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1H2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M2 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2z'/%3E%3Cpath fill-rule='evenodd' d='M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z'/%3E%3C/svg%3E"); - background-size: 1em; -} - -/* stylelint-disable-next-line selector-max-universal */ -.bd-heading + div > * + * { - margin-top: 3rem; -} - -/* Table of contents */ -.bd-aside a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-left: .3125rem; - color: var(--bs-body-color); -} - -.bd-aside a:hover, -.bd-aside a:focus { - color: var(--bs-body-color); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .active { - font-weight: 600; - color: var(--bs-body-color); -} - -.bd-aside .btn { - padding: .25rem .5rem; - font-weight: 600; - color: var(--bs-body-color); -} - -.bd-aside .btn:hover, -.bd-aside .btn:focus { - color: var(--bs-body-color); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .btn:focus { - box-shadow: 0 0 0 1px rgba(121, 82, 179, .7); -} - -.bd-aside .btn::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ccc' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - - /* rtl:raw: - transform: rotate(180deg) translateX(-2px); - */ - transform-origin: .5em 50%; -} - -.bd-aside .btn[aria-expanded="true"]::before { - transform: rotate(90deg)/* rtl:ignore */; -} - - -/* Examples */ -.scrollspy-example { - height: 200px; -} - -[id="modal"] .bd-example .btn, -[id="buttons"] .bd-example .btn, -[id="tooltips"] .bd-example .btn, -[id="popovers"] .bd-example .btn, -[id="dropdowns"] .bd-example .btn-group, -[id="dropdowns"] .bd-example .dropdown, -[id="dropdowns"] .bd-example .dropup, -[id="dropdowns"] .bd-example .dropend, -[id="dropdowns"] .bd-example .dropstart { - margin: 0 1rem 1rem 0; -} - -/* Layout */ -@media (min-width: 1200px) { - body { - display: grid; - grid-template-rows: auto; - grid-template-columns: 1fr 4fr 1fr; - gap: 1rem; - } - - .bd-header { - position: fixed; - top: 0; - /* rtl:begin:ignore */ - right: 0; - left: 0; - /* rtl:end:ignore */ - z-index: 1030; - grid-column: 1 / span 3; - } - - .bd-aside, - .bd-cheatsheet { - padding-top: 4rem; - } - - /** - * 1. Too bad only Firefox supports subgrids ATM - */ - .bd-cheatsheet, - .bd-cheatsheet section, - .bd-cheatsheet article { - display: inherit; /* 1 */ - grid-template-rows: auto; - grid-template-columns: 1fr 4fr; - grid-column: 1 / span 2; - gap: inherit; /* 1 */ - } - - .bd-aside { - grid-area: 1 / 3; - scroll-margin-top: 4rem; - } - - .bd-cheatsheet section, - .bd-cheatsheet section > h2 { - top: 2rem; - scroll-margin-top: 2rem; - } - - .bd-cheatsheet section > h2::before { - position: absolute; - /* rtl:begin:ignore */ - top: 0; - right: 0; - bottom: -2rem; - left: 0; - /* rtl:end:ignore */ - z-index: -1; - content: ""; - } - - .bd-cheatsheet article, - .bd-cheatsheet .bd-heading { - top: 8rem; - scroll-margin-top: 8rem; - } - - .bd-cheatsheet .bd-heading { - z-index: 1; - } -} diff --git a/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.js b/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.js deleted file mode 100644 index e25a89e75d..0000000000 --- a/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.js +++ /dev/null @@ -1,73 +0,0 @@ -/* global bootstrap: false */ - -(() => { - 'use strict' - - // Tooltip and popover demos - document.querySelectorAll('.tooltip-demo') - .forEach(tooltip => { - new bootstrap.Tooltip(tooltip, { - selector: '[data-bs-toggle="tooltip"]' - }) - }) - - document.querySelectorAll('[data-bs-toggle="popover"]') - .forEach(popover => { - new bootstrap.Popover(popover) - }) - - document.querySelectorAll('.toast') - .forEach(toastNode => { - const toast = new bootstrap.Toast(toastNode, { - autohide: false - }) - - toast.show() - }) - - // Disable empty links and submit buttons - document.querySelectorAll('[href="#"], [type="submit"]') - .forEach(link => { - link.addEventListener('click', event => { - event.preventDefault() - }) - }) - - function setActiveItem() { - const { hash } = window.location - - if (hash === '') { - return - } - - const link = document.querySelector(`.bd-aside a[href="${hash}"]`) - - if (!link) { - return - } - - const active = document.querySelector('.bd-aside .active') - const parent = link.parentNode.parentNode.previousElementSibling - - link.classList.add('active') - - if (parent.classList.contains('collapsed')) { - parent.click() - } - - if (!active) { - return - } - - const expanded = active.parentNode.parentNode.previousElementSibling - - active.classList.remove('active') - - if (expanded && parent !== expanded) { - expanded.click() - } - } - - setActiveItem() - window.addEventListener('hashchange', setActiveItem) -})() diff --git a/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.rtl.css b/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.rtl.css deleted file mode 100644 index 416e39fcaf..0000000000 --- a/site/dist/docs/5.3/examples/cheatsheet/cheatsheet.rtl.css +++ /dev/null @@ -1,156 +0,0 @@ -body { - scroll-behavior: smooth; -} - -/** - * Bootstrap "Journal code" icon - * @link https://icons.getbootstrap.com/icons/journal-code/ - */ -.bd-heading a::before { - display: inline-block; - width: 1em; - height: 1em; - margin-left: .25rem; - content: ""; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23999' viewBox='0 0 16 16'%3E%3Cpath d='M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1H2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M2 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2z'/%3E%3Cpath fill-rule='evenodd' d='M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z'/%3E%3C/svg%3E"); - background-size: 1em; -} - -/* stylelint-disable-next-line selector-max-universal */ -.bd-heading + div > * + * { - margin-top: 3rem; -} - -/* Table of contents */ -.bd-aside a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-right: .3125rem; - color: var(--bs-body-color); -} - -.bd-aside a:hover, -.bd-aside a:focus { - color: var(--bs-body-color); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .active { - font-weight: 600; - color: var(--bs-body-color); -} - -.bd-aside .btn { - padding: .25rem .5rem; - font-weight: 600; - color: var(--bs-body-color); -} - -.bd-aside .btn:hover, -.bd-aside .btn:focus { - color: var(--bs-body-color); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .btn:focus { - box-shadow: 0 0 0 1px rgba(121, 82, 179, .7); -} - -.bd-aside .btn::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ccc' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - transform: rotate(180deg) translateX(-2px); - transform-origin: .5em 50%; -} - -.bd-aside .btn[aria-expanded="true"]::before { - transform: rotate(90deg); -} - - -/* Examples */ -.scrollspy-example { - height: 200px; -} - -[id="modal"] .bd-example .btn, -[id="buttons"] .bd-example .btn, -[id="tooltips"] .bd-example .btn, -[id="popovers"] .bd-example .btn, -[id="dropdowns"] .bd-example .btn-group, -[id="dropdowns"] .bd-example .dropdown, -[id="dropdowns"] .bd-example .dropup, -[id="dropdowns"] .bd-example .dropend, -[id="dropdowns"] .bd-example .dropstart { - margin: 0 0 1rem 1rem; -} - -/* Layout */ -@media (min-width: 1200px) { - body { - display: grid; - grid-template-rows: auto; - grid-template-columns: 1fr 4fr 1fr; - gap: 1rem; - } - - .bd-header { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; - grid-column: 1 / span 3; - } - - .bd-aside, - .bd-cheatsheet { - padding-top: 4rem; - } - - /** - * 1. Too bad only Firefox supports subgrids ATM - */ - .bd-cheatsheet, - .bd-cheatsheet section, - .bd-cheatsheet article { - display: inherit; /* 1 */ - grid-template-rows: auto; - grid-template-columns: 1fr 4fr; - grid-column: 1 / span 2; - gap: inherit; /* 1 */ - } - - .bd-aside { - grid-area: 1 / 3; - scroll-margin-top: 4rem; - } - - .bd-cheatsheet section, - .bd-cheatsheet section > h2 { - top: 2rem; - scroll-margin-top: 2rem; - } - - .bd-cheatsheet section > h2::before { - position: absolute; - top: 0; - right: 0; - bottom: -2rem; - left: 0; - z-index: -1; - content: ""; - } - - .bd-cheatsheet article, - .bd-cheatsheet .bd-heading { - top: 8rem; - scroll-margin-top: 8rem; - } - - .bd-cheatsheet .bd-heading { - z-index: 1; - } -} diff --git a/site/dist/docs/5.3/examples/cheatsheet/index.html b/site/dist/docs/5.3/examples/cheatsheet/index.html deleted file mode 100644 index bee874c566..0000000000 --- a/site/dist/docs/5.3/examples/cheatsheet/index.html +++ /dev/null @@ -1,1257 +0,0 @@ - Cheatsheet · Bootstrap v5.3

Bootstrap -Cheatsheet -

RTL cheatsheet

Contents

Typography

Documentation
-

Display 1

-

Display 2

-

Display 3

-

Display 4

-

Display 5

-

Display 6

-

Heading 1

-

Heading 2

-

Heading 3

-

Heading 4

-

Heading 5

-

Heading 6

-

- This is a lead paragraph. It stands out from regular paragraphs. -

-

You can use the mark tag to highlight text.

-

This line of text is meant to be treated as deleted text.

-

This line of text is meant to be treated as no longer accurate.

-

This line of text is meant to be treated as an addition to the document.

-

This line of text will render as underlined.

-

This line of text is meant to be treated as fine print.

-

This line rendered as bold text.

-

This line rendered as italicized text.

-
-
-

A well-known quote, contained in a blockquote element.

-
Someone famous in Source Title
-
-
    -
  • This is a list.
  • -
  • It appears completely unstyled.
  • -
  • Structurally, it's still a list.
  • -
  • However, this style only applies to immediate child elements.
  • -
  • Nested lists: -
      -
    • are unaffected by this style
    • -
    • will still show a bullet
    • -
    • and have appropriate left margin
    • -
    -
  • -
  • This may still come in handy in some situations.
  • -
-
    -
  • This is a list item.
  • -
  • And another one.
  • -
  • But they're displayed inline.
  • -

Tables

Documentation
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassHeadingHeading
DefaultCellCell
PrimaryCellCell
SecondaryCellCell
SuccessCellCell
DangerCellCell
WarningCellCell
InfoCellCell
LightCellCell
DarkCellCell
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter

Figures

Documentation
-
- Placeholder400x300 -
A caption for the above image.
-

Forms

Overview

Documentation
-
-
- - -
We'll never share your email with anyone else.
-
-
- - -
-
- - -
-
- - -
-
- Radios buttons -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -

Disabled forms

Documentation
-
-
-
- - -
-
- - -
-
-
- - -
-
-
- Disabled radios buttons -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -
-

Sizing

Documentation
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-

Input group

Documentation
-
- @ - -
-
- - @example.com -
- -
- https://example.com/users/ - -
-
- $ - - .00 -
-
- With textarea - -
-

Floating labels

Documentation
-
-
- - -
-
- - -
-
-

Validation

Documentation
-
-
- - -
- Looks good! -
-
-
- - -
- Looks good! -
-
-
- -
- @ - -
- Please choose a username. -
-
-
-
- - -
- Please provide a valid city. -
-
-
- - -
- Please select a valid state. -
-
-
- - -
- Please provide a valid zip. -
-
-
-
- - -
- You must agree before submitting. -
-
-
-
- -
-
-

Components

Accordion

Documentation
-
-
-

- -

-
-
- This is the first item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

Alerts

Documentation
- - - - - - - - - - - - - - - - - - - - - - -
- -
-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-
- Primary - - - Secondary - - - Success - - - Danger - - - Warning - - - Info - - - Light - - - Dark -

Buttons

Documentation
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - -

Button group

Documentation
- -
-
-
-
- PlaceholderImage cap -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
-
-
-
-
-
- Featured -
-
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
- -
-
-
-
-
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
-
-
-
-
-
- PlaceholderImage -
-
-
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-

Last updated 3 mins ago

-
-
-
-
-
-
-

List group

Documentation
-
    -
  • A disabled item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • -
-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • -
-

Popovers

Documentation
- -
- - - - -

Progress

Documentation
-
-
0%
-
-
-
25%
-
-
-
50%
-
-
-
75%
-
-
-
100%
-
-
-
-
-
-
-
-
-
-
-

Scrollspy

Documentation

First heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Second heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Third heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Fourth heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Fifth heading

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

Spinners

Documentation
-
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
-
-
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
- - -
- Loading... -
-

Toasts

Documentation
- -

Tooltips

Documentation
- - - - - -
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/checkout-rtl/index.html b/site/dist/docs/5.3/examples/checkout-rtl/index.html deleted file mode 100644 index 5ad39e4e30..0000000000 --- a/site/dist/docs/5.3/examples/checkout-rtl/index.html +++ /dev/null @@ -1,32 +0,0 @@ - مثال إتمام الشراء · Bootstrap v5.3

نموذج إتمام الشراء

فيما يلي مثال على نموذج تم إنشاؤه بالكامل باستخدام عناصر تحكم النموذج في Bootstrap. لكل مجموعة نماذج مطلوبة حالة تحقق يمكن تشغيلها بمحاولة إرسال النموذج دون استكماله.

عربة التسوق 3

  • اسم المنتج
    وصف مختصر
    $12
  • المنتج الثاني
    وصف مختصر
    $8
  • البند الثالث
    وصف مختصر
    $5
  • رمز ترويجي
    EXAMPLECODE
    -$5
  • مجموع (USD) $20

عنوان الفوترة

-يرجى إدخال اسم أول صحيح. -
-يرجى إدخال اسم عائلة صحيح. -
@
-اسم المستخدم الخاص بك مطلوب. -
-يرجى إدخال عنوان بريد إلكتروني صحيح لتصلكم تحديثات الشحن. -
-يرجى إدخال عنوان الشحن الخاص بك. -
-يرجى اختيار بلد صحيح. -
-يرجى اختيار اسم منطقة صحيح. -
-الرمز البريدي مطلوب. -


طريقة الدفع

الاسم الكامل كما هو معروض على البطاقة
-الاسم على البطاقة مطلوب -
-رقم بطاقة الائتمان مطلوب -
-تاريخ انتهاء الصلاحية مطلوب -
-رمز الحماية مطلوب -

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/checkout/checkout.css b/site/dist/docs/5.3/examples/checkout/checkout.css deleted file mode 100644 index e5ea31c405..0000000000 --- a/site/dist/docs/5.3/examples/checkout/checkout.css +++ /dev/null @@ -1,3 +0,0 @@ -.container { - max-width: 960px; -} diff --git a/site/dist/docs/5.3/examples/checkout/checkout.js b/site/dist/docs/5.3/examples/checkout/checkout.js deleted file mode 100644 index 30ea0aa6b1..0000000000 --- a/site/dist/docs/5.3/examples/checkout/checkout.js +++ /dev/null @@ -1,19 +0,0 @@ -// Example starter JavaScript for disabling form submissions if there are invalid fields -(() => { - 'use strict' - - // Fetch all the forms we want to apply custom Bootstrap validation styles to - const forms = document.querySelectorAll('.needs-validation') - - // Loop over them and prevent submission - Array.from(forms).forEach(form => { - form.addEventListener('submit', event => { - if (!form.checkValidity()) { - event.preventDefault() - event.stopPropagation() - } - - form.classList.add('was-validated') - }, false) - }) -})() diff --git a/site/dist/docs/5.3/examples/checkout/index.html b/site/dist/docs/5.3/examples/checkout/index.html deleted file mode 100644 index 514e34734b..0000000000 --- a/site/dist/docs/5.3/examples/checkout/index.html +++ /dev/null @@ -1,32 +0,0 @@ - Checkout example · Bootstrap v5.3

Checkout form

Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.

Your cart 3

  • Product name
    Brief description
    $12
  • Second product
    Brief description
    $8
  • Third item
    Brief description
    $5
  • Promo code
    EXAMPLECODE
    −$5
  • Total (USD) $20

Billing address

-Valid first name is required. -
-Valid last name is required. -
@
-Your username is required. -
-Please enter a valid email address for shipping updates. -
-Please enter your shipping address. -
-Please select a valid country. -
-Please provide a valid state. -
-Zip code required. -


Payment

Full name as displayed on card
-Name on card is required -
-Credit card number is required -
-Expiration date required -
-Security code required -

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/cover/cover.css b/site/dist/docs/5.3/examples/cover/cover.css deleted file mode 100644 index 2e7aef8f88..0000000000 --- a/site/dist/docs/5.3/examples/cover/cover.css +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Globals - */ - - -/* Custom default button */ -.btn-light, -.btn-light:hover, -.btn-light:focus { - color: #333; - text-shadow: none; /* Prevent inheritance from `body` */ -} - - -/* - * Base structure - */ - -body { - text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5); - box-shadow: inset 0 0 5rem rgba(0, 0, 0, .5); -} - -.cover-container { - max-width: 42em; -} - - -/* - * Header - */ - -.nav-masthead .nav-link { - color: rgba(255, 255, 255, .5); - border-bottom: .25rem solid transparent; -} - -.nav-masthead .nav-link:hover, -.nav-masthead .nav-link:focus { - border-bottom-color: rgba(255, 255, 255, .25); -} - -.nav-masthead .nav-link + .nav-link { - margin-left: 1rem; -} - -.nav-masthead .active { - color: #fff; - border-bottom-color: #fff; -} diff --git a/site/dist/docs/5.3/examples/cover/index.html b/site/dist/docs/5.3/examples/cover/index.html deleted file mode 100644 index 77a835a331..0000000000 --- a/site/dist/docs/5.3/examples/cover/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Cover Template · Bootstrap v5.3

Cover your page.

Cover is a one-page template for building simple and beautiful home pages. Download, edit the text, and add your own fullscreen background photo to make it your own.

Learn more

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/dashboard-rtl/dashboard.js b/site/dist/docs/5.3/examples/dashboard-rtl/dashboard.js deleted file mode 100644 index bdb3029d3d..0000000000 --- a/site/dist/docs/5.3/examples/dashboard-rtl/dashboard.js +++ /dev/null @@ -1,49 +0,0 @@ -/* globals Chart:false */ - -(() => { - 'use strict' - - // Graphs - const ctx = document.getElementById('myChart') - // eslint-disable-next-line no-unused-vars - const myChart = new Chart(ctx, { - type: 'line', - data: { - labels: [ - 'الأحد', - 'الإثنين', - 'الثلاثاء', - 'الأربعاء', - 'الخميس', - 'الجمعة', - 'السبت' - ], - datasets: [{ - data: [ - 15339, - 21345, - 18483, - 24003, - 23489, - 24092, - 12034 - ], - lineTension: 0, - backgroundColor: 'transparent', - borderColor: '#007bff', - borderWidth: 4, - pointBackgroundColor: '#007bff' - }] - }, - options: { - plugins: { - legend: { - display: false - }, - tooltip: { - boxPadding: 3 - } - } - } - }) -})() diff --git a/site/dist/docs/5.3/examples/dashboard-rtl/index.html b/site/dist/docs/5.3/examples/dashboard-rtl/index.html deleted file mode 100644 index deb6332529..0000000000 --- a/site/dist/docs/5.3/examples/dashboard-rtl/index.html +++ /dev/null @@ -1,34 +0,0 @@ - قالب لوحة القيادة · Bootstrap v5.3

لوحة القيادة

عنوان القسم

# عنوان عنوان عنوان عنوان
1,001 بيانات عشوائية تثري الجدول
1,002 تثري مبهة تصميم تنسيق
1,003 عشوائية غنية قيمة مفيدة
1,003 معلومات تثري توضيحية عشوائية
1,004 الجدول بيانات تنسيق قيمة
1,005 قيمة مبهة الجدول تثري
1,006 قيمة توضيحية غنية عشوائية
1,007 تثري مفيدة معلومات مبهة
1,008 بيانات عشوائية تثري الجدول
1,009 تثري مبهة تصميم تنسيق
1,010 عشوائية غنية قيمة مفيدة
1,011 معلومات تثري توضيحية عشوائية
1,012 الجدول تثري تنسيق قيمة
1,013 قيمة مبهة الجدول تصميم
1,014 قيمة توضيحية غنية عشوائية
1,015 بيانات مفيدة معلومات الجدول
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/dashboard/dashboard.css b/site/dist/docs/5.3/examples/dashboard/dashboard.css deleted file mode 100644 index 154940c90b..0000000000 --- a/site/dist/docs/5.3/examples/dashboard/dashboard.css +++ /dev/null @@ -1,48 +0,0 @@ -.bi { - display: inline-block; - width: 1rem; - height: 1rem; -} - -/* - * Sidebar - */ - -@media (min-width: 768px) { - .sidebar .offcanvas-lg { - position: -webkit-sticky; - position: sticky; - top: 48px; - } - .navbar-search { - display: block; - } -} - -.sidebar .nav-link { - font-size: .875rem; - font-weight: 500; -} - -.sidebar .nav-link.active { - color: #2470dc; -} - -.sidebar-heading { - font-size: .75rem; -} - -/* - * Navbar - */ - -.navbar-brand { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(0, 0, 0, .25); - box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25); -} - -.navbar .form-control { - padding: .75rem 1rem; -} diff --git a/site/dist/docs/5.3/examples/dashboard/dashboard.js b/site/dist/docs/5.3/examples/dashboard/dashboard.js deleted file mode 100644 index a60b39356a..0000000000 --- a/site/dist/docs/5.3/examples/dashboard/dashboard.js +++ /dev/null @@ -1,49 +0,0 @@ -/* globals Chart:false */ - -(() => { - 'use strict' - - // Graphs - const ctx = document.getElementById('myChart') - // eslint-disable-next-line no-unused-vars - const myChart = new Chart(ctx, { - type: 'line', - data: { - labels: [ - 'Sunday', - 'Monday', - 'Tuesday', - 'Wednesday', - 'Thursday', - 'Friday', - 'Saturday' - ], - datasets: [{ - data: [ - 15339, - 21345, - 18483, - 24003, - 23489, - 24092, - 12034 - ], - lineTension: 0, - backgroundColor: 'transparent', - borderColor: '#007bff', - borderWidth: 4, - pointBackgroundColor: '#007bff' - }] - }, - options: { - plugins: { - legend: { - display: false - }, - tooltip: { - boxPadding: 3 - } - } - } - }) -})() diff --git a/site/dist/docs/5.3/examples/dashboard/dashboard.rtl.css b/site/dist/docs/5.3/examples/dashboard/dashboard.rtl.css deleted file mode 100644 index 5c8a7e2571..0000000000 --- a/site/dist/docs/5.3/examples/dashboard/dashboard.rtl.css +++ /dev/null @@ -1,48 +0,0 @@ -.bi { - display: inline-block; - width: 1rem; - height: 1rem; -} - -/* - * Sidebar - */ - -@media (min-width: 768px) { - .sidebar .offcanvas-lg { - position: -webkit-sticky; - position: sticky; - top: 48px; - } - .navbar-search { - display: block; - } -} - -.sidebar .nav-link { - font-size: .875rem; - font-weight: 500; -} - -.sidebar .nav-link.active { - color: #2470dc; -} - -.sidebar-heading { - font-size: .75rem; -} - -/* - * Navbar - */ - -.navbar-brand { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(0, 0, 0, .25); - box-shadow: inset 1px 0 0 rgba(0, 0, 0, .25); -} - -.navbar .form-control { - padding: .75rem 1rem; -} diff --git a/site/dist/docs/5.3/examples/dashboard/index.html b/site/dist/docs/5.3/examples/dashboard/index.html deleted file mode 100644 index 2ebdfbcf6e..0000000000 --- a/site/dist/docs/5.3/examples/dashboard/index.html +++ /dev/null @@ -1,34 +0,0 @@ - Dashboard Template · Bootstrap v5.3

Dashboard

Section title

# Header Header Header Header
1,001 random data placeholder text
1,002 placeholder irrelevant visual layout
1,003 data rich dashboard tabular
1,003 information placeholder illustrative data
1,004 text random layout dashboard
1,005 dashboard irrelevant text placeholder
1,006 dashboard illustrative rich data
1,007 placeholder tabular information irrelevant
1,008 random data placeholder text
1,009 placeholder irrelevant visual layout
1,010 data rich dashboard tabular
1,011 information placeholder illustrative data
1,012 text placeholder layout dashboard
1,013 dashboard irrelevant text visual
1,014 dashboard illustrative rich data
1,015 random tabular information text
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/dropdowns/dropdowns.css b/site/dist/docs/5.3/examples/dropdowns/dropdowns.css deleted file mode 100644 index f633e2cd83..0000000000 --- a/site/dist/docs/5.3/examples/dropdowns/dropdowns.css +++ /dev/null @@ -1,71 +0,0 @@ -.dropdown-item-danger { - color: var(--bs-red); -} -.dropdown-item-danger:hover, -.dropdown-item-danger:focus { - color: #fff; - background-color: var(--bs-red); -} -.dropdown-item-danger.active { - background-color: var(--bs-red); -} - -.btn-hover-light { - color: var(--bs-body-color); - background-color: var(--bs-body-bg); -} -.btn-hover-light:hover, -.btn-hover-light:focus { - color: var(--bs-link-hover-color); - background-color: var(--bs-tertiary-bg); -} - -.cal-month, -.cal-days, -.cal-weekdays { - display: grid; - grid-template-columns: repeat(7, 1fr); - align-items: center; -} -.cal-month-name { - grid-column-start: 2; - grid-column-end: 7; - text-align: center; -} -.cal-weekday, -.cal-btn { - display: flex; - flex-shrink: 0; - align-items: center; - justify-content: center; - height: 3rem; - padding: 0; -} -.cal-btn:not([disabled]) { - font-weight: 500; - color: var(--bs-emphasis-color); -} -.cal-btn:hover, -.cal-btn:focus { - background-color: var(--bs-secondary-bg); -} -.cal-btn[disabled] { - border: 0; - opacity: .5; -} - -.w-220px { - width: 220px; -} - -.w-280px { - width: 280px; -} - -.w-340px { - width: 340px; -} - -.opacity-10 { - opacity: .1; -} diff --git a/site/dist/docs/5.3/examples/dropdowns/index.html b/site/dist/docs/5.3/examples/dropdowns/index.html deleted file mode 100644 index dd014f8f0b..0000000000 --- a/site/dist/docs/5.3/examples/dropdowns/index.html +++ /dev/null @@ -1,48 +0,0 @@ - Dropdowns · Bootstrap v5.3
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/features/features.css b/site/dist/docs/5.3/examples/features/features.css deleted file mode 100644 index debc263647..0000000000 --- a/site/dist/docs/5.3/examples/features/features.css +++ /dev/null @@ -1,26 +0,0 @@ -.feature-icon { - width: 4rem; - height: 4rem; - border-radius: .75rem; -} - -.icon-square { - width: 3rem; - height: 3rem; - border-radius: .75rem; -} - -.text-shadow-1 { text-shadow: 0 .125rem .25rem rgba(0, 0, 0, .25); } -.text-shadow-2 { text-shadow: 0 .25rem .5rem rgba(0, 0, 0, .25); } -.text-shadow-3 { text-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .25); } - -.card-cover { - background-repeat: no-repeat; - background-position: center center; - background-size: cover; -} - -.feature-icon-small { - width: 3rem; - height: 3rem; -} diff --git a/site/dist/docs/5.3/examples/features/index.html b/site/dist/docs/5.3/examples/features/index.html deleted file mode 100644 index 97800292b4..0000000000 --- a/site/dist/docs/5.3/examples/features/index.html +++ /dev/null @@ -1,20 +0,0 @@ - Features · Bootstrap v5.3 Bootstrap

Features examples

Hanging icons

Featured title

Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

-Primary button -

Featured title

Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

-Primary button -

Featured title

Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

-Primary button -

Custom cards

Short title, long jacket

  • Bootstrap
  • Earth
  • 3d

Much longer title that wraps to multiple lines

  • Bootstrap
  • Pakistan
  • 4d

Another longer title belongs here

  • Bootstrap
  • California
  • 5d

Icon grid

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Features with title

Left-aligned title explaining these awesome features

Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

Primary button

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

Featured title

Paragraph of text beneath the heading to explain the heading.

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/features/unsplash-photo-1.jpg b/site/dist/docs/5.3/examples/features/unsplash-photo-1.jpg deleted file mode 100644 index 283acd0b4c..0000000000 Binary files a/site/dist/docs/5.3/examples/features/unsplash-photo-1.jpg and /dev/null differ diff --git a/site/dist/docs/5.3/examples/features/unsplash-photo-2.jpg b/site/dist/docs/5.3/examples/features/unsplash-photo-2.jpg deleted file mode 100644 index 81eae64d8e..0000000000 Binary files a/site/dist/docs/5.3/examples/features/unsplash-photo-2.jpg and /dev/null differ diff --git a/site/dist/docs/5.3/examples/features/unsplash-photo-3.jpg b/site/dist/docs/5.3/examples/features/unsplash-photo-3.jpg deleted file mode 100644 index 0f401d1e12..0000000000 Binary files a/site/dist/docs/5.3/examples/features/unsplash-photo-3.jpg and /dev/null differ diff --git a/site/dist/docs/5.3/examples/footers/index.html b/site/dist/docs/5.3/examples/footers/index.html deleted file mode 100644 index 34d5eb5ae8..0000000000 --- a/site/dist/docs/5.3/examples/footers/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Footers · Bootstrap v5.3 Bootstrap
© 2025 Company, Inc
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/grid/grid.css b/site/dist/docs/5.3/examples/grid/grid.css deleted file mode 100644 index cbc7c311fb..0000000000 --- a/site/dist/docs/5.3/examples/grid/grid.css +++ /dev/null @@ -1,13 +0,0 @@ -.themed-grid-col { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(112.520718, 44.062154, 249.437846, .15); - border: 1px solid rgba(112.520718, 44.062154, 249.437846, .3); -} - -.themed-container { - padding: .75rem; - margin-bottom: 1.5rem; - background-color: rgba(112.520718, 44.062154, 249.437846, .15); - border: 1px solid rgba(112.520718, 44.062154, 249.437846, .3); -} diff --git a/site/dist/docs/5.3/examples/grid/index.html b/site/dist/docs/5.3/examples/grid/index.html deleted file mode 100644 index 5591b403c1..0000000000 --- a/site/dist/docs/5.3/examples/grid/index.html +++ /dev/null @@ -1,12 +0,0 @@ - Grid Template · Bootstrap v5.3

Bootstrap grid examples

Basic grid layouts to get you familiar with building within the Bootstrap grid system.

In these examples the .themed-grid-col class is added to the columns to add some theming. This is not a class that is available in Bootstrap by default.

Five grid tiers

There are five tiers to the Bootstrap grid system, one for each range of devices we support. Each tier starts at a minimum viewport size and automatically applies to the larger devices unless overridden.

.col-4
.col-4
.col-4
.col-sm-4
.col-sm-4
.col-sm-4
.col-md-4
.col-md-4
.col-md-4
.col-lg-4
.col-lg-4
.col-lg-4
.col-xl-4
.col-xl-4
.col-xl-4
.col-xxl-4
.col-xxl-4
.col-xxl-4

Three equal columns

Get three equal-width columns starting at desktops and scaling to large desktops. On mobile devices, tablets and below, the columns will automatically stack.

.col-md-4
.col-md-4
.col-md-4

Three equal columns alternative

By using the .row-cols-* classes, you can easily create a grid with equal columns.

.col child of .row-cols-md-3
.col child of .row-cols-md-3
.col child of .row-cols-md-3

Three unequal columns

Get three columns starting at desktops and scaling to large desktops of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.

.col-md-3
.col-md-6
.col-md-3

Two columns

Get two columns starting at desktops and scaling to large desktops.

.col-md-8
.col-md-4

Full width, single column

-No grid classes are necessary for full-width elements. -


Two columns with two nested columns

Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns starting at desktops and scaling to large desktops, with another two (equal widths) within the larger column.

At mobile device sizes, tablets and down, these columns and their nested columns will stack.

-.col-md-8 -
.col-md-6
.col-md-6
.col-md-4

Mixed: mobile and desktop

The Bootstrap v5 grid system has six tiers of classes: xs (extra small, this class infix is not used), sm (small), md (medium), lg (large), xl (x-large), and xxl (xx-large). You can use nearly any combination of these classes to create more dynamic and flexible layouts.

Each tier of classes scales up, meaning if you plan on setting the same widths for md, lg, xl and xxl, you only need to specify md.

.col-md-8
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
.col-6
.col-6

Mixed: mobile, tablet, and desktop

.col-sm-6 .col-lg-8
.col-6 .col-lg-4
.col-6 .col-sm-4
.col-6 .col-sm-4
.col-6 .col-sm-4

Gutters

With .gx-* classes, the horizontal gutters can be adjusted.

.col with .gx-4 gutters
.col with .gx-4 gutters
.col with .gx-4 gutters
.col with .gx-4 gutters
.col with .gx-4 gutters
.col with .gx-4 gutters

Use the .gy-* classes to control the vertical gutters.

.col with .gy-4 gutters
.col with .gy-4 gutters
.col with .gy-4 gutters
.col with .gy-4 gutters
.col with .gy-4 gutters
.col with .gy-4 gutters

With .g-* classes, the gutters in both directions can be adjusted.

.col with .g-3 gutters
.col with .g-3 gutters
.col with .g-3 gutters
.col with .g-3 gutters
.col with .g-3 gutters
.col with .g-3 gutters

Containers

Additional classes added in Bootstrap v4.4 allow containers that are 100% wide until a particular breakpoint. v5 adds a new xxl breakpoint.

.container
.container-sm
.container-md
.container-lg
.container-xl
.container-xxl
.container-fluid
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/headers/headers.css b/site/dist/docs/5.3/examples/headers/headers.css deleted file mode 100644 index f887573feb..0000000000 --- a/site/dist/docs/5.3/examples/headers/headers.css +++ /dev/null @@ -1,15 +0,0 @@ -.form-control-dark { - border-color: var(--bs-gray); -} -.form-control-dark:focus { - border-color: #fff; - box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .25); -} - -.text-small { - font-size: 85%; -} - -.dropdown-toggle:not(:focus) { - outline: 0; -} diff --git a/site/dist/docs/5.3/examples/headers/index.html b/site/dist/docs/5.3/examples/headers/index.html deleted file mode 100644 index 378334a9ed..0000000000 --- a/site/dist/docs/5.3/examples/headers/index.html +++ /dev/null @@ -1,18 +0,0 @@ - Headers · Bootstrap v5.3 Bootstrap

Headers examples





















\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/heroes/bootstrap-docs.png b/site/dist/docs/5.3/examples/heroes/bootstrap-docs.png deleted file mode 100644 index a4e9b9864a..0000000000 Binary files a/site/dist/docs/5.3/examples/heroes/bootstrap-docs.png and /dev/null differ diff --git a/site/dist/docs/5.3/examples/heroes/bootstrap-themes.png b/site/dist/docs/5.3/examples/heroes/bootstrap-themes.png deleted file mode 100644 index 13c32337d6..0000000000 Binary files a/site/dist/docs/5.3/examples/heroes/bootstrap-themes.png and /dev/null differ diff --git a/site/dist/docs/5.3/examples/heroes/heroes.css b/site/dist/docs/5.3/examples/heroes/heroes.css deleted file mode 100644 index e9deaf744f..0000000000 --- a/site/dist/docs/5.3/examples/heroes/heroes.css +++ /dev/null @@ -1,3 +0,0 @@ -@media (min-width: 992px) { - .rounded-lg-3 { border-radius: .3rem; } -} diff --git a/site/dist/docs/5.3/examples/heroes/index.html b/site/dist/docs/5.3/examples/heroes/index.html deleted file mode 100644 index 680564d889..0000000000 --- a/site/dist/docs/5.3/examples/heroes/index.html +++ /dev/null @@ -1,9 +0,0 @@ - Heroes · Bootstrap v5.3

Heroes examples

Centered hero

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

Centered screenshot

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

Example image
Bootstrap Themes

Responsive left-aligned hero with image

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

Vertically centered hero sign-up form

Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.


By clicking Sign up, you agree to the terms of use.

Border hero with cropped image and shadows

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

Dark color hero

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/index.html b/site/dist/docs/5.3/examples/index.html deleted file mode 100644 index 8765d58eb9..0000000000 --- a/site/dist/docs/5.3/examples/index.html +++ /dev/null @@ -1,28 +0,0 @@ - Examples · Bootstrap v5.3

Examples

Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts.

Starters

Functional examples of using Bootstrap in common JS frameworks like Webpack, Parcel, Vite, and more you can edit in StackBlitz.

Sass & JS

Use npm to import and compile Bootstrap's Sass with Autoprefixer and Stylelint, plus our bundled JavaScript.

Edit in StackBlitz

React

Import and bundle Bootstrap's source Sass and JavaScript with React, Next.js, and React Bootstrap.

Edit in StackBlitz

Snippets

Common patterns for building sites and apps that build on existing components and utilities with custom CSS and more.

Headers

Display your branding, navigation, search, and more with these header components

Heroes

Set the stage on your homepage with heroes that feature clear calls to action.

Features

Explain the features, benefits, or other details in your marketing content.

Sidebars

Common navigation patterns ideal for offcanvas or multi-column layouts.

Footers

Finish every page strong with an awesome footer, big or small.

Dropdowns

Enhance your dropdowns with filters, icons, custom styles, and more.

List groups

Extend list groups with utilities and custom styles for any content.

Modals

Transform modals to serve any purpose, from feature tours to dialogs.

Badges

Make badges work with custom inner HTML and new looks.

Breadcrumbs

Integrate custom icons and create stepper components.

Buttons

Create custom buttons for just about any use case with utilities.

Jumbotrons

Create modernized versions of the classic Bootstrap component.

Custom Components

Brand-new components and templates to help folks quickly get started with Bootstrap and demonstrate best practices for adding onto the framework.

Album

Simple one-page template for photo galleries, portfolios, and more.

Pricing

Example pricing page built with Cards and featuring a custom header and footer.

Checkout

Custom checkout form showing our form components and their validation features.

Product

Lean product-focused marketing page with extensive grid and image work.

Cover

A one-page template for building simple and beautiful home pages.

Carousel

Customize the navbar and carousel, then add some new components.

Blog

Magazine like blog template with header, navigation, featured content.

Dashboard

Basic admin dashboard shell with fixed sidebar and navbar.

Sign-in

Custom form layout and design for a simple sign in form.

Sticky footer

Attach a footer to the bottom of the viewport when page content is short.

Jumbotron

Use utilities to recreate and enhance Bootstrap 4's jumbotron.

Framework

Examples that focus on implementing uses of built-in components provided by Bootstrap.

Grid

Multiple examples of grid layouts with all four tiers, nesting, and more.

Taking the default navbar component and showing how it can be moved, placed, and extended.

Navbars

Demonstration of all responsive and container options for the navbar.

Navbar static

Single navbar example of a static top navbar along with some additional content.

Navbar fixed

Single navbar example with a fixed top navbar along with some additional content.

Navbar bottom

Single navbar example with a bottom navbar along with some additional content.

Offcanvas navbar

Turn your expandable navbar into a sliding offcanvas menu (doesn't use our offcanvas component).

RTL

See Bootstrap's RTL version in action with these modified Custom Components examples.

RTL is still experimental and will evolve with feedback. Spotted something or have an - improvement to suggest? -

Please open an issue.

Album RTL

Simple one-page template for photo galleries, portfolios, and more.

Checkout RTL

Custom checkout form showing our form components and their validation features.

Carousel RTL

Customize the navbar and carousel, then add some new components.

Blog RTL

Magazine like blog template with header, navigation, featured content.

Dashboard RTL

Basic admin dashboard shell with fixed sidebar and navbar.

Integrations

Integrations with external libraries.

Masonry

Combine the powers of the Bootstrap grid and the Masonry layout.


Go further with Bootstrap Themes

-Need something more than these examples? Take Bootstrap to the next level with premium themes from the official Bootstrap Themes marketplace. They’re built as their own extended frameworks, rich with new components and plugins, documentation, and - powerful build tools. -

Browse themes
Bootstrap Themes
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/jumbotron/index.html b/site/dist/docs/5.3/examples/jumbotron/index.html deleted file mode 100644 index 380378bbbd..0000000000 --- a/site/dist/docs/5.3/examples/jumbotron/index.html +++ /dev/null @@ -1,9 +0,0 @@ - Jumbotron example · Bootstrap v5.3
Bootstrap Jumbotron example

Custom jumbotron

Using a series of utilities, you can create this jumbotron, just like the one in previous versions of Bootstrap. Check out the examples below for how you can remix and restyle it to your liking.

Change the background

Swap the background-color utility and add a `.text-*` color utility to mix up the jumbotron look. Then, mix and match with additional component themes and more.

Add borders

Or, keep it light and add a border for some added definition to the boundaries of your content. Be sure to look under the hood at the source HTML here as we've adjusted the alignment and sizing of both column's content for equal-height.

-© 2025
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/jumbotrons/index.html b/site/dist/docs/5.3/examples/jumbotrons/index.html deleted file mode 100644 index afe91c0b2a..0000000000 --- a/site/dist/docs/5.3/examples/jumbotrons/index.html +++ /dev/null @@ -1,22 +0,0 @@ - Jumbotrons · Bootstrap v5.3 Bootstrap

Jumbotron with icon

-This is a custom jumbotron featuring an SVG image at the top, some longer text that wraps early thanks to a responsive .col-* class, and a customized call to action. -

Placeholder jumbotron

-This faded back jumbotron is useful for placeholder content. It's also a great way to add a bit of context to a page or section when no content is available and to encourage visitors to take a specific action. -

Full-width jumbotron

-This takes the basic jumbotron above and makes its background edge-to-edge with a .container inside to align content. Similar to above, it's been recreated with built-in grid and utility classes. -

Basic jumbotron

-This is a simple Bootstrap jumbotron that sits within a .container, recreated with built-in utility classes. -

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/jumbotrons/jumbotrons.css b/site/dist/docs/5.3/examples/jumbotrons/jumbotrons.css deleted file mode 100644 index d7d065ed64..0000000000 --- a/site/dist/docs/5.3/examples/jumbotrons/jumbotrons.css +++ /dev/null @@ -1 +0,0 @@ -.border-dashed { --bs-border-style: dashed; } diff --git a/site/dist/docs/5.3/examples/list-groups/index.html b/site/dist/docs/5.3/examples/list-groups/index.html deleted file mode 100644 index 86cb6b2c8f..0000000000 --- a/site/dist/docs/5.3/examples/list-groups/index.html +++ /dev/null @@ -1,36 +0,0 @@ - List groups · Bootstrap v5.3
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/list-groups/list-groups.css b/site/dist/docs/5.3/examples/list-groups/list-groups.css deleted file mode 100644 index b90cfa0655..0000000000 --- a/site/dist/docs/5.3/examples/list-groups/list-groups.css +++ /dev/null @@ -1,63 +0,0 @@ -.list-group { - width: 100%; - max-width: 460px; - margin-inline: 1.5rem; -} - -.form-check-input:checked + .form-checked-content { - opacity: .5; -} - -.form-check-input-placeholder { - border-style: dashed; -} -[contenteditable]:focus { - outline: 0; -} - -.list-group-checkable .list-group-item { - cursor: pointer; -} -.list-group-item-check { - position: absolute; - clip: rect(0, 0, 0, 0); -} -.list-group-item-check:hover + .list-group-item { - background-color: var(--bs-secondary-bg); -} -.list-group-item-check:checked + .list-group-item { - color: #fff; - background-color: var(--bs-primary); - border-color: var(--bs-primary); -} -.list-group-item-check[disabled] + .list-group-item, -.list-group-item-check:disabled + .list-group-item { - pointer-events: none; - filter: none; - opacity: .5; -} - -.list-group-radio .list-group-item { - cursor: pointer; - border-radius: .5rem; -} -.list-group-radio .form-check-input { - z-index: 2; - margin-top: -.5em; -} -.list-group-radio .list-group-item:hover, -.list-group-radio .list-group-item:focus { - background-color: var(--bs-secondary-bg); -} - -.list-group-radio .form-check-input:checked + .list-group-item { - background-color: var(--bs-body); - border-color: var(--bs-primary); - box-shadow: 0 0 0 2px var(--bs-primary); -} -.list-group-radio .form-check-input[disabled] + .list-group-item, -.list-group-radio .form-check-input:disabled + .list-group-item { - pointer-events: none; - filter: none; - opacity: .5; -} diff --git a/site/dist/docs/5.3/examples/masonry/index.html b/site/dist/docs/5.3/examples/masonry/index.html deleted file mode 100644 index d68949bdfe..0000000000 --- a/site/dist/docs/5.3/examples/masonry/index.html +++ /dev/null @@ -1,13 +0,0 @@ - Masonry example · Bootstrap v5.3

Bootstrap and Masonry

Integrate Masonry with the Bootstrap grid system and cards component.

Masonry is not included in Bootstrap. Add it by including the JavaScript plugin manually, or using a CDN like so:


-<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js" integrity="sha384-GNFwBvfVxBkLMJpYMOABq3c+d3KnQxudP/mGPkzpZSTYykLBNsZEnG2D9G/X/+7D" crossorigin="anonymous" async></script>
-  

By adding data-masonry='}"percentPosition": true }' to the .row wrapper, we can combine the powers of Bootstrap's responsive grid and Masonry's positioning.


PlaceholderImage cap
Card title that wraps to a new line

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

A well-known quote, contained in a blockquote element.

PlaceholderImage cap
Card title

This card has supporting text below as a natural lead-in to additional content.

Last updated 3 mins ago

A well-known quote, contained in a blockquote element.

Card title

This card has a regular title and short paragraph of text below it.

Last updated 3 mins ago

PlaceholderCard image

A well-known quote, contained in a blockquote element.

Card title

This is another card with title and supporting text below. This card has some additional content to make it slightly taller overall.

Last updated 3 mins ago

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/modals/index.html b/site/dist/docs/5.3/examples/modals/index.html deleted file mode 100644 index 29d0b372f9..0000000000 --- a/site/dist/docs/5.3/examples/modals/index.html +++ /dev/null @@ -1,20 +0,0 @@ - Modals · Bootstrap v5.3
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/modals/modals.css b/site/dist/docs/5.3/examples/modals/modals.css deleted file mode 100644 index 194e16aca6..0000000000 --- a/site/dist/docs/5.3/examples/modals/modals.css +++ /dev/null @@ -1,7 +0,0 @@ -.modal-sheet .modal-dialog { - width: 380px; - transition: bottom .75s ease-in-out; -} -.modal-sheet .modal-footer { - padding-bottom: 2rem; -} diff --git a/site/dist/docs/5.3/examples/navbar-bottom/index.html b/site/dist/docs/5.3/examples/navbar-bottom/index.html deleted file mode 100644 index 51a62031f9..0000000000 --- a/site/dist/docs/5.3/examples/navbar-bottom/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Bottom navbar example · Bootstrap v5.3

Bottom Navbar example

This example is a quick exercise to illustrate how the bottom navbar works.

View navbar docs »
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/navbar-fixed/index.html b/site/dist/docs/5.3/examples/navbar-fixed/index.html deleted file mode 100644 index 8485706c14..0000000000 --- a/site/dist/docs/5.3/examples/navbar-fixed/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Fixed top navbar example · Bootstrap v5.3

Navbar example

This example is a quick exercise to illustrate how fixed to top navbar works. As you scroll, it will remain fixed to the top of your browser’s viewport.

View navbar docs »
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/navbar-fixed/navbar-fixed.css b/site/dist/docs/5.3/examples/navbar-fixed/navbar-fixed.css deleted file mode 100644 index c77c0c1475..0000000000 --- a/site/dist/docs/5.3/examples/navbar-fixed/navbar-fixed.css +++ /dev/null @@ -1,5 +0,0 @@ -/* Show it is fixed to the top */ -body { - min-height: 75rem; - padding-top: 4.5rem; -} diff --git a/site/dist/docs/5.3/examples/navbar-static/index.html b/site/dist/docs/5.3/examples/navbar-static/index.html deleted file mode 100644 index 15c0180296..0000000000 --- a/site/dist/docs/5.3/examples/navbar-static/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Top navbar example · Bootstrap v5.3

Navbar example

This example is a quick exercise to illustrate how the top-aligned navbar works. As you scroll, this navbar remains in its original position and moves with the rest of the page.

View navbar docs »
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/navbar-static/navbar-static.css b/site/dist/docs/5.3/examples/navbar-static/navbar-static.css deleted file mode 100644 index 25bbdde094..0000000000 --- a/site/dist/docs/5.3/examples/navbar-static/navbar-static.css +++ /dev/null @@ -1,4 +0,0 @@ -/* Show it's not fixed to the top */ -body { - min-height: 75rem; -} diff --git a/site/dist/docs/5.3/examples/navbars-offcanvas/index.html b/site/dist/docs/5.3/examples/navbars-offcanvas/index.html deleted file mode 100644 index b305a43d06..0000000000 --- a/site/dist/docs/5.3/examples/navbars-offcanvas/index.html +++ /dev/null @@ -1,14 +0,0 @@ - Navbar Template · Bootstrap v5.3

Navbar with offcanvas examples

This example shows how responsive offcanvas menus work within the navbar. For positioning of navbars, checkout the top and fixed top examples.

From the top down, you'll see a dark navbar, light navbar and a responsive navbar—each with offcanvases built in. Resize your browser window to the large breakpoint to see the toggle for the offcanvas.

Learn more about offcanvas navbars »

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/navbars-offcanvas/navbars-offcanvas.css b/site/dist/docs/5.3/examples/navbars-offcanvas/navbars-offcanvas.css deleted file mode 100644 index 70d209409d..0000000000 --- a/site/dist/docs/5.3/examples/navbars-offcanvas/navbars-offcanvas.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - padding-bottom: 20px; -} - -.navbar { - margin-bottom: 20px; -} diff --git a/site/dist/docs/5.3/examples/navbars/index.html b/site/dist/docs/5.3/examples/navbars/index.html deleted file mode 100644 index 55068f26db..0000000000 --- a/site/dist/docs/5.3/examples/navbars/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Navbar Template · Bootstrap v5.3

Matching .container-xl...

Navbar examples

This example is a quick exercise to illustrate how the navbar and its contents work. Some navbars extend the width of the viewport, others are confined within a .container. For positioning of navbars, checkout the top and fixed top examples.

At the smallest breakpoint, the collapse plugin is used to hide the links and show a menu button to toggle the collapsed content.

View navbar docs »

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/navbars/navbars.css b/site/dist/docs/5.3/examples/navbars/navbars.css deleted file mode 100644 index 70d209409d..0000000000 --- a/site/dist/docs/5.3/examples/navbars/navbars.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - padding-bottom: 20px; -} - -.navbar { - margin-bottom: 20px; -} diff --git a/site/dist/docs/5.3/examples/offcanvas-navbar/index.html b/site/dist/docs/5.3/examples/offcanvas-navbar/index.html deleted file mode 100644 index 9955daec6b..0000000000 --- a/site/dist/docs/5.3/examples/offcanvas-navbar/index.html +++ /dev/null @@ -1,16 +0,0 @@ - Offcanvas navbar template · Bootstrap v5.3

Bootstrap

Since 2011
Recent updates
Placeholder32x32

@username -Some representative placeholder content, with some information about this user. Imagine this being some sort of status update, perhaps? -

Placeholder32x32

@username -Some more representative placeholder content, related to this other user. Another status update, perhaps. -

Placeholder32x32

@username -This user also gets some representative placeholder content. Maybe they did something interesting, and you really want to highlight this in the recent updates. -

All updates
Suggestions
Placeholder32x32
Full Name Follow
@username
Placeholder32x32
Full Name Follow
@username
Placeholder32x32
Full Name Follow
@username
All suggestions
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/offcanvas-navbar/offcanvas-navbar.css b/site/dist/docs/5.3/examples/offcanvas-navbar/offcanvas-navbar.css deleted file mode 100644 index f855b96a55..0000000000 --- a/site/dist/docs/5.3/examples/offcanvas-navbar/offcanvas-navbar.css +++ /dev/null @@ -1,52 +0,0 @@ -html, -body { - overflow-x: hidden; /* Prevent scroll on narrow devices */ -} - -body { - padding-top: 56px; -} - -@media (max-width: 991.98px) { - .offcanvas-collapse { - position: fixed; - top: 56px; /* Height of navbar */ - bottom: 0; - left: 100%; - width: 100%; - padding-right: 1rem; - padding-left: 1rem; - overflow-y: auto; - visibility: hidden; - background-color: #343a40; - transition: transform .3s ease-in-out, visibility .3s ease-in-out; - } - .offcanvas-collapse.open { - visibility: visible; - transform: translateX(-100%); - } -} - -.nav-scroller .nav { - color: rgba(255, 255, 255, .75); -} - -.nav-scroller .nav-link { - padding-top: .75rem; - padding-bottom: .75rem; - font-size: .875rem; - color: #6c757d; -} - -.nav-scroller .nav-link:hover { - color: #007bff; -} - -.nav-scroller .active { - font-weight: 500; - color: #343a40; -} - -.bg-purple { - background-color: #6f42c1; -} diff --git a/site/dist/docs/5.3/examples/offcanvas-navbar/offcanvas-navbar.js b/site/dist/docs/5.3/examples/offcanvas-navbar/offcanvas-navbar.js deleted file mode 100644 index b97a171648..0000000000 --- a/site/dist/docs/5.3/examples/offcanvas-navbar/offcanvas-navbar.js +++ /dev/null @@ -1,7 +0,0 @@ -(() => { - 'use strict' - - document.querySelector('#navbarSideCollapse').addEventListener('click', () => { - document.querySelector('.offcanvas-collapse').classList.toggle('open') - }) -})() diff --git a/site/dist/docs/5.3/examples/offcanvas/index.html b/site/dist/docs/5.3/examples/offcanvas/index.html deleted file mode 100644 index 89e364da0c..0000000000 --- a/site/dist/docs/5.3/examples/offcanvas/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/examples/pricing/index.html b/site/dist/docs/5.3/examples/pricing/index.html deleted file mode 100644 index 946b1fce49..0000000000 --- a/site/dist/docs/5.3/examples/pricing/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Pricing example · Bootstrap v5.3 Check

Pricing

Quickly build an effective pricing table for your potential customers with this Bootstrap example. It’s built with default Bootstrap components and utilities with little customization.

Free

$0/mo

  • 10 users included
  • 2 GB of storage
  • Email support
  • Help center access

Pro

$15/mo

  • 20 users included
  • 10 GB of storage
  • Priority email support
  • Help center access

Enterprise

$29/mo

  • 30 users included
  • 15 GB of storage
  • Phone and email support
  • Help center access

Compare plans

Free Pro Enterprise
Public
Private
Permissions
Sharing
Unlimited members
Extra security
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/pricing/pricing.css b/site/dist/docs/5.3/examples/pricing/pricing.css deleted file mode 100644 index c65d0208f3..0000000000 --- a/site/dist/docs/5.3/examples/pricing/pricing.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - background-image: linear-gradient(180deg, var(--bs-secondary-bg), var(--bs-body-bg) 100px, var(--bs-body-bg)); -} - -.container { - max-width: 960px; -} - -.pricing-header { - max-width: 700px; -} diff --git a/site/dist/docs/5.3/examples/product/index.html b/site/dist/docs/5.3/examples/product/index.html deleted file mode 100644 index 341246310a..0000000000 --- a/site/dist/docs/5.3/examples/product/index.html +++ /dev/null @@ -1,14 +0,0 @@ - Product example · Bootstrap v5.3

Designed for engineers

Build anything you want with Aperture

Another headline

And an even wittier subheading.

Another headline

And an even wittier subheading.

Another headline

And an even wittier subheading.

Another headline

And an even wittier subheading.

Another headline

And an even wittier subheading.

Another headline

And an even wittier subheading.

Another headline

And an even wittier subheading.

Another headline

And an even wittier subheading.

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/product/product.css b/site/dist/docs/5.3/examples/product/product.css deleted file mode 100644 index 6c90ae51ec..0000000000 --- a/site/dist/docs/5.3/examples/product/product.css +++ /dev/null @@ -1,74 +0,0 @@ -.container { - max-width: 960px; -} - -.icon-link > .bi { - width: .75em; - height: .75em; -} - -/* - * Custom translucent site header - */ - -.site-header { - background-color: rgba(0, 0, 0, .85); - -webkit-backdrop-filter: saturate(180%) blur(20px); - backdrop-filter: saturate(180%) blur(20px); -} -.site-header a { - color: #8e8e8e; - transition: color .15s ease-in-out; -} -.site-header a:hover { - color: #fff; - text-decoration: none; -} - -/* - * Dummy devices (replace them with your own or something else entirely!) - */ - -.product-device { - position: absolute; - right: 10%; - bottom: -30%; - width: 300px; - height: 540px; - background-color: #333; - border-radius: 21px; - transform: rotate(30deg); -} - -.product-device::before { - position: absolute; - top: 10%; - right: 10px; - bottom: 10%; - left: 10px; - content: ""; - background-color: rgba(255, 255, 255, .1); - border-radius: 5px; -} - -.product-device-2 { - top: -25%; - right: auto; - bottom: 0; - left: 5%; - background-color: #e5e5e5; -} - - -/* - * Extra utilities - */ - -.flex-equal > * { - flex: 1; -} -@media (min-width: 768px) { - .flex-md-equal > * { - flex: 1; - } -} diff --git a/site/dist/docs/5.3/examples/sidebars/index.html b/site/dist/docs/5.3/examples/sidebars/index.html deleted file mode 100644 index 27663e820d..0000000000 --- a/site/dist/docs/5.3/examples/sidebars/index.html +++ /dev/null @@ -1,36 +0,0 @@ - Sidebars · Bootstrap v5.3 Bootstrap

Sidebars examples

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/sidebars/sidebars.css b/site/dist/docs/5.3/examples/sidebars/sidebars.css deleted file mode 100644 index f6a8f1c53d..0000000000 --- a/site/dist/docs/5.3/examples/sidebars/sidebars.css +++ /dev/null @@ -1,63 +0,0 @@ -body { - min-height: 100vh; - min-height: -webkit-fill-available; -} - -html { - height: -webkit-fill-available; -} - -main { - height: 100vh; - height: -webkit-fill-available; - max-height: 100vh; - overflow-x: auto; - overflow-y: hidden; -} - -.dropdown-toggle { outline: 0; } - -.btn-toggle { - padding: .25rem .5rem; - font-weight: 600; - color: var(--bs-emphasis-color); - background-color: transparent; -} -.btn-toggle:hover, -.btn-toggle:focus { - color: rgba(var(--bs-emphasis-color-rgb), .85); - background-color: var(--bs-tertiary-bg); -} - -.btn-toggle::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - transform-origin: .5em 50%; -} - -[data-bs-theme="dark"] .btn-toggle::before { - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); -} - -.btn-toggle[aria-expanded="true"] { - color: rgba(var(--bs-emphasis-color-rgb), .85); -} -.btn-toggle[aria-expanded="true"]::before { - transform: rotate(90deg); -} - -.btn-toggle-nav a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-left: 1.25rem; -} -.btn-toggle-nav a:hover, -.btn-toggle-nav a:focus { - background-color: var(--bs-tertiary-bg); -} - -.scrollarea { - overflow-y: auto; -} diff --git a/site/dist/docs/5.3/examples/sidebars/sidebars.js b/site/dist/docs/5.3/examples/sidebars/sidebars.js deleted file mode 100644 index 4075f1f155..0000000000 --- a/site/dist/docs/5.3/examples/sidebars/sidebars.js +++ /dev/null @@ -1,8 +0,0 @@ -/* global bootstrap: false */ -(() => { - 'use strict' - const tooltipTriggerList = Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')) - tooltipTriggerList.forEach(tooltipTriggerEl => { - new bootstrap.Tooltip(tooltipTriggerEl) - }) -})() diff --git a/site/dist/docs/5.3/examples/sign-in/index.html b/site/dist/docs/5.3/examples/sign-in/index.html deleted file mode 100644 index d6e7f8bda3..0000000000 --- a/site/dist/docs/5.3/examples/sign-in/index.html +++ /dev/null @@ -1,10 +0,0 @@ - Signin Template · Bootstrap v5.3

Please sign in

© 2017–2025

\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/sign-in/sign-in.css b/site/dist/docs/5.3/examples/sign-in/sign-in.css deleted file mode 100644 index 641f6d906e..0000000000 --- a/site/dist/docs/5.3/examples/sign-in/sign-in.css +++ /dev/null @@ -1,25 +0,0 @@ -html, -body { - height: 100%; -} - -.form-signin { - max-width: 330px; - padding: 1rem; -} - -.form-signin .form-floating:focus-within { - z-index: 2; -} - -.form-signin input[type="email"] { - margin-bottom: -1px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.form-signin input[type="password"] { - margin-bottom: 10px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} diff --git a/site/dist/docs/5.3/examples/starter-template/index.html b/site/dist/docs/5.3/examples/starter-template/index.html deleted file mode 100644 index 4d0a6308a4..0000000000 --- a/site/dist/docs/5.3/examples/starter-template/index.html +++ /dev/null @@ -1,27 +0,0 @@ - Starter Template · Bootstrap v5.3 Bootstrap
Starter template

Get started with Bootstrap

Quickly and easily get started with Bootstrap's compiled, production-ready files with this barebones example featuring some basic HTML and helpful links. Download all our examples to get started.


Starter projects

Ready to go beyond the starter template? Check out these open source projects that you can quickly duplicate to a new GitHub repository.

Guides

Read more detailed instructions and documentation on using or contributing to Bootstrap.

-Created by the Bootstrap team · © 2025
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/sticky-footer-navbar/index.html b/site/dist/docs/5.3/examples/sticky-footer-navbar/index.html deleted file mode 100644 index adae1b108a..0000000000 --- a/site/dist/docs/5.3/examples/sticky-footer-navbar/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Sticky Footer Navbar Template · Bootstrap v5.3

Sticky footer with fixed navbar

Pin a footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added with padding-top: 60px; on the main > .container.

Back to the default sticky footer minus the navbar.

Place sticky footer content here.
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/sticky-footer-navbar/sticky-footer-navbar.css b/site/dist/docs/5.3/examples/sticky-footer-navbar/sticky-footer-navbar.css deleted file mode 100644 index 3087ead7db..0000000000 --- a/site/dist/docs/5.3/examples/sticky-footer-navbar/sticky-footer-navbar.css +++ /dev/null @@ -1,7 +0,0 @@ -/* Custom page CSS --------------------------------------------------- */ -/* Not required for template or sticky footer method. */ - -main > .container { - padding: 60px 15px 0; -} diff --git a/site/dist/docs/5.3/examples/sticky-footer/index.html b/site/dist/docs/5.3/examples/sticky-footer/index.html deleted file mode 100644 index 6a6efedc42..0000000000 --- a/site/dist/docs/5.3/examples/sticky-footer/index.html +++ /dev/null @@ -1,8 +0,0 @@ - Sticky Footer Template · Bootstrap v5.3

Sticky footer

Pin a footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.

Use the sticky footer with a fixed navbar if need be, too.

Place sticky footer content here.
\ No newline at end of file diff --git a/site/dist/docs/5.3/examples/sticky-footer/sticky-footer.css b/site/dist/docs/5.3/examples/sticky-footer/sticky-footer.css deleted file mode 100644 index f8be437294..0000000000 --- a/site/dist/docs/5.3/examples/sticky-footer/sticky-footer.css +++ /dev/null @@ -1,9 +0,0 @@ -/* Custom page CSS --------------------------------------------------- */ -/* Not required for template or sticky footer method. */ - -.container { - width: auto; - max-width: 680px; - padding: 0 15px; -} diff --git a/site/dist/docs/5.3/extend/approach/index.html b/site/dist/docs/5.3/extend/approach/index.html deleted file mode 100644 index 5e83dea386..0000000000 --- a/site/dist/docs/5.3/extend/approach/index.html +++ /dev/null @@ -1,71 +0,0 @@ - Approach · Bootstrap v5.3

Learn about the guiding principles, strategies, and techniques used to build and maintain Bootstrap so you can more easily customize and extend it yourself.

While the getting started pages provide an introductory tour of the project and what it offers, this document focuses on why we do the things we do in Bootstrap. It explains our philosophy to building on the web so that others can learn from us, contribute with us, and help us improve.

-

See something that doesn't sound right, or perhaps could be done better? Open an issue—we'd love to discuss it with you.

-

Summary

-

We'll dive into each of these more throughout, but at a high level, here's what guides our approach.

-
    -
  • Components should be responsive and mobile-first
  • -
  • Components should be built with a base class and extended via modifier classes
  • -
  • Component states should obey a common z-index scale
  • -
  • Whenever possible, prefer an HTML and CSS implementation over JavaScript
  • -
  • Whenever possible, use utilities over custom styles
  • -
  • Whenever possible, avoid enforcing strict HTML requirements (children selectors)
  • -
-

Responsive

-

Bootstrap's responsive styles are built to be responsive, an approach that's often referred to as mobile-first. We use this term in our docs and largely agree with it, but at times it can be too broad. While not every component must be entirely responsive in Bootstrap, this responsive approach is about reducing CSS overrides by pushing you to add styles as the viewport becomes larger.

-

Across Bootstrap, you'll see this most clearly in our media queries. In most cases, we use min-width queries that begin to apply at a specific breakpoint and carry up through the higher breakpoints. For example, a .d-none applies from min-width: 0 to infinity. On the other hand, a .d-md-none applies from the medium breakpoint and up.

-

At times we'll use max-width when a component's inherent complexity requires it. At times, these overrides are functionally and mentally clearer to implement and support than rewriting core functionality from our components. We strive to limit this approach, but will use it from time to time.

-

Classes

-

Aside from our Reboot, a cross-browser normalization stylesheet, all our styles aim to use classes as selectors. This means steering clear of type selectors (e.g., input[type="text"]) and extraneous parent classes (e.g., .parent .child) that make styles too specific to easily override.

-

As such, components should be built with a base class that houses common, not-to-be overridden property-value pairs. For example, .btn and .btn-primary. We use .btn for all the common styles like display, padding, and border-width. We then use modifiers like .btn-primary to add the color, background-color, border-color, etc.

-

Modifier classes should only be used when there are multiple properties or values to be changed across multiple variants. Modifiers are not always necessary, so be sure you're actually saving lines of code and preventing unnecessary overrides when creating them. Good examples of modifiers are our theme color classes and size variants.

-

z-index scales

-

There are two z-index scales in Bootstrap—elements within a component and overlay components.

-

Component elements

-
    -
  • Some components in Bootstrap are built with overlapping elements to prevent double borders without modifying the border property. For example, button groups, input groups, and pagination.
  • -
  • These components share a standard z-index scale of 0 through 3.
  • -
  • 0 is default (initial), 1 is :hover, 2 is :active/.active, and 3 is :focus.
  • -
  • This approach matches our expectations of highest user priority. If an element is focused, it's in view and at the user's attention. Active elements are second highest because they indicate state. Hover is third highest because it indicates user intent, but nearly anything can be hovered.
  • -
-

Overlay components

-

Bootstrap includes several components that function as an overlay of some kind. This includes, in order of highest z-index, dropdowns, fixed and sticky navbars, modals, tooltips, and popovers. These components have their own z-index scale that begins at 1000. This starting number was chosen arbitrarily and serves as a small buffer between our styles and your project's custom styles.

-

Each overlay component increases its z-index value slightly in such a way that common UI principles allow user focused or hovered elements to remain in view at all times. For example, a modal is document blocking (e.g., you cannot take any other action save for the modal's action), so we put that above our navbars.

-

Learn more about this in our z-index layout page.

-

HTML and CSS over JS

-

Whenever possible, we prefer to write HTML and CSS over JavaScript. In general, HTML and CSS are more prolific and accessible to more people of all different experience levels. HTML and CSS are also faster in your browser than JavaScript, and your browser generally provides a great deal of functionality for you.

-

This principle is our first-class JavaScript API using data attributes. You don't need to write nearly any JavaScript to use our JavaScript plugins; instead, write HTML. Read more about this in our JavaScript overview page.

-

Lastly, our styles build on the fundamental behaviors of common web elements. Whenever possible, we prefer to use what the browser provides. For example, you can put a .btn class on nearly any element, but most elements don't provide any semantic value or browser functionality. So instead, we use <button>s and <a>s.

-

The same goes for more complex components. While we could write our own form validation plugin to add classes to a parent element based on an input's state, thereby allowing us to style the text say red, we prefer using the :valid/:invalid pseudo-elements every browser provides us.

-

Utilities

-

Utility classes—formerly helpers in Bootstrap 3—are a powerful ally in combating CSS bloat and poor page performance. A utility class is typically a single, immutable property-value pairing expressed as a class (e.g., .d-block represents display: block;). Their primary appeal is speed of use while writing HTML and limiting the amount of custom CSS you have to write.

-

Specifically regarding custom CSS, utilities can help combat increasing file size by reducing your most commonly repeated property-value pairs into single classes. This can have a dramatic effect at scale in your projects.

-

Flexible HTML

-

While not always possible, we strive to avoid being overly dogmatic in our HTML requirements for components. Thus, we focus on single classes in our CSS selectors and try to avoid immediate children selectors (>). This gives you more flexibility in your implementation and helps keep our CSS simpler and less specific.

-

Code conventions

-

Code Guide (from Bootstrap co-creator, @mdo) documents how we write our HTML and CSS across Bootstrap. It specifies guidelines for general formatting, common sense defaults, property and attribute orders, and more.

-

We use Stylelint to enforce these standards and more in our Sass/CSS. Our custom Stylelint config is open source and available for others to use and extend.

-

We use vnu-jar to enforce standard and semantic HTML, as well as detecting common errors.

\ No newline at end of file diff --git a/site/dist/docs/5.3/extend/icons/index.html b/site/dist/docs/5.3/extend/icons/index.html deleted file mode 100644 index 9ac3b6630a..0000000000 --- a/site/dist/docs/5.3/extend/icons/index.html +++ /dev/null @@ -1,36 +0,0 @@ - Icons · Bootstrap v5.3

Guidance and suggestions for using external icon libraries with Bootstrap.

While Bootstrap doesn't include an icon set by default, we do have our own comprehensive icon library called Bootstrap Icons. Feel free to use them or any other icon set in your project. We've included details for Bootstrap Icons and other preferred icon sets below.

-

While most icon sets include multiple file formats, we prefer SVG implementations for their improved accessibility and vector support.

-

Bootstrap Icons

-

Bootstrap Icons is a growing library of SVG icons that are designed by @mdo and maintained by the Bootstrap Team. The beginnings of this icon set come from Bootstrap's very own components—our forms, carousels, and more. Bootstrap has very few icon needs out of the box, so we didn't need much. However, once we got going, we couldn't stop making more.

-

Oh, and did we mention they're completely open source? Licensed under MIT, just like Bootstrap, our icon set is available to everyone.

-

Learn more about Bootstrap Icons, including how to install them and recommended usage.

-

Alternatives

-

We've tested and used these icon sets ourselves as preferred alternatives to Bootstrap Icons.

- -

More options

-

While we haven't tried these out ourselves, they do look promising and provide multiple formats, including SVG.

-
\ No newline at end of file diff --git a/site/dist/docs/5.3/extend/index.html b/site/dist/docs/5.3/extend/index.html deleted file mode 100644 index 19857e5ab3..0000000000 --- a/site/dist/docs/5.3/extend/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/forms/checks-radios/index.html b/site/dist/docs/5.3/forms/checks-radios/index.html deleted file mode 100644 index e173ea6676..0000000000 --- a/site/dist/docs/5.3/forms/checks-radios/index.html +++ /dev/null @@ -1,496 +0,0 @@ - Checks and radios · Bootstrap v5.3

Checks and radios

Create consistent cross-browser and cross-device checkboxes and radios with our completely rewritten checks component.

Approach

-

Browser default checkboxes and radios are replaced with the help of .form-check, a series of classes for both input types that improves the layout and behavior of their HTML elements, that provide greater customization and cross browser consistency. Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.

-

Structurally, our <input>s and <label>s are sibling elements as opposed to an <input> within a <label>. This is slightly more verbose as you must specify id and for attributes to relate the <input> and <label>. We use the sibling selector (~) for all our <input> states, like :checked or :disabled. When combined with the .form-check-label class, we can easily style the text for each item based on the <input>'s state.

-

Our checks use custom Bootstrap icons to indicate checked or indeterminate states.

-

Checks

-
- - -
-
- - -
html
<div class="form-check">
-<input class="form-check-input" type="checkbox" value="" id="checkDefault">
-<label class="form-check-label" for="checkDefault">
-  Default checkbox
-</label>
-</div>
-<div class="form-check">
-<input class="form-check-input" type="checkbox" value="" id="checkChecked" checked>
-<label class="form-check-label" for="checkChecked">
-  Checked checkbox
-</label>
-</div>
-

Indeterminate

-

Checkboxes can utilize the :indeterminate pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it).

-
- - -
html
<div class="form-check">
-<input class="form-check-input" type="checkbox" value="" id="checkIndeterminate">
-<label class="form-check-label" for="checkIndeterminate">
-  Indeterminate checkbox
-</label>
-</div>
-

Disabled

-

Add the disabled attribute and the associated <label>s are automatically styled to match with a lighter color to help indicate the input's state.

-
- - -
-
- - -
-
- - -
html
<div class="form-check">
-<input class="form-check-input" type="checkbox" value="" id="checkIndeterminateDisabled" disabled>
-<label class="form-check-label" for="checkIndeterminateDisabled">
-  Disabled indeterminate checkbox
-</label>
-</div>
-<div class="form-check">
-<input class="form-check-input" type="checkbox" value="" id="checkDisabled" disabled>
-<label class="form-check-label" for="checkDisabled">
-  Disabled checkbox
-</label>
-</div>
-<div class="form-check">
-<input class="form-check-input" type="checkbox" value="" id="checkCheckedDisabled" checked disabled>
-<label class="form-check-label" for="checkCheckedDisabled">
-  Disabled checked checkbox
-</label>
-</div>
-

Radios

-
- - -
-
- - -
html
<div class="form-check">
-<input class="form-check-input" type="radio" name="radioDefault" id="radioDefault1">
-<label class="form-check-label" for="radioDefault1">
-  Default radio
-</label>
-</div>
-<div class="form-check">
-<input class="form-check-input" type="radio" name="radioDefault" id="radioDefault2" checked>
-<label class="form-check-label" for="radioDefault2">
-  Default checked radio
-</label>
-</div>
-

Disabled

-

Add the disabled attribute and the associated <label>s are automatically styled to match with a lighter color to help indicate the input's state.

-
- - -
-
- - -
html
<div class="form-check">
-<input class="form-check-input" type="radio" name="radioDisabled" id="radioDisabled" disabled>
-<label class="form-check-label" for="radioDisabled">
-  Disabled radio
-</label>
-</div>
-<div class="form-check">
-<input class="form-check-input" type="radio" name="radioDisabled" id="radioCheckedDisabled" checked disabled>
-<label class="form-check-label" for="radioCheckedDisabled">
-  Disabled checked radio
-</label>
-</div>
-

Switches

-

A switch has the markup of a custom checkbox but uses the .form-switch class to render a toggle switch. Consider using role="switch" to more accurately convey the nature of the control to assistive technologies that support this role. In older assistive technologies, it will simply be announced as a regular checkbox as a fallback. Switches also support the disabled attribute.

-
- - -
-
- - -
-
- - -
-
- - -
html
<div class="form-check form-switch">
-<input class="form-check-input" type="checkbox" role="switch" id="switchCheckDefault">
-<label class="form-check-label" for="switchCheckDefault">Default switch checkbox input</label>
-</div>
-<div class="form-check form-switch">
-<input class="form-check-input" type="checkbox" role="switch" id="switchCheckChecked" checked>
-<label class="form-check-label" for="switchCheckChecked">Checked switch checkbox input</label>
-</div>
-<div class="form-check form-switch">
-<input class="form-check-input" type="checkbox" role="switch" id="switchCheckDisabled" disabled>
-<label class="form-check-label" for="switchCheckDisabled">Disabled switch checkbox input</label>
-</div>
-<div class="form-check form-switch">
-<input class="form-check-input" type="checkbox" role="switch" id="switchCheckCheckedDisabled" checked disabled>
-<label class="form-check-label" for="switchCheckCheckedDisabled">Disabled checked switch checkbox input</label>
-</div>
-

Default (stacked)

-

By default, any number of checkboxes and radios that are immediate sibling will be vertically stacked and appropriately spaced with .form-check.

-
- - -
-
- - -
html
<div class="form-check">
-<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
-<label class="form-check-label" for="defaultCheck1">
-  Default checkbox
-</label>
-</div>
-<div class="form-check">
-<input class="form-check-input" type="checkbox" value="" id="defaultCheck2" disabled>
-<label class="form-check-label" for="defaultCheck2">
-  Disabled checkbox
-</label>
-</div>
-
- - -
-
- - -
-
- - -
html
<div class="form-check">
-<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
-<label class="form-check-label" for="exampleRadios1">
-  Default radio
-</label>
-</div>
-<div class="form-check">
-<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
-<label class="form-check-label" for="exampleRadios2">
-  Second default radio
-</label>
-</div>
-<div class="form-check">
-<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled>
-<label class="form-check-label" for="exampleRadios3">
-  Disabled radio
-</label>
-</div>
-

Inline

-

Group checkboxes or radios on the same horizontal row by adding .form-check-inline to any .form-check.

-
- - -
-
- - -
-
- - -
html
<div class="form-check form-check-inline">
-<input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1">
-<label class="form-check-label" for="inlineCheckbox1">1</label>
-</div>
-<div class="form-check form-check-inline">
-<input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2">
-<label class="form-check-label" for="inlineCheckbox2">2</label>
-</div>
-<div class="form-check form-check-inline">
-<input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3" disabled>
-<label class="form-check-label" for="inlineCheckbox3">3 (disabled)</label>
-</div>
-
- - -
-
- - -
-
- - -
html
<div class="form-check form-check-inline">
-<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1">
-<label class="form-check-label" for="inlineRadio1">1</label>
-</div>
-<div class="form-check form-check-inline">
-<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2">
-<label class="form-check-label" for="inlineRadio2">2</label>
-</div>
-<div class="form-check form-check-inline">
-<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3" disabled>
-<label class="form-check-label" for="inlineRadio3">3 (disabled)</label>
-</div>
-

Reverse

-

Put your checkboxes, radios, and switches on the opposite side with the .form-check-reverse modifier class.

-
- - -
-
- - -
- -
- - -
html
<div class="form-check form-check-reverse">
-<input class="form-check-input" type="checkbox" value="" id="reverseCheck1">
-<label class="form-check-label" for="reverseCheck1">
-  Reverse checkbox
-</label>
-</div>
-<div class="form-check form-check-reverse">
-<input class="form-check-input" type="checkbox" value="" id="reverseCheck2" disabled>
-<label class="form-check-label" for="reverseCheck2">
-  Disabled reverse checkbox
-</label>
-</div>
-
-<div class="form-check form-switch form-check-reverse">
-<input class="form-check-input" type="checkbox" id="switchCheckReverse">
-<label class="form-check-label" for="switchCheckReverse">Reverse switch checkbox input</label>
-</div>
-

Without labels

-

Omit the wrapping .form-check for checkboxes and radios that have no label text. Remember to still provide some form of accessible name for assistive technologies (for instance, using aria-label). See the forms overview accessibility section for details.

-
- -
- -
- -
html
<div>
-<input class="form-check-input" type="checkbox" id="checkboxNoLabel" value="" aria-label="...">
-</div>
-
-<div>
-<input class="form-check-input" type="radio" name="radioNoLabel" id="radioNoLabel1" value="" aria-label="...">
-</div>
-

Toggle buttons

-

Create button-like checkboxes and radio buttons by using .btn styles rather than .form-check-label on the <label> elements. These toggle buttons can further be grouped in a button group if needed.

-

Checkbox toggle buttons

-
- - - - - - -
html
<input type="checkbox" class="btn-check" id="btn-check" autocomplete="off">
-<label class="btn btn-primary" for="btn-check">Single toggle</label>
-
-<input type="checkbox" class="btn-check" id="btn-check-2" checked autocomplete="off">
-<label class="btn btn-primary" for="btn-check-2">Checked</label>
-
-<input type="checkbox" class="btn-check" id="btn-check-3" autocomplete="off" disabled>
-<label class="btn btn-primary" for="btn-check-3">Disabled</label>
-
- - - - - - -
html
<input type="checkbox" class="btn-check" id="btn-check-4" autocomplete="off">
-<label class="btn" for="btn-check-4">Single toggle</label>
-
-<input type="checkbox" class="btn-check" id="btn-check-5" checked autocomplete="off">
-<label class="btn" for="btn-check-5">Checked</label>
-
-<input type="checkbox" class="btn-check" id="btn-check-6" autocomplete="off" disabled>
-<label class="btn" for="btn-check-6">Disabled</label>
-

Visually, these checkbox toggle buttons are identical to the button plugin toggle buttons. However, they are conveyed differently by assistive technologies: the checkbox toggles will be announced by screen readers as "checked"/"not checked" (since, despite their appearance, they are fundamentally still checkboxes), whereas the button plugin toggle buttons will be announced as "button"/"button pressed". The choice between these two approaches will depend on the type of toggle you are creating, and whether or not the toggle will make sense to users when announced as a checkbox or as an actual button.

-

Radio toggle buttons

-
- - - - - - - - - -
html
<input type="radio" class="btn-check" name="options" id="option1" autocomplete="off" checked>
-<label class="btn btn-secondary" for="option1">Checked</label>
-
-<input type="radio" class="btn-check" name="options" id="option2" autocomplete="off">
-<label class="btn btn-secondary" for="option2">Radio</label>
-
-<input type="radio" class="btn-check" name="options" id="option3" autocomplete="off" disabled>
-<label class="btn btn-secondary" for="option3">Disabled</label>
-
-<input type="radio" class="btn-check" name="options" id="option4" autocomplete="off">
-<label class="btn btn-secondary" for="option4">Radio</label>
-
- - - - - - - - - -
html
<input type="radio" class="btn-check" name="options-base" id="option5" autocomplete="off" checked>
-<label class="btn" for="option5">Checked</label>
-
-<input type="radio" class="btn-check" name="options-base" id="option6" autocomplete="off">
-<label class="btn" for="option6">Radio</label>
-
-<input type="radio" class="btn-check" name="options-base" id="option7" autocomplete="off" disabled>
-<label class="btn" for="option7">Disabled</label>
-
-<input type="radio" class="btn-check" name="options-base" id="option8" autocomplete="off">
-<label class="btn" for="option8">Radio</label>
-

Outlined styles

-

Different variants of .btn, such as the various outlined styles, are supported.

-
-
- - -
- - - - - -
html
<input type="checkbox" class="btn-check" id="btn-check-outlined" autocomplete="off">
-<label class="btn btn-outline-primary" for="btn-check-outlined">Single toggle</label><br>
-
-<input type="checkbox" class="btn-check" id="btn-check-2-outlined" checked autocomplete="off">
-<label class="btn btn-outline-secondary" for="btn-check-2-outlined">Checked</label><br>
-
-<input type="radio" class="btn-check" name="options-outlined" id="success-outlined" autocomplete="off" checked>
-<label class="btn btn-outline-success" for="success-outlined">Checked success radio</label>
-
-<input type="radio" class="btn-check" name="options-outlined" id="danger-outlined" autocomplete="off">
-<label class="btn btn-outline-danger" for="danger-outlined">Danger radio</label>
-

CSS

-

Sass variables

-

Variables for checks:

-
$form-check-input-width:                  1em;
-$form-check-min-height:                   $font-size-base * $line-height-base;
-$form-check-padding-start:                $form-check-input-width + .5em;
-$form-check-margin-bottom:                .125rem;
-$form-check-label-color:                  null;
-$form-check-label-cursor:                 null;
-$form-check-transition:                   null;
-
-$form-check-input-active-filter:          brightness(90%);
-
-$form-check-input-bg:                     $input-bg;
-$form-check-input-border:                 var(--#{$prefix}border-width) solid var(--#{$prefix}border-color);
-$form-check-input-border-radius:          .25em;
-$form-check-radio-border-radius:          50%;
-$form-check-input-focus-border:           $input-focus-border-color;
-$form-check-input-focus-box-shadow:       $focus-ring-box-shadow;
-
-$form-check-input-checked-color:          $component-active-color;
-$form-check-input-checked-bg-color:       $component-active-bg;
-$form-check-input-checked-border-color:   $form-check-input-checked-bg-color;
-$form-check-input-checked-bg-image:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/></svg>");
-$form-check-radio-checked-bg-image:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>");
-
-$form-check-input-indeterminate-color:          $component-active-color;
-$form-check-input-indeterminate-bg-color:       $component-active-bg;
-$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color;
-$form-check-input-indeterminate-bg-image:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>");
-
-$form-check-input-disabled-opacity:        .5;
-$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity;
-$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity;
-
-$form-check-inline-margin-end:    1rem;
-
-

Variables for switches:

-
$form-switch-color:               rgba($black, .25);
-$form-switch-width:               2em;
-$form-switch-padding-start:       $form-switch-width + .5em;
-$form-switch-bg-image:            url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>");
-$form-switch-border-radius:       $form-switch-width;
-$form-switch-transition:          background-position .15s ease-in-out;
-
-$form-switch-focus-color:         $input-focus-border-color;
-$form-switch-focus-bg-image:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>");
-
-$form-switch-checked-color:       $component-active-color;
-$form-switch-checked-bg-image:    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>");
-$form-switch-checked-bg-position: right center;
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/forms/checks/index.html b/site/dist/docs/5.3/forms/checks/index.html deleted file mode 100644 index adb4a917dd..0000000000 --- a/site/dist/docs/5.3/forms/checks/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/forms/floating-labels/index.html b/site/dist/docs/5.3/forms/floating-labels/index.html deleted file mode 100644 index 681abdf433..0000000000 --- a/site/dist/docs/5.3/forms/floating-labels/index.html +++ /dev/null @@ -1,243 +0,0 @@ - Floating labels · Bootstrap v5.3

Floating labels

Create beautifully simple form labels that float over your input fields.

Example

-

Wrap a pair of <input class="form-control"> and <label> elements in .form-floating to enable floating labels with Bootstrap's textual form fields. A placeholder is required on each <input> as our method of CSS-only floating labels uses the :placeholder-shown pseudo-element. Also note that the <input> must come first so we can utilize a sibling selector (e.g., ~).

-
- - -
-
- - -
html
<div class="form-floating mb-3">
-<input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
-<label for="floatingInput">Email address</label>
-</div>
-<div class="form-floating">
-<input type="password" class="form-control" id="floatingPassword" placeholder="Password">
-<label for="floatingPassword">Password</label>
-</div>
-

When there's a value already defined, <label>s will automatically adjust to their floated position.

-
- - -
html
<form class="form-floating">
-<input type="email" class="form-control" id="floatingInputValue" placeholder="name@example.com" value="test@example.com">
-<label for="floatingInputValue">Input with value</label>
-</form>
-

Form validation styles also work as expected.

-
- - -
html
<form class="form-floating">
-<input type="email" class="form-control is-invalid" id="floatingInputInvalid" placeholder="name@example.com" value="test@example.com">
-<label for="floatingInputInvalid">Invalid input</label>
-</form>
-

Textareas

-

By default, <textarea>s with .form-control will be the same height as <input>s.

-
- - -
html
<div class="form-floating">
-<textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea"></textarea>
-<label for="floatingTextarea">Comments</label>
-</div>
-

To set a custom height on your <textarea>, do not use the rows attribute. Instead, set an explicit height (either inline or via custom CSS).

-
- - -
html
<div class="form-floating">
-<textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea2" style="height: 100px"></textarea>
-<label for="floatingTextarea2">Comments</label>
-</div>
-

Selects

-

Other than .form-control, floating labels are only available on .form-selects. They work in the same way, but unlike <input>s, they'll always show the <label> in its floated state. Selects with size and multiple are not supported.

-
- - -
html
<div class="form-floating">
-<select class="form-select" id="floatingSelect" aria-label="Floating label select example">
-  <option selected>Open this select menu</option>
-  <option value="1">One</option>
-  <option value="2">Two</option>
-  <option value="3">Three</option>
-</select>
-<label for="floatingSelect">Works with selects</label>
-</div>
-

Disabled

-

Add the disabled boolean attribute on an input, a textarea or a select to give it a grayed out appearance, remove pointer events, and prevent focusing.

-
- - -
-
- - -
-
- - -
-
- - -
html
<div class="form-floating mb-3">
-<input type="email" class="form-control" id="floatingInputDisabled" placeholder="name@example.com" disabled>
-<label for="floatingInputDisabled">Email address</label>
-</div>
-<div class="form-floating mb-3">
-<textarea class="form-control" placeholder="Leave a comment here" id="floatingTextareaDisabled" disabled></textarea>
-<label for="floatingTextareaDisabled">Comments</label>
-</div>
-<div class="form-floating mb-3">
-<textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea2Disabled" style="height: 100px" disabled>Disabled textarea with some text inside</textarea>
-<label for="floatingTextarea2Disabled">Comments</label>
-</div>
-<div class="form-floating">
-<select class="form-select" id="floatingSelectDisabled" aria-label="Floating label disabled select example" disabled>
-  <option selected>Open this select menu</option>
-  <option value="1">One</option>
-  <option value="2">Two</option>
-  <option value="3">Three</option>
-</select>
-<label for="floatingSelectDisabled">Works with selects</label>
-</div>
-

Readonly plaintext

-

Floating labels also support .form-control-plaintext, which can be helpful for toggling from an editable <input> to a plaintext value without affecting the page layout.

-
- - -
-
- - -
html
<div class="form-floating mb-3">
-<input type="email" readonly class="form-control-plaintext" id="floatingEmptyPlaintextInput" placeholder="name@example.com">
-<label for="floatingEmptyPlaintextInput">Empty input</label>
-</div>
-<div class="form-floating mb-3">
-<input type="email" readonly class="form-control-plaintext" id="floatingPlaintextInput" placeholder="name@example.com" value="name@example.com">
-<label for="floatingPlaintextInput">Input with value</label>
-</div>
-

Input groups

-

Floating labels also support .input-group.

-
-@ -
- - -
-
html
<div class="input-group mb-3">
-<span class="input-group-text">@</span>
-<div class="form-floating">
-  <input type="text" class="form-control" id="floatingInputGroup1" placeholder="Username">
-  <label for="floatingInputGroup1">Username</label>
-</div>
-</div>
-

When using .input-group and .form-floating along with form validation, the -feedback should be placed outside of the .form-floating, but inside of the .input-group. This means that the feedback will need to be shown using javascript.

-
-@ -
- - -
-
- Please choose a username. -
-
html
<div class="input-group has-validation">
-<span class="input-group-text">@</span>
-<div class="form-floating is-invalid">
-  <input type="text" class="form-control is-invalid" id="floatingInputGroup2" placeholder="Username" required>
-  <label for="floatingInputGroup2">Username</label>
-</div>
-<div class="invalid-feedback">
-  Please choose a username.
-</div>
-</div>
-

Layout

-

When working with the Bootstrap grid system, be sure to place form elements within column classes.

-
-
-
- - -
-
-
-
- - -
-
-
html
<div class="row g-2">
-<div class="col-md">
-  <div class="form-floating">
-    <input type="email" class="form-control" id="floatingInputGrid" placeholder="name@example.com" value="mdo@example.com">
-    <label for="floatingInputGrid">Email address</label>
-  </div>
-</div>
-<div class="col-md">
-  <div class="form-floating">
-    <select class="form-select" id="floatingSelectGrid">
-      <option selected>Open this select menu</option>
-      <option value="1">One</option>
-      <option value="2">Two</option>
-      <option value="3">Three</option>
-    </select>
-    <label for="floatingSelectGrid">Works with selects</label>
-  </div>
-</div>
-</div>
-

CSS

-

Sass variables

-
$form-floating-height:                  add(3.5rem, $input-height-border);
-$form-floating-line-height:             1.25;
-$form-floating-padding-x:               $input-padding-x;
-$form-floating-padding-y:               1rem;
-$form-floating-input-padding-t:         1.625rem;
-$form-floating-input-padding-b:         .625rem;
-$form-floating-label-height:            1.5em;
-$form-floating-label-opacity:           .65;
-$form-floating-label-transform:         scale(.85) translateY(-.5rem) translateX(.15rem);
-$form-floating-label-disabled-color:    $gray-600;
-$form-floating-transition:              opacity .1s ease-in-out, transform .1s ease-in-out;
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/forms/form-control/index.html b/site/dist/docs/5.3/forms/form-control/index.html deleted file mode 100644 index bfd7642aad..0000000000 --- a/site/dist/docs/5.3/forms/form-control/index.html +++ /dev/null @@ -1,285 +0,0 @@ - Form controls · Bootstrap v5.3

Form controls

Give textual form controls like ``s and ` -

html
<div class="mb-3">
-<label for="exampleFormControlInput1" class="form-label">Email address</label>
-<input type="email" class="form-control" id="exampleFormControlInput1" placeholder="name@example.com">
-</div>
-<div class="mb-3">
-<label for="exampleFormControlTextarea1" class="form-label">Example textarea</label>
-<textarea class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
-</div>
-

Sizing

-

Set heights using classes like .form-control-lg and .form-control-sm.

-
- -
html
<input class="form-control form-control-lg" type="text" placeholder=".form-control-lg" aria-label=".form-control-lg example">
-<input class="form-control" type="text" placeholder="Default input" aria-label="default input example">
-<input class="form-control form-control-sm" type="text" placeholder=".form-control-sm" aria-label=".form-control-sm example">
-

Form text

-

Block-level or inline-level form text can be created using .form-text.

-

Form text should be explicitly associated with the form control it relates to using the aria-describedby attribute. This will ensure that assistive technologies—such as screen readers—will announce this form text when the user focuses or enters the control.

-

Form text below inputs can be styled with .form-text. If a block-level element will be used, a top margin is added for easy spacing from the inputs above.

-
- -
-Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji. -
html
<label for="inputPassword5" class="form-label">Password</label>
-<input type="password" id="inputPassword5" class="form-control" aria-describedby="passwordHelpBlock">
-<div id="passwordHelpBlock" class="form-text">
-Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.
-</div>
-

Inline text can use any typical inline HTML element (be it a <span>, <small>, or something else) with nothing more than the .form-text class.

-
-
- -
-
- -
-
- - Must be 8-20 characters long. - -
-
html
<div class="row g-3 align-items-center">
-<div class="col-auto">
-  <label for="inputPassword6" class="col-form-label">Password</label>
-</div>
-<div class="col-auto">
-  <input type="password" id="inputPassword6" class="form-control" aria-describedby="passwordHelpInline">
-</div>
-<div class="col-auto">
-  <span id="passwordHelpInline" class="form-text">
-    Must be 8-20 characters long.
-  </span>
-</div>
-</div>
-

Disabled

-

Add the disabled boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing.

-
-
html
<input class="form-control" type="text" placeholder="Disabled input" aria-label="Disabled input example" disabled>
-<input class="form-control" type="text" value="Disabled readonly input" aria-label="Disabled input example" disabled readonly>
-

Readonly

-

Add the readonly boolean attribute on an input to prevent modification of the input's value. readonly inputs can still be focused and selected, while disabled inputs cannot.

-
html
<input class="form-control" type="text" value="Readonly input here..." aria-label="readonly input example" readonly>
-

Readonly plain text

-

If you want to have <input readonly> elements in your form styled as plain text, replace .form-control with .form-control-plaintext to remove the default form field styling and preserve the correct margin and padding.

-
- -
- -
-
-
- -
- -
-
html
  <div class="mb-3 row">
-  <label for="staticEmail" class="col-sm-2 col-form-label">Email</label>
-  <div class="col-sm-10">
-    <input type="text" readonly class="form-control-plaintext" id="staticEmail" value="email@example.com">
-  </div>
-</div>
-<div class="mb-3 row">
-  <label for="inputPassword" class="col-sm-2 col-form-label">Password</label>
-  <div class="col-sm-10">
-    <input type="password" class="form-control" id="inputPassword">
-  </div>
-</div>
-
-
- - -
-
- - -
-
- -
-
html
<form class="row g-3">
-<div class="col-auto">
-  <label for="staticEmail2" class="visually-hidden">Email</label>
-  <input type="text" readonly class="form-control-plaintext" id="staticEmail2" value="email@example.com">
-</div>
-<div class="col-auto">
-  <label for="inputPassword2" class="visually-hidden">Password</label>
-  <input type="password" class="form-control" id="inputPassword2" placeholder="Password">
-</div>
-<div class="col-auto">
-  <button type="submit" class="btn btn-primary mb-3">Confirm identity</button>
-</div>
-</form>
-

File input

-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
html
<div class="mb-3">
-<label for="formFile" class="form-label">Default file input example</label>
-<input class="form-control" type="file" id="formFile">
-</div>
-<div class="mb-3">
-<label for="formFileMultiple" class="form-label">Multiple files input example</label>
-<input class="form-control" type="file" id="formFileMultiple" multiple>
-</div>
-<div class="mb-3">
-<label for="formFileDisabled" class="form-label">Disabled file input example</label>
-<input class="form-control" type="file" id="formFileDisabled" disabled>
-</div>
-<div class="mb-3">
-<label for="formFileSm" class="form-label">Small file input example</label>
-<input class="form-control form-control-sm" id="formFileSm" type="file">
-</div>
-<div>
-<label for="formFileLg" class="form-label">Large file input example</label>
-<input class="form-control form-control-lg" id="formFileLg" type="file">
-</div>
-

Color

-

Set the type="color" and add .form-control-color to the <input>. We use the modifier class to set fixed heights and override some inconsistencies between browsers.

-
-
html
<label for="exampleColorInput" class="form-label">Color picker</label>
-<input type="color" class="form-control form-control-color" id="exampleColorInput" value="#563d7c" title="Choose your color">
-

Datalists

-

Datalists allow you to create a group of <option>s that can be accessed (and autocompleted) from within an <input>. These are similar to <select> elements, but come with more menu styling limitations and differences. While most browsers and operating systems include some support for <datalist> elements, their styling is inconsistent at best.

-

Learn more about support for datalist elements.

-
- - -
html
<label for="exampleDataList" class="form-label">Datalist example</label>
-<input class="form-control" list="datalistOptions" id="exampleDataList" placeholder="Type to search...">
-<datalist id="datalistOptions">
-<option value="San Francisco">
-<option value="New York">
-<option value="Seattle">
-<option value="Los Angeles">
-<option value="Chicago">
-</datalist>
-

CSS

-

Sass variables

-

$input-* are shared across most of our form controls (and not buttons).

-
$input-padding-y:                       $input-btn-padding-y;
-$input-padding-x:                       $input-btn-padding-x;
-$input-font-family:                     $input-btn-font-family;
-$input-font-size:                       $input-btn-font-size;
-$input-font-weight:                     $font-weight-base;
-$input-line-height:                     $input-btn-line-height;
-
-$input-padding-y-sm:                    $input-btn-padding-y-sm;
-$input-padding-x-sm:                    $input-btn-padding-x-sm;
-$input-font-size-sm:                    $input-btn-font-size-sm;
-
-$input-padding-y-lg:                    $input-btn-padding-y-lg;
-$input-padding-x-lg:                    $input-btn-padding-x-lg;
-$input-font-size-lg:                    $input-btn-font-size-lg;
-
-$input-bg:                              var(--#{$prefix}body-bg);
-$input-disabled-color:                  null;
-$input-disabled-bg:                     var(--#{$prefix}secondary-bg);
-$input-disabled-border-color:           null;
-
-$input-color:                           var(--#{$prefix}body-color);
-$input-border-color:                    var(--#{$prefix}border-color);
-$input-border-width:                    $input-btn-border-width;
-$input-box-shadow:                      var(--#{$prefix}box-shadow-inset);
-
-$input-border-radius:                   var(--#{$prefix}border-radius);
-$input-border-radius-sm:                var(--#{$prefix}border-radius-sm);
-$input-border-radius-lg:                var(--#{$prefix}border-radius-lg);
-
-$input-focus-bg:                        $input-bg;
-$input-focus-border-color:              tint-color($component-active-bg, 50%);
-$input-focus-color:                     $input-color;
-$input-focus-width:                     $input-btn-focus-width;
-$input-focus-box-shadow:                $input-btn-focus-box-shadow;
-
-$input-placeholder-color:               var(--#{$prefix}secondary-color);
-$input-plaintext-color:                 var(--#{$prefix}body-color);
-
-$input-height-border:                   calc(#{$input-border-width} * 2); // stylelint-disable-line function-disallowed-list
-
-$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2);
-$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y);
-$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5);
-
-$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false));
-$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false));
-$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false));
-
-$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out;
-
-$form-color-width:                      3rem;
-
-

$form-label-* and $form-text-* are for our <label>s and .form-text component.

-
$form-label-margin-bottom:              .5rem;
-$form-label-font-size:                  null;
-$form-label-font-style:                 null;
-$form-label-font-weight:                null;
-$form-label-color:                      null;
-
-
$form-text-margin-top:                  .25rem;
-$form-text-font-size:                   $small-font-size;
-$form-text-font-style:                  null;
-$form-text-font-weight:                 null;
-$form-text-color:                       var(--#{$prefix}secondary-color);
-
-

$form-file-* are for file input.

-
$form-file-button-color:          $input-color;
-$form-file-button-bg:             var(--#{$prefix}tertiary-bg);
-$form-file-button-hover-bg:       var(--#{$prefix}secondary-bg);
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/forms/index.html b/site/dist/docs/5.3/forms/index.html deleted file mode 100644 index 3c82df39bf..0000000000 --- a/site/dist/docs/5.3/forms/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/forms/input-group/index.html b/site/dist/docs/5.3/forms/input-group/index.html deleted file mode 100644 index 70a5b1c29b..0000000000 --- a/site/dist/docs/5.3/forms/input-group/index.html +++ /dev/null @@ -1,510 +0,0 @@ - Input group · Bootstrap v5.3

Input group

Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs, custom selects, and custom file inputs.

Basic example

-

Place one add-on or button on either side of an input. You may also place one on both sides of an input. Remember to place <label>s outside the input group.

-
-@ - -
- -
- -@example.com -
- -
- -
- https://example.com/users/ - -
-
Example help text goes outside the input group.
-
- -
-$ - -.00 -
- -
- -@ - -
- -
-With textarea - -
html
<div class="input-group mb-3">
-<span class="input-group-text" id="basic-addon1">@</span>
-<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
-</div>
-
-<div class="input-group mb-3">
-<input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="basic-addon2">
-<span class="input-group-text" id="basic-addon2">@example.com</span>
-</div>
-
-<div class="mb-3">
-<label for="basic-url" class="form-label">Your vanity URL</label>
-<div class="input-group">
-  <span class="input-group-text" id="basic-addon3">https://example.com/users/</span>
-  <input type="text" class="form-control" id="basic-url" aria-describedby="basic-addon3 basic-addon4">
-</div>
-<div class="form-text" id="basic-addon4">Example help text goes outside the input group.</div>
-</div>
-
-<div class="input-group mb-3">
-<span class="input-group-text">$</span>
-<input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
-<span class="input-group-text">.00</span>
-</div>
-
-<div class="input-group mb-3">
-<input type="text" class="form-control" placeholder="Username" aria-label="Username">
-<span class="input-group-text">@</span>
-<input type="text" class="form-control" placeholder="Server" aria-label="Server">
-</div>
-
-<div class="input-group">
-<span class="input-group-text">With textarea</span>
-<textarea class="form-control" aria-label="With textarea"></textarea>
-</div>
-

Wrapping

-

Input groups wrap by default via flex-wrap: wrap in order to accommodate custom form field validation within an input group. You may disable this with .flex-nowrap.

-
-@ - -
html
<div class="input-group flex-nowrap">
-<span class="input-group-text" id="addon-wrapping">@</span>
-<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="addon-wrapping">
-</div>
-

Sizing

-

Add the relative form sizing classes to the .input-group itself and contents within will automatically resize—no need for repeating the form control size classes on each element.

-

Sizing on the individual input group elements isn't supported.

-
-Small - -
- -
-Default - -
- -
-Large - -
html
<div class="input-group input-group-sm mb-3">
-<span class="input-group-text" id="inputGroup-sizing-sm">Small</span>
-<input type="text" class="form-control" aria-label="Sizing example input" aria-describedby="inputGroup-sizing-sm">
-</div>
-
-<div class="input-group mb-3">
-<span class="input-group-text" id="inputGroup-sizing-default">Default</span>
-<input type="text" class="form-control" aria-label="Sizing example input" aria-describedby="inputGroup-sizing-default">
-</div>
-
-<div class="input-group input-group-lg">
-<span class="input-group-text" id="inputGroup-sizing-lg">Large</span>
-<input type="text" class="form-control" aria-label="Sizing example input" aria-describedby="inputGroup-sizing-lg">
-</div>
-

Checkboxes and radios

-

Place any checkbox or radio option within an input group's addon instead of text. We recommend adding .mt-0 to the .form-check-input when there's no visible text next to the input.

-
-
- -
- -
- -
-
- -
- -
html
<div class="input-group mb-3">
-<div class="input-group-text">
-  <input class="form-check-input mt-0" type="checkbox" value="" aria-label="Checkbox for following text input">
-</div>
-<input type="text" class="form-control" aria-label="Text input with checkbox">
-</div>
-
-<div class="input-group">
-<div class="input-group-text">
-  <input class="form-check-input mt-0" type="radio" value="" aria-label="Radio button for following text input">
-</div>
-<input type="text" class="form-control" aria-label="Text input with radio button">
-</div>
-

Multiple inputs

-

While multiple <input>s are supported visually, validation styles are only available for input groups with a single <input>.

-
-First and last name - - -
html
<div class="input-group">
-<span class="input-group-text">First and last name</span>
-<input type="text" aria-label="First name" class="form-control">
-<input type="text" aria-label="Last name" class="form-control">
-</div>
-

Multiple addons

-

Multiple add-ons are supported and can be mixed with checkbox and radio input versions.

-
-$ -0.00 - -
- -
- -$ -0.00 -
html
<div class="input-group mb-3">
-<span class="input-group-text">$</span>
-<span class="input-group-text">0.00</span>
-<input type="text" class="form-control" aria-label="Dollar amount (with dot and two decimal places)">
-</div>
-
-<div class="input-group">
-<input type="text" class="form-control" aria-label="Dollar amount (with dot and two decimal places)">
-<span class="input-group-text">$</span>
-<span class="input-group-text">0.00</span>
-</div>
-

Button addons

-
- - -
- -
- - -
- -
- - - -
- -
- - - -
html
<div class="input-group mb-3">
-<button class="btn btn-outline-secondary" type="button" id="button-addon1">Button</button>
-<input type="text" class="form-control" placeholder="" aria-label="Example text with button addon" aria-describedby="button-addon1">
-</div>
-
-<div class="input-group mb-3">
-<input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="button-addon2">
-<button class="btn btn-outline-secondary" type="button" id="button-addon2">Button</button>
-</div>
-
-<div class="input-group mb-3">
-<button class="btn btn-outline-secondary" type="button">Button</button>
-<button class="btn btn-outline-secondary" type="button">Button</button>
-<input type="text" class="form-control" placeholder="" aria-label="Example text with two button addons">
-</div>
-
-<div class="input-group">
-<input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username with two button addons">
-<button class="btn btn-outline-secondary" type="button">Button</button>
-<button class="btn btn-outline-secondary" type="button">Button</button>
-</div>
-

Buttons with dropdowns

-
html
<div class="input-group mb-3">
-<button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-<input type="text" class="form-control" aria-label="Text input with dropdown button">
-</div>
-
-<div class="input-group mb-3">
-<input type="text" class="form-control" aria-label="Text input with dropdown button">
-<button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-<ul class="dropdown-menu dropdown-menu-end">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-</div>
-
-<div class="input-group">
-<button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Action before</a></li>
-  <li><a class="dropdown-item" href="#">Another action before</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-<input type="text" class="form-control" aria-label="Text input with 2 dropdown buttons">
-<button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-<ul class="dropdown-menu dropdown-menu-end">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-</div>
-

Segmented buttons

-
- - - - -
- -
- - - - -
html
<div class="input-group mb-3">
-<button type="button" class="btn btn-outline-secondary">Action</button>
-<button type="button" class="btn btn-outline-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-  <span class="visually-hidden">Toggle Dropdown</span>
-</button>
-<ul class="dropdown-menu">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-<input type="text" class="form-control" aria-label="Text input with segmented dropdown button">
-</div>
-
-<div class="input-group">
-<input type="text" class="form-control" aria-label="Text input with segmented dropdown button">
-<button type="button" class="btn btn-outline-secondary">Action</button>
-<button type="button" class="btn btn-outline-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-  <span class="visually-hidden">Toggle Dropdown</span>
-</button>
-<ul class="dropdown-menu dropdown-menu-end">
-  <li><a class="dropdown-item" href="#">Action</a></li>
-  <li><a class="dropdown-item" href="#">Another action</a></li>
-  <li><a class="dropdown-item" href="#">Something else here</a></li>
-  <li><hr class="dropdown-divider"></li>
-  <li><a class="dropdown-item" href="#">Separated link</a></li>
-</ul>
-</div>
-

Custom forms

-

Input groups include support for custom selects and custom file inputs. Browser default versions of these are not supported.

-

Custom select

-
- - -
- -
- - -
- -
- - -
- -
- - -
html
<div class="input-group mb-3">
-<label class="input-group-text" for="inputGroupSelect01">Options</label>
-<select class="form-select" id="inputGroupSelect01">
-  <option selected>Choose...</option>
-  <option value="1">One</option>
-  <option value="2">Two</option>
-  <option value="3">Three</option>
-</select>
-</div>
-
-<div class="input-group mb-3">
-<select class="form-select" id="inputGroupSelect02">
-  <option selected>Choose...</option>
-  <option value="1">One</option>
-  <option value="2">Two</option>
-  <option value="3">Three</option>
-</select>
-<label class="input-group-text" for="inputGroupSelect02">Options</label>
-</div>
-
-<div class="input-group mb-3">
-<button class="btn btn-outline-secondary" type="button">Button</button>
-<select class="form-select" id="inputGroupSelect03" aria-label="Example select with button addon">
-  <option selected>Choose...</option>
-  <option value="1">One</option>
-  <option value="2">Two</option>
-  <option value="3">Three</option>
-</select>
-</div>
-
-<div class="input-group">
-<select class="form-select" id="inputGroupSelect04" aria-label="Example select with button addon">
-  <option selected>Choose...</option>
-  <option value="1">One</option>
-  <option value="2">Two</option>
-  <option value="3">Three</option>
-</select>
-<button class="btn btn-outline-secondary" type="button">Button</button>
-</div>
-

Custom file input

-
- - -
- -
- - -
- -
- - -
- -
- - -
html
<div class="input-group mb-3">
-<label class="input-group-text" for="inputGroupFile01">Upload</label>
-<input type="file" class="form-control" id="inputGroupFile01">
-</div>
-
-<div class="input-group mb-3">
-<input type="file" class="form-control" id="inputGroupFile02">
-<label class="input-group-text" for="inputGroupFile02">Upload</label>
-</div>
-
-<div class="input-group mb-3">
-<button class="btn btn-outline-secondary" type="button" id="inputGroupFileAddon03">Button</button>
-<input type="file" class="form-control" id="inputGroupFile03" aria-describedby="inputGroupFileAddon03" aria-label="Upload">
-</div>
-
-<div class="input-group">
-<input type="file" class="form-control" id="inputGroupFile04" aria-describedby="inputGroupFileAddon04" aria-label="Upload">
-<button class="btn btn-outline-secondary" type="button" id="inputGroupFileAddon04">Button</button>
-</div>
-

CSS

-

Sass variables

-
$input-group-addon-padding-y:           $input-padding-y;
-$input-group-addon-padding-x:           $input-padding-x;
-$input-group-addon-font-weight:         $input-font-weight;
-$input-group-addon-color:               $input-color;
-$input-group-addon-bg:                  var(--#{$prefix}tertiary-bg);
-$input-group-addon-border-color:        $input-border-color;
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/forms/layout/index.html b/site/dist/docs/5.3/forms/layout/index.html deleted file mode 100644 index f9665bf726..0000000000 --- a/site/dist/docs/5.3/forms/layout/index.html +++ /dev/null @@ -1,529 +0,0 @@ - Layout · Bootstrap v5.3

Give your forms some structure—from inline to horizontal to custom grid implementations—with our form layout options.

Forms

-

Every group of form fields should reside in a <form> element. Bootstrap provides no default styling for the <form> element, but there are some powerful browser features that are provided by default.

-
    -
  • New to browser forms? Consider reviewing the MDN form docs for an overview and complete list of available attributes.
  • -
  • <button>s within a <form> default to type="submit", so strive to be specific and always include a type.
  • -
-

Since Bootstrap applies display: block and width: 100% to almost all our form controls, forms will by default stack vertically. Additional classes can be used to vary this layout on a per-form basis.

-

Utilities

-

Margin utilities are the easiest way to add some structure to forms. They provide basic grouping of labels, controls, optional form text, and form validation messaging. We recommend sticking to margin-bottom utilities, and using a single direction throughout the form for consistency.

-

Feel free to build your forms however you like, with <fieldset>s, <div>s, or nearly any other element.

-
- - -
-
- - -
html
<div class="mb-3">
-<label for="formGroupExampleInput" class="form-label">Example label</label>
-<input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input placeholder">
-</div>
-<div class="mb-3">
-<label for="formGroupExampleInput2" class="form-label">Another label</label>
-<input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input placeholder">
-</div>
-

Form grid

-

More complex forms can be built using our grid classes. Use these for form layouts that require multiple columns, varied widths, and additional alignment options. Requires the $enable-grid-classes Sass variable to be enabled (on by default).

-
-
- -
-
- -
-
html
<div class="row">
-<div class="col">
-  <input type="text" class="form-control" placeholder="First name" aria-label="First name">
-</div>
-<div class="col">
-  <input type="text" class="form-control" placeholder="Last name" aria-label="Last name">
-</div>
-</div>
-

Gutters

-

By adding gutter modifier classes, you can have control over the gutter width in as well the inline as block direction. Also requires the $enable-grid-classes Sass variable to be enabled (on by default).

-
-
- -
-
- -
-
html
<div class="row g-3">
-<div class="col">
-  <input type="text" class="form-control" placeholder="First name" aria-label="First name">
-</div>
-<div class="col">
-  <input type="text" class="form-control" placeholder="Last name" aria-label="Last name">
-</div>
-</div>
-

More complex layouts can also be created with the grid system.

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-
- -
-
html
<form class="row g-3">
-<div class="col-md-6">
-  <label for="inputEmail4" class="form-label">Email</label>
-  <input type="email" class="form-control" id="inputEmail4">
-</div>
-<div class="col-md-6">
-  <label for="inputPassword4" class="form-label">Password</label>
-  <input type="password" class="form-control" id="inputPassword4">
-</div>
-<div class="col-12">
-  <label for="inputAddress" class="form-label">Address</label>
-  <input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
-</div>
-<div class="col-12">
-  <label for="inputAddress2" class="form-label">Address 2</label>
-  <input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
-</div>
-<div class="col-md-6">
-  <label for="inputCity" class="form-label">City</label>
-  <input type="text" class="form-control" id="inputCity">
-</div>
-<div class="col-md-4">
-  <label for="inputState" class="form-label">State</label>
-  <select id="inputState" class="form-select">
-    <option selected>Choose...</option>
-    <option>...</option>
-  </select>
-</div>
-<div class="col-md-2">
-  <label for="inputZip" class="form-label">Zip</label>
-  <input type="text" class="form-control" id="inputZip">
-</div>
-<div class="col-12">
-  <div class="form-check">
-    <input class="form-check-input" type="checkbox" id="gridCheck">
-    <label class="form-check-label" for="gridCheck">
-      Check me out
-    </label>
-  </div>
-</div>
-<div class="col-12">
-  <button type="submit" class="btn btn-primary">Sign in</button>
-</div>
-</form>
-

Horizontal form

-

Create horizontal forms with the grid by adding the .row class to form groups and using the .col-*-* classes to specify the width of your labels and controls. Be sure to add .col-form-label to your <label>s as well so they're vertically centered with their associated form controls.

-

At times, you maybe need to use margin or padding utilities to create that perfect alignment you need. For example, we've removed the padding-top on our stacked radio inputs label to better align the text baseline.

-
-
- -
- -
-
-
- -
- -
-
-
- Radios -
-
- - -
-
- - -
-
- - -
-
-
-
-
-
- - -
-
-
- -
html
<form>
-<div class="row mb-3">
-  <label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
-  <div class="col-sm-10">
-    <input type="email" class="form-control" id="inputEmail3">
-  </div>
-</div>
-<div class="row mb-3">
-  <label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
-  <div class="col-sm-10">
-    <input type="password" class="form-control" id="inputPassword3">
-  </div>
-</div>
-<fieldset class="row mb-3">
-  <legend class="col-form-label col-sm-2 pt-0">Radios</legend>
-  <div class="col-sm-10">
-    <div class="form-check">
-      <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
-      <label class="form-check-label" for="gridRadios1">
-        First radio
-      </label>
-    </div>
-    <div class="form-check">
-      <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
-      <label class="form-check-label" for="gridRadios2">
-        Second radio
-      </label>
-    </div>
-    <div class="form-check disabled">
-      <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
-      <label class="form-check-label" for="gridRadios3">
-        Third disabled radio
-      </label>
-    </div>
-  </div>
-</fieldset>
-<div class="row mb-3">
-  <div class="col-sm-10 offset-sm-2">
-    <div class="form-check">
-      <input class="form-check-input" type="checkbox" id="gridCheck1">
-      <label class="form-check-label" for="gridCheck1">
-        Example checkbox
-      </label>
-    </div>
-  </div>
-</div>
-<button type="submit" class="btn btn-primary">Sign in</button>
-</form>
-

Horizontal form label sizing

-

Be sure to use .col-form-label-sm or .col-form-label-lg to your <label>s or <legend>s to correctly follow the size of .form-control-lg and .form-control-sm.

-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
html
<div class="row mb-3">
-<label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm">Email</label>
-<div class="col-sm-10">
-  <input type="email" class="form-control form-control-sm" id="colFormLabelSm" placeholder="col-form-label-sm">
-</div>
-</div>
-<div class="row mb-3">
-<label for="colFormLabel" class="col-sm-2 col-form-label">Email</label>
-<div class="col-sm-10">
-  <input type="email" class="form-control" id="colFormLabel" placeholder="col-form-label">
-</div>
-</div>
-<div class="row">
-<label for="colFormLabelLg" class="col-sm-2 col-form-label col-form-label-lg">Email</label>
-<div class="col-sm-10">
-  <input type="email" class="form-control form-control-lg" id="colFormLabelLg" placeholder="col-form-label-lg">
-</div>
-</div>
-

Column sizing

-

As shown in the previous examples, our grid system allows you to place any number of .cols within a .row. They'll split the available width equally between them. You may also pick a subset of your columns to take up more or less space, while the remaining .cols equally split the rest, with specific column classes like .col-sm-7.

-
-
- -
-
- -
-
- -
-
html
<div class="row g-3">
-<div class="col-sm-7">
-  <input type="text" class="form-control" placeholder="City" aria-label="City">
-</div>
-<div class="col-sm">
-  <input type="text" class="form-control" placeholder="State" aria-label="State">
-</div>
-<div class="col-sm">
-  <input type="text" class="form-control" placeholder="Zip" aria-label="Zip">
-</div>
-</div>
-

Auto-sizing

-

The example below uses a flexbox utility to vertically center the contents and changes .col to .col-auto so that your columns only take up as much space as needed. Put another way, the column sizes itself based on the contents.

-
-
- - -
-
- -
-
@
- -
-
-
- - -
-
-
- - -
-
-
- -
-
html
<form class="row gy-2 gx-3 align-items-center">
-<div class="col-auto">
-  <label class="visually-hidden" for="autoSizingInput">Name</label>
-  <input type="text" class="form-control" id="autoSizingInput" placeholder="Jane Doe">
-</div>
-<div class="col-auto">
-  <label class="visually-hidden" for="autoSizingInputGroup">Username</label>
-  <div class="input-group">
-    <div class="input-group-text">@</div>
-    <input type="text" class="form-control" id="autoSizingInputGroup" placeholder="Username">
-  </div>
-</div>
-<div class="col-auto">
-  <label class="visually-hidden" for="autoSizingSelect">Preference</label>
-  <select class="form-select" id="autoSizingSelect">
-    <option selected>Choose...</option>
-    <option value="1">One</option>
-    <option value="2">Two</option>
-    <option value="3">Three</option>
-  </select>
-</div>
-<div class="col-auto">
-  <div class="form-check">
-    <input class="form-check-input" type="checkbox" id="autoSizingCheck">
-    <label class="form-check-label" for="autoSizingCheck">
-      Remember me
-    </label>
-  </div>
-</div>
-<div class="col-auto">
-  <button type="submit" class="btn btn-primary">Submit</button>
-</div>
-</form>
-

You can then remix that once again with size-specific column classes.

-
-
- - -
-
- -
-
@
- -
-
-
- - -
-
-
- - -
-
-
- -
-
html
<form class="row gx-3 gy-2 align-items-center">
-<div class="col-sm-3">
-  <label class="visually-hidden" for="specificSizeInputName">Name</label>
-  <input type="text" class="form-control" id="specificSizeInputName" placeholder="Jane Doe">
-</div>
-<div class="col-sm-3">
-  <label class="visually-hidden" for="specificSizeInputGroupUsername">Username</label>
-  <div class="input-group">
-    <div class="input-group-text">@</div>
-    <input type="text" class="form-control" id="specificSizeInputGroupUsername" placeholder="Username">
-  </div>
-</div>
-<div class="col-sm-3">
-  <label class="visually-hidden" for="specificSizeSelect">Preference</label>
-  <select class="form-select" id="specificSizeSelect">
-    <option selected>Choose...</option>
-    <option value="1">One</option>
-    <option value="2">Two</option>
-    <option value="3">Three</option>
-  </select>
-</div>
-<div class="col-auto">
-  <div class="form-check">
-    <input class="form-check-input" type="checkbox" id="autoSizingCheck2">
-    <label class="form-check-label" for="autoSizingCheck2">
-      Remember me
-    </label>
-  </div>
-</div>
-<div class="col-auto">
-  <button type="submit" class="btn btn-primary">Submit</button>
-</div>
-</form>
-

Inline forms

-

Use the .row-cols-* classes to create responsive horizontal layouts. By adding gutter modifier classes, we'll have gutters in horizontal and vertical directions. On narrow mobile viewports, the .col-12 helps stack the form controls and more. The .align-items-center aligns the form elements to the middle, making the .form-check align properly.

-
-
- -
-
@
- -
-
- -
- - -
- -
-
- - -
-
- -
- -
-
html
<form class="row row-cols-lg-auto g-3 align-items-center">
-<div class="col-12">
-  <label class="visually-hidden" for="inlineFormInputGroupUsername">Username</label>
-  <div class="input-group">
-    <div class="input-group-text">@</div>
-    <input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
-  </div>
-</div>
-
-<div class="col-12">
-  <label class="visually-hidden" for="inlineFormSelectPref">Preference</label>
-  <select class="form-select" id="inlineFormSelectPref">
-    <option selected>Choose...</option>
-    <option value="1">One</option>
-    <option value="2">Two</option>
-    <option value="3">Three</option>
-  </select>
-</div>
-
-<div class="col-12">
-  <div class="form-check">
-    <input class="form-check-input" type="checkbox" id="inlineFormCheck">
-    <label class="form-check-label" for="inlineFormCheck">
-      Remember me
-    </label>
-  </div>
-</div>
-
-<div class="col-12">
-  <button type="submit" class="btn btn-primary">Submit</button>
-</div>
-</form>
\ No newline at end of file diff --git a/site/dist/docs/5.3/forms/overview/index.html b/site/dist/docs/5.3/forms/overview/index.html deleted file mode 100644 index 2718ab43d2..0000000000 --- a/site/dist/docs/5.3/forms/overview/index.html +++ /dev/null @@ -1,151 +0,0 @@ - Forms · Bootstrap v5.3

Examples and usage guidelines for form control styles, layout options, and custom components for creating a wide variety of forms.

On this page

Overview

-

Bootstrap's form controls expand on our Rebooted form styles with classes. Use these classes to opt into their customized displays for a more consistent rendering across browsers and devices.

-

Be sure to use an appropriate type attribute on all inputs (e.g., email for email address or number for numerical information) to take advantage of newer input controls like email verification, number selection, and more.

-

Here's a quick example to demonstrate Bootstrap's form styles. Keep reading for documentation on required classes, form layout, and more.

-
-
- - -
We'll never share your email with anyone else.
-
-
- - -
-
- - -
- -
html
<form>
-<div class="mb-3">
-  <label for="exampleInputEmail1" class="form-label">Email address</label>
-  <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
-  <div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div>
-</div>
-<div class="mb-3">
-  <label for="exampleInputPassword1" class="form-label">Password</label>
-  <input type="password" class="form-control" id="exampleInputPassword1">
-</div>
-<div class="mb-3 form-check">
-  <input type="checkbox" class="form-check-input" id="exampleCheck1">
-  <label class="form-check-label" for="exampleCheck1">Check me out</label>
-</div>
-<button type="submit" class="btn btn-primary">Submit</button>
-</form>
-

Disabled forms

-

Add the disabled boolean attribute on an input to prevent user interactions and make it appear lighter.

-
<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
-
-

Add the disabled attribute to a <fieldset> to disable all the controls within. Browsers treat all native form controls (<input>, <select>, and <button> elements) inside a <fieldset disabled> as disabled, preventing both keyboard and mouse interactions on them.

-

However, if your form also includes custom button-like elements such as <a class="btn btn-*">...</a>, these will only be given a style of pointer-events: none, meaning they are still focusable and operable using the keyboard. In this case, you must manually modify these controls by adding tabindex="-1" to prevent them from receiving focus and aria-disabled="disabled" to signal their state to assistive technologies.

-
-
- Disabled fieldset example -
- - -
-
- - -
-
-
- - -
-
- -
-
html
<form>
-<fieldset disabled>
-  <legend>Disabled fieldset example</legend>
-  <div class="mb-3">
-    <label for="disabledTextInput" class="form-label">Disabled input</label>
-    <input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
-  </div>
-  <div class="mb-3">
-    <label for="disabledSelect" class="form-label">Disabled select menu</label>
-    <select id="disabledSelect" class="form-select">
-      <option>Disabled select</option>
-    </select>
-  </div>
-  <div class="mb-3">
-    <div class="form-check">
-      <input class="form-check-input" type="checkbox" id="disabledFieldsetCheck" disabled>
-      <label class="form-check-label" for="disabledFieldsetCheck">
-        Can't check this
-      </label>
-    </div>
-  </div>
-  <button type="submit" class="btn btn-primary">Submit</button>
-</fieldset>
-</form>
-

Accessibility

-

Ensure that all form controls have an appropriate accessible name so that their purpose can be conveyed to users of assistive technologies. The simplest way to achieve this is to use a <label> element, or—in the case of buttons—to include sufficiently descriptive text as part of the <button>...</button> content.

-

For situations where it's not possible to include a visible <label> or appropriate text content, there are alternative ways of still providing an accessible name, such as:

-
    -
  • <label> elements hidden using the .visually-hidden class
  • -
  • Pointing to an existing element that can act as a label using aria-labelledby
  • -
  • Providing a title attribute
  • -
  • Explicitly setting the accessible name on an element using aria-label
  • -
-

If none of these are present, assistive technologies may resort to using the placeholder attribute as a fallback for the accessible name on <input> and <textarea> elements. The examples in this section provide a few suggested, case-specific approaches.

-

While using visually hidden content (.visually-hidden, aria-label, and even placeholder content, which disappears once a form field has content) will benefit assistive technology users, a lack of visible label text may still be problematic for certain users. Some form of visible label is generally the best approach, both for accessibility and usability.

-

CSS

-

Many form variables are set at a general level to be re-used and extended by individual form components. You'll see these most often as $input-btn-* and $input-* variables.

-

Sass variables

-

$input-btn-* variables are shared global variables between our buttons and our form components. You'll find these frequently reassigned as values to other component-specific variables.

-
$input-btn-padding-y:         .375rem;
-$input-btn-padding-x:         .75rem;
-$input-btn-font-family:       null;
-$input-btn-font-size:         $font-size-base;
-$input-btn-line-height:       $line-height-base;
-
-$input-btn-focus-width:         $focus-ring-width;
-$input-btn-focus-color-opacity: $focus-ring-opacity;
-$input-btn-focus-color:         $focus-ring-color;
-$input-btn-focus-blur:          $focus-ring-blur;
-$input-btn-focus-box-shadow:    $focus-ring-box-shadow;
-
-$input-btn-padding-y-sm:      .25rem;
-$input-btn-padding-x-sm:      .5rem;
-$input-btn-font-size-sm:      $font-size-sm;
-
-$input-btn-padding-y-lg:      .5rem;
-$input-btn-padding-x-lg:      1rem;
-$input-btn-font-size-lg:      $font-size-lg;
-
-$input-btn-border-width:      var(--#{$prefix}border-width);
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/forms/range/index.html b/site/dist/docs/5.3/forms/range/index.html deleted file mode 100644 index da9695b5a5..0000000000 --- a/site/dist/docs/5.3/forms/range/index.html +++ /dev/null @@ -1,67 +0,0 @@ - Range · Bootstrap v5.3

Use our custom range inputs for consistent cross-browser styling and built-in customization.

On this page

Overview

-

Create custom <input type="range"> controls with .form-range. The track (the background) and thumb (the value) are both styled to appear the same across browsers. As only Firefox supports "filling" their track from the left or right of the thumb as a means to visually indicate progress, we do not currently support it.

-
-
html
<label for="customRange1" class="form-label">Example range</label>
-<input type="range" class="form-range" id="customRange1">
-

Disabled

-

Add the disabled boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing.

-
-
html
<label for="disabledRange" class="form-label">Disabled range</label>
-<input type="range" class="form-range" id="disabledRange" disabled>
-

Min and max

-

Range inputs have implicit values for min and max0 and 100, respectively. You may specify new values for those using the min and max attributes.

-
-
html
<label for="customRange2" class="form-label">Example range</label>
-<input type="range" class="form-range" min="0" max="5" id="customRange2">
-

Steps

-

By default, range inputs "snap" to integer values. To change this, you can specify a step value. In the example below, we double the number of steps by using step="0.5".

-
-
html
<label for="customRange3" class="form-label">Example range</label>
-<input type="range" class="form-range" min="0" max="5" step="0.5" id="customRange3">
-

CSS

-

Sass variables

-
$form-range-track-width:          100%;
-$form-range-track-height:         .5rem;
-$form-range-track-cursor:         pointer;
-$form-range-track-bg:             var(--#{$prefix}secondary-bg);
-$form-range-track-border-radius:  1rem;
-$form-range-track-box-shadow:     var(--#{$prefix}box-shadow-inset);
-
-$form-range-thumb-width:                   1rem;
-$form-range-thumb-height:                  $form-range-thumb-width;
-$form-range-thumb-bg:                      $component-active-bg;
-$form-range-thumb-border:                  0;
-$form-range-thumb-border-radius:           1rem;
-$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1);
-$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow;
-$form-range-thumb-focus-box-shadow-width:  $input-focus-width; // For focus box shadow issue in Edge
-$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%);
-$form-range-thumb-disabled-bg:             var(--#{$prefix}secondary-color);
-$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/forms/select/index.html b/site/dist/docs/5.3/forms/select/index.html deleted file mode 100644 index 642c1bd57d..0000000000 --- a/site/dist/docs/5.3/forms/select/index.html +++ /dev/null @@ -1,147 +0,0 @@ - Select · Bootstrap v5.3

Customize the native ` - - - - -

html
<select class="form-select" aria-label="Default select example">
-<option selected>Open this select menu</option>
-<option value="1">One</option>
-<option value="2">Two</option>
-<option value="3">Three</option>
-</select>
-

Sizing

-

You may also choose from small and large custom selects to match our similarly sized text inputs.

-
- -
html
<select class="form-select form-select-lg mb-3" aria-label="Large select example">
-<option selected>Open this select menu</option>
-<option value="1">One</option>
-<option value="2">Two</option>
-<option value="3">Three</option>
-</select>
-
-<select class="form-select form-select-sm" aria-label="Small select example">
-<option selected>Open this select menu</option>
-<option value="1">One</option>
-<option value="2">Two</option>
-<option value="3">Three</option>
-</select>
-

The multiple attribute is also supported:

-
html
<select class="form-select" multiple aria-label="Multiple select example">
-<option selected>Open this select menu</option>
-<option value="1">One</option>
-<option value="2">Two</option>
-<option value="3">Three</option>
-</select>
-

As is the size attribute:

-
html
<select class="form-select" size="3" aria-label="Size 3 select example">
-<option selected>Open this select menu</option>
-<option value="1">One</option>
-<option value="2">Two</option>
-<option value="3">Three</option>
-</select>
-

Disabled

-

Add the disabled boolean attribute on a select to give it a grayed out appearance and remove pointer events.

-
html
<select class="form-select" aria-label="Disabled select example" disabled>
-<option selected>Open this select menu</option>
-<option value="1">One</option>
-<option value="2">Two</option>
-<option value="3">Three</option>
-</select>
-

CSS

-

Sass variables

-
$form-select-padding-y:             $input-padding-y;
-$form-select-padding-x:             $input-padding-x;
-$form-select-font-family:           $input-font-family;
-$form-select-font-size:             $input-font-size;
-$form-select-indicator-padding:     $form-select-padding-x * 3; // Extra padding for background-image
-$form-select-font-weight:           $input-font-weight;
-$form-select-line-height:           $input-line-height;
-$form-select-color:                 $input-color;
-$form-select-bg:                    $input-bg;
-$form-select-disabled-color:        null;
-$form-select-disabled-bg:           $input-disabled-bg;
-$form-select-disabled-border-color: $input-disabled-border-color;
-$form-select-bg-position:           right $form-select-padding-x center;
-$form-select-bg-size:               16px 12px; // In pixels because image dimensions
-$form-select-indicator-color:       $gray-800;
-$form-select-indicator:             url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>");
-
-$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding;
-$form-select-feedback-icon-position:    center right $form-select-indicator-padding;
-$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half;
-
-$form-select-border-width:        $input-border-width;
-$form-select-border-color:        $input-border-color;
-$form-select-border-radius:       $input-border-radius;
-$form-select-box-shadow:          var(--#{$prefix}box-shadow-inset);
-
-$form-select-focus-border-color:  $input-focus-border-color;
-$form-select-focus-width:         $input-focus-width;
-$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color;
-
-$form-select-padding-y-sm:        $input-padding-y-sm;
-$form-select-padding-x-sm:        $input-padding-x-sm;
-$form-select-font-size-sm:        $input-font-size-sm;
-$form-select-border-radius-sm:    $input-border-radius-sm;
-
-$form-select-padding-y-lg:        $input-padding-y-lg;
-$form-select-padding-x-lg:        $input-padding-x-lg;
-$form-select-font-size-lg:        $input-font-size-lg;
-$form-select-border-radius-lg:    $input-border-radius-lg;
-
-$form-select-transition:          $input-transition;
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/forms/validation/index.html b/site/dist/docs/5.3/forms/validation/index.html deleted file mode 100644 index 657f8b8990..0000000000 --- a/site/dist/docs/5.3/forms/validation/index.html +++ /dev/null @@ -1,833 +0,0 @@ - Validation · Bootstrap v5.3

Validation

Provide valuable, actionable feedback to your users with HTML5 form validation, via browser default behaviors or custom styles and JavaScript.

We are aware that currently the client-side custom validation styles and tooltips are not accessible, since they are not exposed to assistive technologies. While we work on a solution, we'd recommend either using the server-side option or the default browser validation method.

-

How it works

-

Here's how form validation works with Bootstrap:

-
    -
  • HTML form validation is applied via CSS's two pseudo-classes, :invalid and :valid. It applies to <input>, <select>, and <textarea> elements.
  • -
  • Bootstrap scopes the :invalid and :valid styles to parent .was-validated class, usually applied to the <form>. Otherwise, any required field without a value shows up as invalid on page load. This way, you may choose when to activate them (typically after form submission is attempted).
  • -
  • To reset the appearance of the form (for instance, in the case of dynamic form submissions using Ajax), remove the .was-validated class from the <form> again after submission.
  • -
  • As a fallback, .is-invalid and .is-valid classes may be used instead of the pseudo-classes for server-side validation. They do not require a .was-validated parent class.
  • -
  • Due to constraints in how CSS works, we cannot (at present) apply styles to a <label> that comes before a form control in the DOM without the help of custom JavaScript.
  • -
  • All modern browsers support the constraint validation API, a series of JavaScript methods for validating form controls.
  • -
  • Feedback messages may utilize the browser defaults (different for each browser, and unstylable via CSS) or our custom feedback styles with additional HTML and CSS.
  • -
  • You may provide custom validity messages with setCustomValidity in JavaScript.
  • -
-

With that in mind, consider the following demos for our custom form validation styles, optional server-side classes, and browser defaults.

-

Custom styles

-

For custom Bootstrap form validation messages, you'll need to add the novalidate boolean attribute to your <form>. This disables the browser default feedback tooltips, but still provides access to the form validation APIs in JavaScript. Try to submit the form below; our JavaScript will intercept the submit button and relay feedback to you. When attempting to submit, you'll see the :invalid and :valid styles applied to your form controls.

-

Custom feedback styles apply custom colors, borders, focus styles, and background icons to better communicate feedback. Background icons for <select>s are only available with .form-select, and not .form-control.

-
-
- - -
- Looks good! -
-
-
- - -
- Looks good! -
-
-
- -
- @ - -
- Please choose a username. -
-
-
-
- - -
- Please provide a valid city. -
-
-
- - -
- Please select a valid state. -
-
-
- - -
- Please provide a valid zip. -
-
-
-
- - -
- You must agree before submitting. -
-
-
-
- -
-
html
<form class="row g-3 needs-validation" novalidate>
-<div class="col-md-4">
-  <label for="validationCustom01" class="form-label">First name</label>
-  <input type="text" class="form-control" id="validationCustom01" value="Mark" required>
-  <div class="valid-feedback">
-    Looks good!
-  </div>
-</div>
-<div class="col-md-4">
-  <label for="validationCustom02" class="form-label">Last name</label>
-  <input type="text" class="form-control" id="validationCustom02" value="Otto" required>
-  <div class="valid-feedback">
-    Looks good!
-  </div>
-</div>
-<div class="col-md-4">
-  <label for="validationCustomUsername" class="form-label">Username</label>
-  <div class="input-group has-validation">
-    <span class="input-group-text" id="inputGroupPrepend">@</span>
-    <input type="text" class="form-control" id="validationCustomUsername" aria-describedby="inputGroupPrepend" required>
-    <div class="invalid-feedback">
-      Please choose a username.
-    </div>
-  </div>
-</div>
-<div class="col-md-6">
-  <label for="validationCustom03" class="form-label">City</label>
-  <input type="text" class="form-control" id="validationCustom03" required>
-  <div class="invalid-feedback">
-    Please provide a valid city.
-  </div>
-</div>
-<div class="col-md-3">
-  <label for="validationCustom04" class="form-label">State</label>
-  <select class="form-select" id="validationCustom04" required>
-    <option selected disabled value="">Choose...</option>
-    <option>...</option>
-  </select>
-  <div class="invalid-feedback">
-    Please select a valid state.
-  </div>
-</div>
-<div class="col-md-3">
-  <label for="validationCustom05" class="form-label">Zip</label>
-  <input type="text" class="form-control" id="validationCustom05" required>
-  <div class="invalid-feedback">
-    Please provide a valid zip.
-  </div>
-</div>
-<div class="col-12">
-  <div class="form-check">
-    <input class="form-check-input" type="checkbox" value="" id="invalidCheck" required>
-    <label class="form-check-label" for="invalidCheck">
-      Agree to terms and conditions
-    </label>
-    <div class="invalid-feedback">
-      You must agree before submitting.
-    </div>
-  </div>
-</div>
-<div class="col-12">
-  <button class="btn btn-primary" type="submit">Submit form</button>
-</div>
-</form>
-
// Example starter JavaScript for disabling form submissions if there are invalid fields
-(() => {
-  'use strict'
-
-  // Fetch all the forms we want to apply custom Bootstrap validation styles to
-  const forms = document.querySelectorAll('.needs-validation')
-
-  // Loop over them and prevent submission
-  Array.from(forms).forEach(form => {
-    form.addEventListener('submit', event => {
-      if (!form.checkValidity()) {
-        event.preventDefault()
-        event.stopPropagation()
-      }
-
-      form.classList.add('was-validated')
-    }, false)
-  })
-})()
-
-

Browser defaults

-

Not interested in custom validation feedback messages or writing JavaScript to change form behaviors? All good, you can use the browser defaults. Try submitting the form below. Depending on your browser and OS, you'll see a slightly different style of feedback.

-

While these feedback styles cannot be styled with CSS, you can still customize the feedback text through JavaScript.

-
-
- - -
-
- - -
-
- -
- @ - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-
- -
-
html
<form class="row g-3">
-<div class="col-md-4">
-  <label for="validationDefault01" class="form-label">First name</label>
-  <input type="text" class="form-control" id="validationDefault01" value="Mark" required>
-</div>
-<div class="col-md-4">
-  <label for="validationDefault02" class="form-label">Last name</label>
-  <input type="text" class="form-control" id="validationDefault02" value="Otto" required>
-</div>
-<div class="col-md-4">
-  <label for="validationDefaultUsername" class="form-label">Username</label>
-  <div class="input-group">
-    <span class="input-group-text" id="inputGroupPrepend2">@</span>
-    <input type="text" class="form-control" id="validationDefaultUsername" aria-describedby="inputGroupPrepend2" required>
-  </div>
-</div>
-<div class="col-md-6">
-  <label for="validationDefault03" class="form-label">City</label>
-  <input type="text" class="form-control" id="validationDefault03" required>
-</div>
-<div class="col-md-3">
-  <label for="validationDefault04" class="form-label">State</label>
-  <select class="form-select" id="validationDefault04" required>
-    <option selected disabled value="">Choose...</option>
-    <option>...</option>
-  </select>
-</div>
-<div class="col-md-3">
-  <label for="validationDefault05" class="form-label">Zip</label>
-  <input type="text" class="form-control" id="validationDefault05" required>
-</div>
-<div class="col-12">
-  <div class="form-check">
-    <input class="form-check-input" type="checkbox" value="" id="invalidCheck2" required>
-    <label class="form-check-label" for="invalidCheck2">
-      Agree to terms and conditions
-    </label>
-  </div>
-</div>
-<div class="col-12">
-  <button class="btn btn-primary" type="submit">Submit form</button>
-</div>
-</form>
-

Server-side

-

We recommend using client-side validation, but in case you require server-side validation, you can indicate invalid and valid form fields with .is-invalid and .is-valid. Note that .invalid-feedback is also supported with these classes.

-

For invalid fields, ensure that the invalid feedback/error message is associated with the relevant form field using aria-describedby (noting that this attribute allows more than one id to be referenced, in case the field already points to additional form text).

-

To fix issues with border radius, input groups require an additional .has-validation class.

-
-
- - -
- Looks good! -
-
-
- - -
- Looks good! -
-
-
- -
- @ - -
- Please choose a username. -
-
-
-
- - -
- Please provide a valid city. -
-
-
- - -
- Please select a valid state. -
-
-
- - -
- Please provide a valid zip. -
-
-
-
- - -
- You must agree before submitting. -
-
-
-
- -
-
html
<form class="row g-3">
-<div class="col-md-4">
-  <label for="validationServer01" class="form-label">First name</label>
-  <input type="text" class="form-control is-valid" id="validationServer01" value="Mark" required>
-  <div class="valid-feedback">
-    Looks good!
-  </div>
-</div>
-<div class="col-md-4">
-  <label for="validationServer02" class="form-label">Last name</label>
-  <input type="text" class="form-control is-valid" id="validationServer02" value="Otto" required>
-  <div class="valid-feedback">
-    Looks good!
-  </div>
-</div>
-<div class="col-md-4">
-  <label for="validationServerUsername" class="form-label">Username</label>
-  <div class="input-group has-validation">
-    <span class="input-group-text" id="inputGroupPrepend3">@</span>
-    <input type="text" class="form-control is-invalid" id="validationServerUsername" aria-describedby="inputGroupPrepend3 validationServerUsernameFeedback" required>
-    <div id="validationServerUsernameFeedback" class="invalid-feedback">
-      Please choose a username.
-    </div>
-  </div>
-</div>
-<div class="col-md-6">
-  <label for="validationServer03" class="form-label">City</label>
-  <input type="text" class="form-control is-invalid" id="validationServer03" aria-describedby="validationServer03Feedback" required>
-  <div id="validationServer03Feedback" class="invalid-feedback">
-    Please provide a valid city.
-  </div>
-</div>
-<div class="col-md-3">
-  <label for="validationServer04" class="form-label">State</label>
-  <select class="form-select is-invalid" id="validationServer04" aria-describedby="validationServer04Feedback" required>
-    <option selected disabled value="">Choose...</option>
-    <option>...</option>
-  </select>
-  <div id="validationServer04Feedback" class="invalid-feedback">
-    Please select a valid state.
-  </div>
-</div>
-<div class="col-md-3">
-  <label for="validationServer05" class="form-label">Zip</label>
-  <input type="text" class="form-control is-invalid" id="validationServer05" aria-describedby="validationServer05Feedback" required>
-  <div id="validationServer05Feedback" class="invalid-feedback">
-    Please provide a valid zip.
-  </div>
-</div>
-<div class="col-12">
-  <div class="form-check">
-    <input class="form-check-input is-invalid" type="checkbox" value="" id="invalidCheck3" aria-describedby="invalidCheck3Feedback" required>
-    <label class="form-check-label" for="invalidCheck3">
-      Agree to terms and conditions
-    </label>
-    <div id="invalidCheck3Feedback" class="invalid-feedback">
-      You must agree before submitting.
-    </div>
-  </div>
-</div>
-<div class="col-12">
-  <button class="btn btn-primary" type="submit">Submit form</button>
-</div>
-</form>
-

Supported elements

-

Validation styles are available for the following form controls and components:

-
    -
  • <input>s and <textarea>s with .form-control (including up to one .form-control in input groups)
  • -
  • <select>s with .form-select
  • -
  • .form-checks
  • -
-
-
- - -
- Please enter a message in the textarea. -
-
- -
- - -
Example invalid feedback text
-
- -
- - -
-
- - -
More example invalid feedback text
-
- -
- -
Example invalid select feedback
-
- -
- -
Example invalid form file feedback
-
- -
- -
-
html
<form class="was-validated">
-<div class="mb-3">
-  <label for="validationTextarea" class="form-label">Textarea</label>
-  <textarea class="form-control" id="validationTextarea" placeholder="Required example textarea" required></textarea>
-  <div class="invalid-feedback">
-    Please enter a message in the textarea.
-  </div>
-</div>
-
-<div class="form-check mb-3">
-  <input type="checkbox" class="form-check-input" id="validationFormCheck1" required>
-  <label class="form-check-label" for="validationFormCheck1">Check this checkbox</label>
-  <div class="invalid-feedback">Example invalid feedback text</div>
-</div>
-
-<div class="form-check">
-  <input type="radio" class="form-check-input" id="validationFormCheck2" name="radio-stacked" required>
-  <label class="form-check-label" for="validationFormCheck2">Toggle this radio</label>
-</div>
-<div class="form-check mb-3">
-  <input type="radio" class="form-check-input" id="validationFormCheck3" name="radio-stacked" required>
-  <label class="form-check-label" for="validationFormCheck3">Or toggle this other radio</label>
-  <div class="invalid-feedback">More example invalid feedback text</div>
-</div>
-
-<div class="mb-3">
-  <select class="form-select" required aria-label="select example">
-    <option value="">Open this select menu</option>
-    <option value="1">One</option>
-    <option value="2">Two</option>
-    <option value="3">Three</option>
-  </select>
-  <div class="invalid-feedback">Example invalid select feedback</div>
-</div>
-
-<div class="mb-3">
-  <input type="file" class="form-control" aria-label="file example" required>
-  <div class="invalid-feedback">Example invalid form file feedback</div>
-</div>
-
-<div class="mb-3">
-  <button class="btn btn-primary" type="submit" disabled>Submit form</button>
-</div>
-</form>
-

Tooltips

-

If your form layout allows it, you can swap the .{valid|invalid}-feedback classes for .{valid|invalid}-tooltip classes to display validation feedback in a styled tooltip. Be sure to have a parent with position: relative on it for tooltip positioning. In the example below, our column classes have this already, but your project may require an alternative setup.

-
-
- - -
- Looks good! -
-
-
- - -
- Looks good! -
-
-
- -
- @ - -
- Please choose a unique and valid username. -
-
-
-
- - -
- Please provide a valid city. -
-
-
- - -
- Please select a valid state. -
-
-
- - -
- Please provide a valid zip. -
-
-
- -
-
html
<form class="row g-3 needs-validation" novalidate>
-<div class="col-md-4 position-relative">
-  <label for="validationTooltip01" class="form-label">First name</label>
-  <input type="text" class="form-control" id="validationTooltip01" value="Mark" required>
-  <div class="valid-tooltip">
-    Looks good!
-  </div>
-</div>
-<div class="col-md-4 position-relative">
-  <label for="validationTooltip02" class="form-label">Last name</label>
-  <input type="text" class="form-control" id="validationTooltip02" value="Otto" required>
-  <div class="valid-tooltip">
-    Looks good!
-  </div>
-</div>
-<div class="col-md-4 position-relative">
-  <label for="validationTooltipUsername" class="form-label">Username</label>
-  <div class="input-group has-validation">
-    <span class="input-group-text" id="validationTooltipUsernamePrepend">@</span>
-    <input type="text" class="form-control" id="validationTooltipUsername" aria-describedby="validationTooltipUsernamePrepend" required>
-    <div class="invalid-tooltip">
-      Please choose a unique and valid username.
-    </div>
-  </div>
-</div>
-<div class="col-md-6 position-relative">
-  <label for="validationTooltip03" class="form-label">City</label>
-  <input type="text" class="form-control" id="validationTooltip03" required>
-  <div class="invalid-tooltip">
-    Please provide a valid city.
-  </div>
-</div>
-<div class="col-md-3 position-relative">
-  <label for="validationTooltip04" class="form-label">State</label>
-  <select class="form-select" id="validationTooltip04" required>
-    <option selected disabled value="">Choose...</option>
-    <option>...</option>
-  </select>
-  <div class="invalid-tooltip">
-    Please select a valid state.
-  </div>
-</div>
-<div class="col-md-3 position-relative">
-  <label for="validationTooltip05" class="form-label">Zip</label>
-  <input type="text" class="form-control" id="validationTooltip05" required>
-  <div class="invalid-tooltip">
-    Please provide a valid zip.
-  </div>
-</div>
-<div class="col-12">
-  <button class="btn btn-primary" type="submit">Submit form</button>
-</div>
-</form>
-

CSS

-

Variables

-Added in v5.3.0 -

As part of Bootstrap's evolving CSS variables approach, forms now use local CSS variables for validation for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

-
  --#{$prefix}form-valid-color: #{$form-valid-color};
-  --#{$prefix}form-valid-border-color: #{$form-valid-border-color};
-  --#{$prefix}form-invalid-color: #{$form-invalid-color};
-  --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};
-  
-

These variables are also color mode adaptive, meaning they change color while in dark mode.

-

Sass variables

-
$form-feedback-margin-top:          $form-text-margin-top;
-$form-feedback-font-size:           $form-text-font-size;
-$form-feedback-font-style:          $form-text-font-style;
-$form-feedback-valid-color:         $success;
-$form-feedback-invalid-color:       $danger;
-
-$form-feedback-icon-valid-color:    $form-feedback-valid-color;
-$form-feedback-icon-valid:          url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/></svg>");
-$form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
-$form-feedback-icon-invalid:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>");
-
-
$form-valid-color:                  $form-feedback-valid-color;
-$form-valid-border-color:           $form-feedback-valid-color;
-$form-invalid-color:                $form-feedback-invalid-color;
-$form-invalid-border-color:         $form-feedback-invalid-color;
-
-
$form-valid-color-dark:             $green-300;
-$form-valid-border-color-dark:      $green-300;
-$form-invalid-color-dark:           $red-300;
-$form-invalid-border-color-dark:    $red-300;
-
-

Sass mixins

-

Two mixins are combined, through our loop, to generate our form validation feedback styles.

-
@mixin form-validation-state-selector($state) {
-  @if ($state == "valid" or $state == "invalid") {
-    .was-validated #{if(&, "&", "")}:#{$state},
-    #{if(&, "&", "")}.is-#{$state} {
-      @content;
-    }
-  } @else {
-    #{if(&, "&", "")}.is-#{$state} {
-      @content;
-    }
-  }
-}
-
-@mixin form-validation-state(
-  $state,
-  $color,
-  $icon,
-  $tooltip-color: color-contrast($color),
-  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
-  $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity),
-  $border-color: $color
-) {
-  .#{$state}-feedback {
-    display: none;
-    width: 100%;
-    margin-top: $form-feedback-margin-top;
-    @include font-size($form-feedback-font-size);
-    font-style: $form-feedback-font-style;
-    color: $color;
-  }
-
-  .#{$state}-tooltip {
-    position: absolute;
-    top: 100%;
-    z-index: 5;
-    display: none;
-    max-width: 100%; // Contain to parent when possible
-    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
-    margin-top: .1rem;
-    @include font-size($form-feedback-tooltip-font-size);
-    line-height: $form-feedback-tooltip-line-height;
-    color: $tooltip-color;
-    background-color: $tooltip-bg-color;
-    @include border-radius($form-feedback-tooltip-border-radius);
-  }
-
-  @include form-validation-state-selector($state) {
-    ~ .#{$state}-feedback,
-    ~ .#{$state}-tooltip {
-      display: block;
-    }
-  }
-
-  .form-control {
-    @include form-validation-state-selector($state) {
-      border-color: $border-color;
-
-      @if $enable-validation-icons {
-        padding-right: $input-height-inner;
-        background-image: escape-svg($icon);
-        background-repeat: no-repeat;
-        background-position: right $input-height-inner-quarter center;
-        background-size: $input-height-inner-half $input-height-inner-half;
-      }
-
-      &:focus {
-        border-color: $border-color;
-        @if $enable-shadows {
-          @include box-shadow($input-box-shadow, $focus-box-shadow);
-        } @else {
-          // Avoid using mixin so we can pass custom focus shadow properly
-          box-shadow: $focus-box-shadow;
-        }
-      }
-    }
-  }
-
-  // stylelint-disable-next-line selector-no-qualifying-type
-  textarea.form-control {
-    @include form-validation-state-selector($state) {
-      @if $enable-validation-icons {
-        padding-right: $input-height-inner;
-        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
-      }
-    }
-  }
-
-  .form-select {
-    @include form-validation-state-selector($state) {
-      border-color: $border-color;
-
-      @if $enable-validation-icons {
-        &:not([multiple]):not([size]),
-        &:not([multiple])[size="1"] {
-          --#{$prefix}form-select-bg-icon: #{escape-svg($icon)};
-          padding-right: $form-select-feedback-icon-padding-end;
-          background-position: $form-select-bg-position, $form-select-feedback-icon-position;
-          background-size: $form-select-bg-size, $form-select-feedback-icon-size;
-        }
-      }
-
-      &:focus {
-        border-color: $border-color;
-        @if $enable-shadows {
-          @include box-shadow($form-select-box-shadow, $focus-box-shadow);
-        } @else {
-          // Avoid using mixin so we can pass custom focus shadow properly
-          box-shadow: $focus-box-shadow;
-        }
-      }
-    }
-  }
-
-  .form-control-color {
-    @include form-validation-state-selector($state) {
-      @if $enable-validation-icons {
-        width: add($form-color-width, $input-height-inner);
-      }
-    }
-  }
-
-  .form-check-input {
-    @include form-validation-state-selector($state) {
-      border-color: $border-color;
-
-      &:checked {
-        background-color: $color;
-      }
-
-      &:focus {
-        box-shadow: $focus-box-shadow;
-      }
-
-      ~ .form-check-label {
-        color: $color;
-      }
-    }
-  }
-  .form-check-inline .form-check-input {
-    ~ .#{$state}-feedback {
-      margin-left: .5em;
-    }
-  }
-
-  .input-group {
-    > .form-control:not(:focus),
-    > .form-select:not(:focus),
-    > .form-floating:not(:focus-within) {
-      @include form-validation-state-selector($state) {
-        @if $state == "valid" {
-          z-index: 3;
-        } @else if $state == "invalid" {
-          z-index: 4;
-        }
-      }
-    }
-  }
-}
-
-

Sass maps

-

This is the validation Sass map from _variables.scss. Override or extend this to generate different or additional states.

-
$form-validation-states: (
-  "valid": (
-    "color": var(--#{$prefix}form-valid-color),
-    "icon": $form-feedback-icon-valid,
-    "tooltip-color": #fff,
-    "tooltip-bg-color": var(--#{$prefix}success),
-    "focus-box-shadow": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),
-    "border-color": var(--#{$prefix}form-valid-border-color),
-  ),
-  "invalid": (
-    "color": var(--#{$prefix}form-invalid-color),
-    "icon": $form-feedback-icon-invalid,
-    "tooltip-color": #fff,
-    "tooltip-bg-color": var(--#{$prefix}danger),
-    "focus-box-shadow": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),
-    "border-color": var(--#{$prefix}form-invalid-border-color),
-  )
-);
-
-

Maps of $form-validation-states can contain three optional parameters to override tooltips and focus styles.

-

Sass loops

-

Used to iterate over $form-validation-states map values to generate our validation styles. Any modifications to the above Sass map will be reflected in your compiled CSS via this loop.

-
@each $state, $data in $form-validation-states {
-  @include form-validation-state($state, $data...);
-}
-
-

Customizing

-

Validation states can be customized via Sass with the $form-validation-states map. Located in our _variables.scss file, this Sass map is how we generate the default valid/invalid validation states. Included is a nested map for customizing each state's color, icon, tooltip color, and focus shadow. While no other states are supported by browsers, those using custom styles can easily add more complex form feedback.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/accessibility/index.html b/site/dist/docs/5.3/getting-started/accessibility/index.html deleted file mode 100644 index 8f0c01b1a8..0000000000 --- a/site/dist/docs/5.3/getting-started/accessibility/index.html +++ /dev/null @@ -1,61 +0,0 @@ - Accessibility · Bootstrap v5.3

Accessibility

A brief overview of Bootstrap's features and limitations for the creation of accessible content.

Bootstrap provides an easy-to-use framework of ready-made styles, layout tools, and interactive components, allowing developers to create websites and applications that are visually appealing, functionally rich, and accessible out of the box.

-

Overview and limitations

-

The overall accessibility of any project built with Bootstrap depends in large part on the author's markup, additional styling, and scripting they've included. However, provided that these have been implemented correctly, it should be perfectly possible to create websites and applications with Bootstrap that fulfill WCAG 2.2 (A/AA/AAA), Section 508, and similar accessibility standards and requirements.

-

Structural markup

-

Bootstrap's styling and layout can be applied to a wide range of markup structures. This documentation aims to provide developers with best practice examples to demonstrate the use of Bootstrap itself and illustrate appropriate semantic markup, including ways in which potential accessibility concerns can be addressed.

-

Interactive components

-

Bootstrap's interactive components—such as modal dialogs, dropdown menus, and custom tooltips—are designed to work for touch, mouse, and keyboard users. Through the use of relevant WAI-ARIA roles and attributes, these components should also be understandable and operable using assistive technologies (such as screen readers).

-

Because Bootstrap's components are purposely designed to be fairly generic, authors may need to include further ARIA roles and attributes, as well as JavaScript behavior, to more accurately convey the precise nature and functionality of their component. This is usually noted in the documentation.

-

Color contrast

-

Some combinations of colors that currently make up Bootstrap's default palette—used throughout the framework for things such as button variations, alert variations, form validation indicators—may lead to insufficient color contrast (below the recommended WCAG 2.2 text color contrast ratio of 4.5:1 and the WCAG 2.2 non-text color contrast ratio of 3:1), particularly when used against a light background. Authors are encouraged to test their specific uses of color and, where necessary, manually modify/extend these default colors to ensure adequate color contrast ratios.

-

Visually hidden content

-

Content which should be visually hidden, but remain accessible to assistive technologies such as screen readers, can be styled using the .visually-hidden class. This can be useful in situations where additional visual information or cues (such as meaning denoted through the use of color) need to also be conveyed to non-visual users.

-
<p class="text-danger">
-  <span class="visually-hidden">Danger: </span>
-  This action is not reversible
-</p>
-
-

For visually hidden interactive controls, such as traditional "skip" links, use the .visually-hidden-focusable class. This will ensure that the control becomes visible once focused (for sighted keyboard users). Watch out, compared to the equivalent .sr-only and .sr-only-focusable classes in past versions, Bootstrap 5's .visually-hidden-focusable is a standalone class, and must not be used in combination with the .visually-hidden class.

-
<a class="visually-hidden-focusable" href="#content">Skip to main content</a>
-
-

Reduced motion

-

Bootstrap includes support for the prefers-reduced-motion media feature. In browsers/environments that allow the user to specify their preference for reduced motion, most CSS transition effects in Bootstrap (for instance, when a modal dialog is opened or closed, or the sliding animation in carousels) will be disabled, and meaningful animations (such as spinners) will be slowed down.

-

On browsers that support prefers-reduced-motion, and where the user has not explicitly signaled that they'd prefer reduced motion (i.e. where prefers-reduced-motion: no-preference), Bootstrap enables smooth scrolling using the scroll-behavior property.

-

Additional resources

-
\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/best-practices/index.html b/site/dist/docs/5.3/getting-started/best-practices/index.html deleted file mode 100644 index 69b24bf05b..0000000000 --- a/site/dist/docs/5.3/getting-started/best-practices/index.html +++ /dev/null @@ -1,34 +0,0 @@ - Best practices · Bootstrap v5.3

Best practices

Learn about some of the best practices we've gathered from years of working on and using Bootstrap.

We've designed and developed Bootstrap to work in a number of environments. Here are some of the best practices we've gathered from years of working on and using it ourselves.

-

Heads up! This copy is a work in progress.

-

General outline

-
    -
  • Working with CSS
  • -
  • Working with Sass files
  • -
  • Building new CSS components
  • -
  • Working with flexbox
  • -
  • Ask in our GitHub Discussions
  • -
\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/browsers-devices/index.html b/site/dist/docs/5.3/getting-started/browsers-devices/index.html deleted file mode 100644 index fd7adc2dbf..0000000000 --- a/site/dist/docs/5.3/getting-started/browsers-devices/index.html +++ /dev/null @@ -1,121 +0,0 @@ - Browsers and devices · Bootstrap v5.3

Browsers and devices

Learn about the browsers and devices, from modern to old, that are supported by Bootstrap, including known quirks and bugs for each.

Supported browsers

-

Bootstrap supports the latest, stable releases of all major browsers and platforms.

-

Alternative browsers which use the latest version of WebKit, Blink, or Gecko, whether directly or via the platform's web view API, are not explicitly supported. However, Bootstrap should (in most cases) display and function correctly in these browsers as well. More specific support information is provided below.

-

You can find our supported range of browsers and their versions in our .browserslistrc file:

-
# https://github.com/browserslist/browserslist#readme
-
->= 0.5%
-last 2 major versions
-not dead
-Chrome >= 60
-Firefox >= 60
-Firefox ESR
-iOS >= 12
-Safari >= 12
-not Explorer <= 11
-
-

We use Autoprefixer to handle intended browser support via CSS prefixes, which uses Browserslist to manage these browser versions. Consult their documentation for how to integrate these tools into your projects.

-

Mobile devices

-

Generally speaking, Bootstrap supports the latest versions of each major platform's default browsers. Note that proxy browsers (such as Opera Mini, Opera Mobile's Turbo mode, UC Browser Mini, Amazon Silk) are not supported.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
ChromeFirefoxSafariAndroid Browser & WebView
AndroidSupportedSupportedv6.0+
iOSSupportedSupportedSupported
-

Desktop browsers

-

Similarly, the latest versions of most desktop browsers are supported.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ChromeFirefoxMicrosoft EdgeOperaSafari
MacSupportedSupportedSupportedSupportedSupported
WindowsSupportedSupportedSupportedSupported
-

For Firefox, in addition to the latest normal stable release, we also support the latest Extended Support Release (ESR) version of Firefox.

-

Unofficially, Bootstrap should look and behave well enough in Chromium and Chrome for Linux, and Firefox for Linux, though they are not officially supported.

-

Internet Explorer

-

Internet Explorer is not supported. If you require Internet Explorer support, please use Bootstrap v4.

-

Modals and dropdowns on mobile

-

Overflow and scrolling

-

Support for overflow: hidden; on the <body> element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices' browsers, the <body> content will begin to scroll. See Chrome bug #175502 (fixed in Chrome v40) and WebKit bug #153852.

-

iOS text fields and scrolling

-

As of iOS 9.2, while a modal is open, if the initial touch of a scroll gesture is within the boundary of a textual <input> or a <textarea>, the <body> content underneath the modal will be scrolled instead of the modal itself. See WebKit bug #153856.

- -

The .dropdown-backdrop element isn't used on iOS in the nav because of the complexity of z-indexing. Thus, to close dropdowns in navbars, you must directly click the dropdown element (or any other element which will fire a click event in iOS).

-

Browser zooming

-

Page zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.

-

Validators

-

In order to provide the best possible experience to old and buggy browsers, Bootstrap uses CSS browser hacks in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.

-

These validation warnings don't matter in practice since the non-hacky portion of our CSS does fully validate and the hacky portions don't interfere with the proper functioning of the non-hacky portion, hence why we deliberately ignore these particular warnings.

-

Our HTML docs likewise have some trivial and inconsequential HTML validation warnings due to our inclusion of a workaround for a certain Firefox bug.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/build-tools/index.html b/site/dist/docs/5.3/getting-started/build-tools/index.html deleted file mode 100644 index 93d65fe91c..0000000000 --- a/site/dist/docs/5.3/getting-started/build-tools/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/contents/index.html b/site/dist/docs/5.3/getting-started/contents/index.html deleted file mode 100644 index 6f5acadb03..0000000000 --- a/site/dist/docs/5.3/getting-started/contents/index.html +++ /dev/null @@ -1,157 +0,0 @@ - Contents · Bootstrap v5.3

Discover what's included in Bootstrap, including our compiled and source code flavors.

Compiled Bootstrap

-

Once downloaded, unzip the compressed folder and you'll see something like this:

- -
bootstrap/
-├── css/
-│   ├── bootstrap-grid.css
-│   ├── bootstrap-grid.css.map
-│   ├── bootstrap-grid.min.css
-│   ├── bootstrap-grid.min.css.map
-│   ├── bootstrap-grid.rtl.css
-│   ├── bootstrap-grid.rtl.css.map
-│   ├── bootstrap-grid.rtl.min.css
-│   ├── bootstrap-grid.rtl.min.css.map
-│   ├── bootstrap-reboot.css
-│   ├── bootstrap-reboot.css.map
-│   ├── bootstrap-reboot.min.css
-│   ├── bootstrap-reboot.min.css.map
-│   ├── bootstrap-reboot.rtl.css
-│   ├── bootstrap-reboot.rtl.css.map
-│   ├── bootstrap-reboot.rtl.min.css
-│   ├── bootstrap-reboot.rtl.min.css.map
-│   ├── bootstrap-utilities.css
-│   ├── bootstrap-utilities.css.map
-│   ├── bootstrap-utilities.min.css
-│   ├── bootstrap-utilities.min.css.map
-│   ├── bootstrap-utilities.rtl.css
-│   ├── bootstrap-utilities.rtl.css.map
-│   ├── bootstrap-utilities.rtl.min.css
-│   ├── bootstrap-utilities.rtl.min.css.map
-│   ├── bootstrap.css
-│   ├── bootstrap.css.map
-│   ├── bootstrap.min.css
-│   ├── bootstrap.min.css.map
-│   ├── bootstrap.rtl.css
-│   ├── bootstrap.rtl.css.map
-│   ├── bootstrap.rtl.min.css
-│   └── bootstrap.rtl.min.css.map
-└── js/
-    ├── bootstrap.bundle.js
-    ├── bootstrap.bundle.js.map
-    ├── bootstrap.bundle.min.js
-    ├── bootstrap.bundle.min.js.map
-    ├── bootstrap.esm.js
-    ├── bootstrap.esm.js.map
-    ├── bootstrap.esm.min.js
-    ├── bootstrap.esm.min.js.map
-    ├── bootstrap.js
-    ├── bootstrap.js.map
-    ├── bootstrap.min.js
-    └── bootstrap.min.js.map
-
-

This is the most basic form of Bootstrap: compiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). Source maps](https://web.dev/articles/source-maps) (bootstrap.*.map) are available for use with certain browsers' developer tools. Bundled JS files (bootstrap.bundle.js and minified bootstrap.bundle.min.js) include Popper.

-

CSS files

-

Bootstrap includes a handful of options for including some or all of our compiled CSS.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CSS filesLayoutContentComponentsUtilities
bootstrap.css
bootstrap.min.css
bootstrap.rtl.css
bootstrap.rtl.min.css
IncludedIncludedIncludedIncluded
bootstrap-grid.css
bootstrap-grid.rtl.css
bootstrap-grid.min.css
bootstrap-grid.rtl.min.css
Only grid systemOnly flex utilities
bootstrap-utilities.css
bootstrap-utilities.rtl.css
bootstrap-utilities.min.css
bootstrap-utilities.rtl.min.css
Included
bootstrap-reboot.css
bootstrap-reboot.rtl.css
bootstrap-reboot.min.css
bootstrap-reboot.rtl.min.css
Only Reboot
-

JS files

-

Similarly, we have options for including some or all of our compiled JavaScript.

-
- - - - - - - - - - - - - - - - -
JS FilesPopper
bootstrap.bundle.js
bootstrap.bundle.min.js
Included
bootstrap.js
bootstrap.min.js
-

Bootstrap source code

-

The Bootstrap source code download includes the compiled CSS and JavaScript assets, along with source Sass, JavaScript, and documentation. More specifically, it includes the following and more:

-
bootstrap/
-├── dist/
-│   ├── css/
-│   └── js/
-├── site/
-│   └──content/
-│      └── docs/
-│          └── 5.3/
-│              └── examples/
-├── js/
-└── scss/
-
-

The scss/ and js/ are the source code for our CSS and JavaScript. The dist/ folder includes everything listed in the compiled download section above. The site/content/docs/ folder includes the source code for our hosted documentation, including our live examples of Bootstrap usage.

-

Beyond that, any other included file provides support for packages, license information, and development.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/contribute/index.html b/site/dist/docs/5.3/getting-started/contribute/index.html deleted file mode 100644 index b945524b3d..0000000000 --- a/site/dist/docs/5.3/getting-started/contribute/index.html +++ /dev/null @@ -1,80 +0,0 @@ - Contribute · Bootstrap v5.3

Contribute

Help develop Bootstrap with our documentation build scripts and tests.

Tooling setup

-

Bootstrap uses npm scripts to build the documentation and compile source files. Our package.json houses these scripts for compiling code, running tests, and more. These aren't intended for use outside our repository and documentation.

-

To use our build system and run our documentation locally, you'll need a copy of Bootstrap's source files and Node. Follow these steps and you should be ready to rock:

-
    -
  1. Download and install Node.js, which we use to manage our dependencies.
  2. -
  3. Either download Bootstrap's sources or fork and clone Bootstrap's repository.
  4. -
  5. Navigate to the root /bootstrap directory and run npm install to install our local dependencies listed in package.json.
  6. -
-

When completed, you'll be able to run the various commands provided from the command line.

-

Using npm scripts

-

Our package.json includes numerous tasks for developing the project. Run npm run to see all the npm scripts in your terminal. Primary tasks include:

-
- - - - - - - - - - - - - - - - - - - - - - - - -
TaskDescription
npm startCompiles CSS and JavaScript, builds the documentation, and starts a local server.
npm run distCreates the dist/ directory with compiled files. Uses Sass, Autoprefixer, and terser.
npm testRuns tests locally after running npm run dist
npm run docs-serveBuilds and runs the documentation locally.
-

Get started with Bootstrap via npm with our starter project! Head to the Sass & JS example template repository to see how to build and customize Bootstrap in your own npm project. Includes Sass compiler, Autoprefixer, Stylelint, PurgeCSS, and Bootstrap Icons.

-

Sass

-

Bootstrap uses Dart Sass for compiling our Sass source files into CSS files (included in our build process), and we recommend you do the same if you're compiling Sass using your own asset pipeline. We previously used Node Sass for Bootstrap v4, but LibSass and packages built on top of it, including Node Sass, are now deprecated.

-

Dart Sass uses a rounding precision of 10 and for efficiency reasons does not allow adjustment of this value. We don't lower this precision during further processing of our generated CSS, such as during minification, but if you chose to do so we recommend maintaining a precision of at least 6 to prevent issues with browser rounding.

-

Autoprefixer

-

Bootstrap uses Autoprefixer (included in our build process) to automatically add vendor prefixes to some CSS properties at build time. Doing so saves us time and code by allowing us to write key parts of our CSS a single time while eliminating the need for vendor mixins like those found in v3.

-

We maintain the list of browsers supported through Autoprefixer in a separate file within our GitHub repository. See .browserslistrc for details.

-

RTLCSS

-

Bootstrap uses RTLCSS to process compiled CSS and convert them to RTL – basically replacing horizontal direction aware properties (e.g. padding-left) with their opposite. It allows us only write our CSS a single time and make minor tweaks using RTLCSS control and value directives.

-

Local documentation

-

Running our documentation locally requires the use of Astro. Astro is a modern static site generator that allows us to build our documentation with a combination of Markdown and React components. Here's how to get it started:

-
    -
  1. Run through the tooling setup above to install all dependencies.
  2. -
  3. From the root /bootstrap directory, run npm run docs-serve in the command line.
  4. -
  5. Open http://localhost:4321/ in your browser, and voilà.
  6. -
-

Learn more about using Astro by reading its documentation.

-

Troubleshooting

-

Should you encounter problems with installing dependencies, uninstall all previous dependency versions (global and local). Then, rerun npm install.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/download/index.html b/site/dist/docs/5.3/getting-started/download/index.html deleted file mode 100644 index 1900e725eb..0000000000 --- a/site/dist/docs/5.3/getting-started/download/index.html +++ /dev/null @@ -1,104 +0,0 @@ - Download · Bootstrap v5.3

Download Bootstrap to get the compiled CSS and JavaScript, source code, or include it with your favorite package managers like npm, RubyGems, and more.

Compiled CSS and JS

-

Download ready-to-use compiled code for Bootstrap v5.3.3 to easily drop into your project, which includes:

- -

This doesn't include documentation, source files, or any optional JavaScript dependencies like Popper.

-Download -

Source files

-

Compile Bootstrap with your own asset pipeline by downloading our source Sass, JavaScript, and documentation files. This option requires some additional tooling:

- -

Should you require our full set of build tools, they are included for developing Bootstrap and its docs, but they're likely unsuitable for your own purposes.

-Download source -

Examples

-

If you want to download and examine our examples, you can grab the already built examples:

-Download Examples -

CDN via jsDelivr

-

Skip the download with jsDelivr to deliver cached version of Bootstrap's compiled CSS and JS to your project.

-
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
-
-

If you're using our compiled JavaScript and prefer to include Popper separately, add Popper before our JS, via a CDN preferably.

-
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script>
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy" crossorigin="anonymous"></script>
-
-

Alternative CDNs

-

We recommend jsDelivr and use it ourselves in our documentation. However, in some cases—like in some specific countries or environments—you may need to use other CDN providers like cdnjs or unpkg.

-

You'll find the same files on these CDN providers, albeit with different URLs. With cdnjs, you can use this direct Bootstrap package link to copy and paste ready-to-use HTML snippets for each dist file from any version of Bootstrap.

-

If the SRI hashes differ for a given file, you shouldn't use the files from that CDN, because it means that the file was modified by someone else.

-

Note that you should compare same length hashes, e.g. sha384 with sha384, otherwise it's expected for them to be different. -As such, you can use an online tool like SRI Hash Generator to make sure that the hashes are the same for a given file. -Alternatively, assuming you have OpenSSL installed, you can achieve the same from the CLI, for example:

-
openssl dgst -sha384 -binary bootstrap.min.js | openssl base64 -A
-
-

Package managers

-

Pull in Bootstrap's source files into nearly any project with some of the most popular package managers. No matter the package manager, Bootstrap will require a Sass compiler and Autoprefixer for a setup that matches our official compiled versions.

-

npm

-

Install Bootstrap in your Node.js powered apps with the npm package:

-
npm install bootstrap@5.3.3
-
-

const bootstrap = require('bootstrap') or import bootstrap from 'bootstrap' will load all of Bootstrap's plugins onto a bootstrap object. -The bootstrap module itself exports all of our plugins. You can manually load Bootstrap's plugins individually by loading the /js/dist/*.js files under the package's top-level directory.

-

Bootstrap's package.json contains some additional metadata under the following keys:

-
    -
  • sass - path to Bootstrap's main Sass source file
  • -
  • style - path to Bootstrap's non-minified CSS that's been compiled using the default settings (no customization)
  • -
-

Get started with Bootstrap via npm with our starter project! Head to the Sass & JS example template repository to see how to build and customize Bootstrap in your own npm project. Includes Sass compiler, Autoprefixer, Stylelint, PurgeCSS, and Bootstrap Icons.

-

yarn

-

Install Bootstrap in your Node.js powered apps with the yarn package:

-
yarn add bootstrap@5.3.3
-
-

Yarn 2+ (aka Yarn Berry) doesn't support the node_modules directory by default: using our Sass & JS example needs some adjustments:

yarn config set nodeLinker node-modules # Use the node_modules linker
-touch yarn.lock # Create an empty yarn.lock file
-yarn install # Install the dependencies
-yarn start # Start the project
-
-

RubyGems

-

Install Bootstrap in your Ruby apps using Bundler (recommended) and RubyGems by adding the following line to your Gemfile:

-
gem 'bootstrap', '~> 5.3.3'
-
-

Alternatively, if you're not using Bundler, you can install the gem by running this command:

-
gem install bootstrap -v 5.3.3
-
-

See the gem's README for further details.

-

Composer

-

You can also install and manage Bootstrap's Sass and JavaScript using Composer:

-
composer require twbs/bootstrap:5.3.3
-
-

NuGet

-

If you develop in .NET Framework, you can also install and manage Bootstrap's CSS or Sass and JavaScript using NuGet. Newer projects should use libman or another method as NuGet is designed for compiled code, not frontend assets.

-
Install-Package bootstrap
-
-
Install-Package bootstrap.sass
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/index.html b/site/dist/docs/5.3/getting-started/index.html deleted file mode 100644 index 77668bc23d..0000000000 --- a/site/dist/docs/5.3/getting-started/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/introduction/index.html b/site/dist/docs/5.3/getting-started/introduction/index.html deleted file mode 100644 index c5658295d4..0000000000 --- a/site/dist/docs/5.3/getting-started/introduction/index.html +++ /dev/null @@ -1,151 +0,0 @@ - Get started with Bootstrap · Bootstrap v5.3

Get started with Bootstrap

Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in minutes.

Quick start

-

Get started by including Bootstrap's production-ready CSS and JavaScript via CDN without the need for any build steps. See it in practice with this Bootstrap CodePen demo.

-
-
    -
  1. -

    Create a new index.html file in your project root. Include the <meta name="viewport"> tag as well for proper responsive behavior in mobile devices.

    -
    <!doctype html>
    -<html lang="en">
    -  <head>
    -    <meta charset="utf-8">
    -    <meta name="viewport" content="width=device-width, initial-scale=1">
    -    <title>Bootstrap demo</title>
    -  </head>
    -  <body>
    -    <h1>Hello, world!</h1>
    -  </body>
    -</html>
    -
    -
  2. -
  3. -

    Include Bootstrap's CSS and JS. Place the <link> tag in the <head> for our CSS, and the <script> tag for our JavaScript bundle (including Popper for positioning dropdowns, popovers, and tooltips) before the closing </body>. Learn more about our CDN links.

    -
    <!doctype html>
    -<html lang="en">
    -  <head>
    -    <meta charset="utf-8">
    -    <meta name="viewport" content="width=device-width, initial-scale=1">
    -    <title>Bootstrap demo</title>
    -    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
    -  </head>
    -  <body>
    -    <h1>Hello, world!</h1>
    -    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
    -  </body>
    -</html>
    -
    -

    You can also include Popper and our JS separately. If you don't plan to use dropdowns, popovers, or tooltips, save some kilobytes by not including Popper.

    -
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script>
    -<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy" crossorigin="anonymous"></script>
    -
    -
  4. -
  5. -

    Hello, world! Open the page in your browser of choice to see your Bootstrapped page. Now you can start building with Bootstrap by creating your own layout, adding dozens of components, and utilizing our official examples.

    -
  6. -
- -

As reference, here are our primary CDN links.

-
- - - - - - - - - - - - - - - - -
DescriptionURL
CSShttps://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css
JShttps://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js
-

You can also use the CDN to fetch any of our additional builds listed in the Contents page.

-

Next steps

- -

JS components

-

Curious which components explicitly require our JavaScript and Popper? If you're at all unsure about the general page structure, keep reading for an example page template.

-
    -
  • Accordions for extending our Collapse plugin
  • -
  • Alerts for dismissing
  • -
  • Buttons for toggling states and checkbox/radio functionality
  • -
  • Carousel for all slide behaviors, controls, and indicators
  • -
  • Collapse for toggling visibility of content
  • -
  • Dropdowns for displaying and positioning (also requires Popper)
  • -
  • Modals for displaying, positioning, and scroll behavior
  • -
  • Navbar for extending our Collapse and Offcanvas plugins to implement responsive behaviors
  • -
  • Navs with the Tab plugin for toggling content panes
  • -
  • Offcanvases for displaying, positioning, and scroll behavior
  • -
  • Scrollspy for scroll behavior and navigation updates
  • -
  • Toasts for displaying and dismissing
  • -
  • Tooltips and popovers for displaying and positioning (also requires Popper)
  • -
-

Important globals

-

Bootstrap employs a handful of important global styles and settings, all of which are almost exclusively geared towards the normalization of cross browser styles. Let's dive in.

-

HTML5 doctype

-

Bootstrap requires the use of the HTML5 doctype. Without it, you'll see some funky and incomplete styling.

-
<!doctype html>
-<html lang="en">
-  ...
-</html>
-
-

Viewport meta

-

Bootstrap is developed mobile first, a strategy in which we optimize code for mobile devices first and then scale up components as necessary using CSS media queries. To ensure proper rendering and touch zooming for all devices, add the responsive viewport meta tag to your <head>.

-
<meta name="viewport" content="width=device-width, initial-scale=1">
-
-

You can see an example of this in action in the quick start.

-

Box-sizing

-

For more straightforward sizing in CSS, we switch the global box-sizing value from content-box to border-box. This ensures padding does not affect the final computed width of an element, but it can cause problems with some third-party software like Google Maps and Google Custom Search Engine.

-

On the rare occasion you need to override it, use something like the following:

-
.selector-for-some-widget {
-  box-sizing: content-box;
-}
-
-

With the above snippet, nested elements—including generated content via ::before and ::after—will all inherit the specified box-sizing for that .selector-for-some-widget.

-

Learn more about box model and sizing at CSS Tricks.

-

Reboot

-

For improved cross-browser rendering, we use Reboot to correct inconsistencies across browsers and devices while providing slightly more opinionated resets to common HTML elements.

-

Community

-

Stay up-to-date on the development of Bootstrap and reach out to the community with these helpful resources.

-
    -
  • Read and subscribe to The Official Bootstrap Blog.
  • -
  • Ask questions and explore our GitHub Discussions.
  • -
  • Discuss, ask questions, and more on the community Discord or Bootstrap subreddit.
  • -
  • Chat with fellow Bootstrappers in IRC. On the irc.libera.chat server, in the #bootstrap channel.
  • -
  • Implementation help may be found at Stack Overflow (tagged bootstrap-5).
  • -
  • Developers should use the keyword bootstrap on packages that modify or add to the functionality of Bootstrap when distributing through npm or similar delivery mechanisms for maximum discoverability.
  • -
-

You can also follow @getbootstrap on Twitter for the latest gossip and awesome music videos.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/javascript/index.html b/site/dist/docs/5.3/getting-started/javascript/index.html deleted file mode 100644 index e4c45021f9..0000000000 --- a/site/dist/docs/5.3/getting-started/javascript/index.html +++ /dev/null @@ -1,299 +0,0 @@ - JavaScript · Bootstrap v5.3

JavaScript

Bring Bootstrap to life with our optional JavaScript plugins. Learn about each plugin, our data and programmatic API options, and more.

Individual or compiled

-

Plugins can be included individually (using Bootstrap's individual js/dist/*.js), or all at once using bootstrap.js or the minified bootstrap.min.js (don't include both).

-

If you use a bundler (Webpack, Parcel, Vite...), you can use /js/dist/*.js files which are UMD ready.

-

Usage with JavaScript frameworks

-

While the Bootstrap CSS can be used with any framework, the Bootstrap JavaScript is not fully compatible with JavaScript frameworks like React, Vue, and Angular which assume full knowledge of the DOM. Both Bootstrap and the framework may attempt to mutate the same DOM element, resulting in bugs like dropdowns that are stuck in the "open" position.

-

A better alternative for those using this type of frameworks is to use a framework-specific package instead of the Bootstrap JavaScript. Here are some of the most popular options:

- -

Using Bootstrap as a module

-

Try it yourself! Download the source code and working demo for using Bootstrap as an ES module from the twbs/examples repository. You can also open the example in StackBlitz.

-

We provide a version of Bootstrap built as ESM (bootstrap.esm.js and bootstrap.esm.min.js) which allows you to use Bootstrap as a module in the browser, if your targeted browsers support it.

- -
<script type="module">
-  import { Toast } from 'bootstrap.esm.min.js'
-
-  Array.from(document.querySelectorAll('.toast'))
-    .forEach(toastNode => new Toast(toastNode))
-</script>
-
-

Compared to JS bundlers, using ESM in the browser requires you to use the full path and filename instead of the module name. Read more about JS modules in the browser. That's why we use 'bootstrap.esm.min.js' instead of 'bootstrap' above. However, this is further complicated by our Popper dependency, which imports Popper into our JavaScript like so:

- -
import * as Popper from "@popperjs/core"
-
-

If you try this as-is, you'll see an error in the console like the following:

-
Uncaught TypeError: Failed to resolve module specifier "@popperjs/core". Relative references must start with either "/", "./", or "../".
-
-

To fix this, you can use an importmap to resolve the arbitrary module names to complete paths. If your targeted browsers do not support importmap, you'll need to use the es-module-shims project. Here's how it works for Bootstrap and Popper:

- -
<!doctype html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
-    <title>Hello, modularity!</title>
-  </head>
-  <body>
-    <h1>Hello, modularity!</h1>
-    <button id="popoverButton" type="button" class="btn btn-primary btn-lg" data-bs-toggle="popover" title="ESM in Browser" data-bs-content="Bang!">Custom popover</button>
-
-    <script async src="https://cdn.jsdelivr.net/npm/es-module-shims@1/dist/es-module-shims.min.js" crossorigin="anonymous"></script>
-    <script type="importmap">
-    {
-      "imports": {
-        "@popperjs/core": "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/esm/popper.min.js",
-        "bootstrap": "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.esm.min.js"
-      }
-    }
-    </script>
-    <script type="module">
-      import * as bootstrap from 'bootstrap'
-
-      new bootstrap.Popover(document.getElementById('popoverButton'))
-    </script>
-  </body>
-</html>
-
-

Dependencies

-

Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs.

-

Our dropdowns, popovers, and tooltips also depend on Popper.

-

Data attributes

-

Nearly all Bootstrap plugins can be enabled and configured through HTML alone with data attributes (our preferred way of using JavaScript functionality). Be sure to only use one set of data attributes on a single element (e.g., you cannot trigger a tooltip and modal from the same button.)

-

As options can be passed via data attributes or JavaScript, you can append an option name to data-bs-, as in data-bs-animation="{value}". Make sure to change the case type of the option name from "camelCase" to "kebab-case" when passing the options via data attributes. For example, use data-bs-custom-class="beautifier" instead of data-bs-customClass="beautifier".

-

As of Bootstrap 5.2.0, all components support an experimental reserved data attribute data-bs-config that can house simple component configuration as a JSON string. When an element has data-bs-config='{"delay":0, "title":123}' and data-bs-title="456" attributes, the final title value will be 456 and the separate data attributes will override values given on data-bs-config. In addition, existing data attributes are able to house JSON values like data-bs-delay='{"show":0,"hide":150}'.

-

The final configuration object is the merged result of data-bs-config, data-bs-, and js object where the latest given key-value overrides the others.

-

Selectors

-

We use the native querySelector and querySelectorAll methods to query DOM elements for performance reasons, so you must use valid selectors. If you use special selectors like collapse:Example, be sure to escape them.

-

Events

-

Bootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. show) is triggered at the start of an event, and its past participle form (ex. shown) is triggered on the completion of an action.

-

All infinitive events provide preventDefault() functionality. This provides the ability to stop the execution of an action before it starts. Returning false from an event handler will also automatically call preventDefault().

-
const myModal = document.querySelector('#myModal')
-
-myModal.addEventListener('show.bs.modal', event => {
-  return event.preventDefault() // stops modal from being shown
-})
-
-

Programmatic API

-

All constructors accept an optional options object or nothing (which initiates a plugin with its default behavior):

-
const myModalEl = document.querySelector('#myModal')
-const modal = new bootstrap.Modal(myModalEl) // initialized with defaults
-
-const configObject = { keyboard: false }
-const modal1 = new bootstrap.Modal(myModalEl, configObject) // initialized with no keyboard
-
-

If you'd like to get a particular plugin instance, each plugin exposes a getInstance method. For example, to retrieve an instance directly from an element:

-
bootstrap.Popover.getInstance(myPopoverEl)
-
-

This method will return null if an instance is not initiated over the requested element.

-

Alternatively, getOrCreateInstance can be used to get the instance associated with a DOM element, or create a new one in case it wasn't initialized.

-
bootstrap.Popover.getOrCreateInstance(myPopoverEl, configObject)
-
-

In case an instance wasn't initialized, it may accept and use an optional configuration object as second argument.

-

CSS selectors in constructors

-

In addition to the getInstance and getOrCreateInstance methods, all plugin constructors can accept a DOM element or a valid CSS selector as the first argument. Plugin elements are found with the querySelector method since our plugins only support a single element.

-
const modal = new bootstrap.Modal('#myModal')
-const dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')
-const offcanvas = bootstrap.Offcanvas.getInstance('#myOffcanvas')
-const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
-
-

Asynchronous functions and transitions

-

All programmatic API methods are asynchronous and return to the caller once the transition is started, but before it ends. In order to execute an action once the transition is complete, you can listen to the corresponding event.

-
const myCollapseEl = document.querySelector('#myCollapse')
-
-myCollapseEl.addEventListener('shown.bs.collapse', event => {
-  // Action to execute once the collapsible area is expanded
-})
-
-

In addition, a method call on a transitioning component will be ignored.

-
const myCarouselEl = document.querySelector('#myCarousel')
-const carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance
-
-myCarouselEl.addEventListener('slid.bs.carousel', event => {
-  carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished
-})
-
-carousel.to('1') // Will start sliding to the slide 1 and returns to the caller
-carousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!
-
-

dispose method

-

While it may seem correct to use the dispose method immediately after hide(), it will lead to incorrect results. Here's an example of the problem use:

-
const myModal = document.querySelector('#myModal')
-myModal.hide() // it is asynchronous
-
-myModal.addEventListener('shown.bs.hidden', event => {
-  myModal.dispose()
-})
-
-

Default settings

-

You can change the default settings for a plugin by modifying the plugin's Constructor.Default object:

-
// changes default for the modal plugin's `keyboard` option to false
-bootstrap.Modal.Default.keyboard = false
-
-

Methods and properties

-

Every Bootstrap plugin exposes the following methods and static properties.

-
- - - - - - - - - - - - - - - - - - - - -
MethodDescription
disposeDestroys an element's modal. (Removes stored data on the DOM element)
getInstanceStatic method which allows you to get the modal instance associated with a DOM element.
getOrCreateInstanceStatic method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized.
-
- - - - - - - - - - - - - - - - -
Static propertyDescription
NAMEReturns the plugin name. (Example: bootstrap.Tooltip.NAME)
VERSIONThe version of each of Bootstrap's plugins can be accessed via the VERSION property of the plugin's constructor (Example: bootstrap.Tooltip.VERSION)
-

Sanitizer

-

Tooltips and Popovers use our built-in sanitizer to sanitize options which accept HTML.

-

The default allowList value is the following:

-
const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
-
-export const DefaultAllowlist = {
-  // Global attributes allowed on any supplied element below.
-  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
-  a: ['target', 'href', 'title', 'rel'],
-  area: [],
-  b: [],
-  br: [],
-  col: [],
-  code: [],
-  dd: [],
-  div: [],
-  dl: [],
-  dt: [],
-  em: [],
-  hr: [],
-  h1: [],
-  h2: [],
-  h3: [],
-  h4: [],
-  h5: [],
-  h6: [],
-  i: [],
-  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
-  li: [],
-  ol: [],
-  p: [],
-  pre: [],
-  s: [],
-  small: [],
-  span: [],
-  sub: [],
-  sup: [],
-  strong: [],
-  u: [],
-  ul: []
-}
-
-

If you want to add new values to this default allowList you can do the following:

-
const myDefaultAllowList = bootstrap.Tooltip.Default.allowList
-
-// To allow table elements
-myDefaultAllowList.table = []
-
-// To allow td elements and data-bs-option attributes on td elements
-myDefaultAllowList.td = ['data-bs-option']
-
-// You can push your custom regex to validate your attributes.
-// Be careful about your regular expressions being too lax
-const myCustomRegex = /^data-my-app-[\w-]+/
-myDefaultAllowList['*'].push(myCustomRegex)
-
-

If you want to bypass our sanitizer because you prefer to use a dedicated library, for example DOMPurify, you should do the following:

-
const yourTooltipEl = document.querySelector('#yourTooltip')
-const tooltip = new bootstrap.Tooltip(yourTooltipEl, {
-  sanitizeFn(content) {
-    return DOMPurify.sanitize(content)
-  }
-})
-
-

Optionally using jQuery

-

You don't need jQuery in Bootstrap 5, but it's still possible to use our components with jQuery. If Bootstrap detects jQuery in the window object, it'll add all of our components in jQuery's plugin system. This allows you to do the following:

-
// to enable tooltips with the default configuration
-$('[data-bs-toggle="tooltip"]').tooltip()
-
-// to initialize tooltips with given configuration
-$('[data-bs-toggle="tooltip"]').tooltip({
-  boundary: 'clippingParents',
-  customClass: 'myClass'
-})
-
-// to trigger the `show` method
-$('#myTooltip').tooltip('show')
-
-

The same goes for our other components.

-

No conflict

-

Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call .noConflict on the plugin you wish to revert the value of.

-
const bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
-$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
-
-

Bootstrap does not officially support third-party JavaScript libraries like Prototype or jQuery UI. Despite .noConflict and namespaced events, there may be compatibility problems that you need to fix on your own.

-

jQuery events

-

Bootstrap will detect jQuery if jQuery is present in the window object and there is no data-bs-no-jquery attribute set on <body>. If jQuery is found, Bootstrap will emit events thanks to jQuery's event system. So if you want to listen to Bootstrap's events, you'll have to use the jQuery methods (.on, .one) instead of addEventListener.

-
$('#myTab a').on('shown.bs.tab', () => {
-  // do something...
-})
-
-

Disabled JavaScript

-

Bootstrap's plugins have no special fallback when JavaScript is disabled. If you care about the user experience in this case, use <noscript> to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/parcel/index.html b/site/dist/docs/5.3/getting-started/parcel/index.html deleted file mode 100644 index 8065c65684..0000000000 --- a/site/dist/docs/5.3/getting-started/parcel/index.html +++ /dev/null @@ -1,146 +0,0 @@ - Bootstrap and Parcel · Bootstrap v5.3

Bootstrap and Parcel

The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Parcel.

-

Want to skip to the end? Download the source code and working demo for this guide from the twbs/examples repository. You can also open the example in StackBlitz but not run it because Parcel isn't currently supported there.

-

What is Parcel?

-

Parcel is a web application bundler designed to simplify the development process with a zero-configuration setup out of the box. It offers features found in more advanced bundlers while focusing on ease of use, making it ideal for developers seeking a quick start.

-

Setup

-

We're building a Parcel project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.

-
    -
  1. -

    Create a project folder and set up npm. We'll create the my-project folder and initialize npm with the -y argument to avoid it asking us all the interactive questions.

    -
    mkdir my-project && cd my-project
    -npm init -y
    -
    -
  2. -
  3. -

    Install Parcel. Unlike our Webpack guide, there's only a single build tool dependency here. Parcel will automatically install language transformers (like Sass) as it detects them. We use --save-dev to signal that this dependency is only for development use and not for production.

    -
    npm i --save-dev parcel
    -
    -
  4. -
  5. -

    Install Bootstrap. Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.

    -
    npm i --save bootstrap @popperjs/core
    -
    -
  6. -
-

Now that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap.

-

Project structure

-

We've already created the my-project folder and initialized npm. Now we'll also create our src folder, stylesheet, and JavaScript file to round out the project structure. Run the following from my-project, or manually create the folder and file structure shown below.

-
mkdir {src,src/js,src/scss}
-touch src/index.html src/js/main.js src/scss/styles.scss
-
-

When you're done, your complete project should look like this:

-
my-project/
-├── src/
-│   ├── js/
-│   │   └── main.js
-│   ├── scss/
-│   │   └── styles.scss
-│   └── index.html
-├── package-lock.json
-└── package.json
-
-

At this point, everything is in the right place, but Parcel needs an HTML page and npm script to start our server.

-

Configure Parcel

-

With dependencies installed and our project folder ready for us to start coding, we can now configure Parcel and run our project locally. Parcel itself requires no configuration file by design, but we do need an npm script and an HTML file to start our server.

-
    -
  1. -

    Fill in the src/index.html file. Parcel needs a page to render, so we use our index.html page to set up some basic HTML, including our CSS and JavaScript files.

    -
    <!doctype html>
    -<html lang="en">
    -  <head>
    -    <meta charset="utf-8">
    -    <meta name="viewport" content="width=device-width, initial-scale=1">
    -    <title>Bootstrap w/ Parcel</title>
    -    <link rel="stylesheet" href="scss/styles.scss">
    -    <script type="module" src="js/main.js"></script>
    -  </head>
    -  <body>
    -    <div class="container py-4 px-3 mx-auto">
    -      <h1>Hello, Bootstrap and Parcel!</h1>
    -      <button class="btn btn-primary">Primary button</button>
    -    </div>
    -  </body>
    -</html>
    -
    -

    We're including a little bit of Bootstrap styling here with the div class="container" and <button> so that we see when Bootstrap's CSS is loaded by Parcel.

    -

    Parcel will automatically detect we're using Sass and install the Sass Parcel plugin to support it. However, if you wish, you can also manually run npm i --save-dev @parcel/transformer-sass.

    -
  2. -
  3. -

    Add the Parcel npm scripts. Open the package.json and add the following start script to the scripts object. We'll use this script to start our Parcel development server and render the HTML file we created after it's compiled into the dist directory.

    -
    {
    -   // ...
    -   "scripts": {
    -     "start": "parcel serve src/index.html --public-url / --dist-dir dist",
    -     "test": "echo \"Error: no test specified\" && exit 1"
    -   },
    -   // ...
    -}
    -
    -
  4. -
  5. -

    And finally, we can start Parcel. From the my-project folder in your terminal, run that newly added npm script:

    -
    npm start
    -
    -Parcel dev server running -
  6. -
-

In the next and final section to this guide, we'll import all of Bootstrap's CSS and JavaScript.

-

Import Bootstrap

-

Importing Bootstrap into Parcel requires two imports, one into our styles.scss and one into our main.js.

-
    -
  1. -

    Import Bootstrap's CSS. Add the following to src/scss/styles.scss to import all of Bootstrap's source Sass.

    -
    // Import all of Bootstrap's CSS
    -@import "bootstrap/scss/bootstrap";
    -
    -

    You can also import our stylesheets individually if you want. Read our Sass import docs for details.

    -
  2. -
  3. -

    Import Bootstrap's JS. Add the following to src/js/main.js to import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.

    - -
    // Import all of Bootstrap's JS
    -import * as bootstrap from 'bootstrap'
    -
    -

    You can also import JavaScript plugins individually as needed to keep bundle sizes down:

    - -
    import Alert from 'bootstrap/js/dist/alert'
    -
    -// or, specify which plugins you need:
    -import { Tooltip, Toast, Popover } from 'bootstrap'
    -
    -

    Read our JavaScript docs for more information on how to use Bootstrap's plugins.

    -
  4. -
  5. -

    And you're done! 🎉 With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:

    -Parcel dev server running with Bootstrap -

    Now you can start adding any Bootstrap components you want to use. Be sure to check out the complete Parcel example project for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.

    -
  6. -
-
-

See something wrong or out of date here? Please open an issue on GitHub. Need help troubleshooting? Search or start a discussion on GitHub.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/rfs/index.html b/site/dist/docs/5.3/getting-started/rfs/index.html deleted file mode 100644 index 5607bfc5f3..0000000000 --- a/site/dist/docs/5.3/getting-started/rfs/index.html +++ /dev/null @@ -1,80 +0,0 @@ - RFS · Bootstrap v5.3

Bootstrap's resizing engine responsively scales common CSS properties to better utilize available space across viewports and devices.

What is RFS?

-

Bootstrap's side project RFS is a unit resizing engine which was initially developed to resize font sizes (hence its abbreviation for Responsive Font Sizes). Nowadays RFS is capable of rescaling most CSS properties with unit values like margin, padding, border-radius, or even box-shadow.

-

The mechanism automatically calculates the appropriate values based on the dimensions of the browser viewport. It will be compiled into calc() functions with a mix of rem and viewport units to enable the responsive scaling behavior.

-

Using RFS

-

The mixins are included in Bootstrap and are available once you include Bootstrap's scss. RFS can also be installed standalone if needed.

-

Using the mixins

-

The rfs() mixin has shorthands for font-size, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, and padding-left. See the example below for source Sass and compiled CSS.

-
.title {
-  @include font-size(4rem);
-}
-
-
.title {
-  font-size: calc(1.525rem + 3.3vw);
-}
-
-@media (min-width: 1200px) {
-  .title {
-    font-size: 4rem;
-  }
-}
-
-

Any other property can be passed to the rfs() mixin like this:

-
.selector {
-  @include rfs(4rem, border-radius);
-}
-
-

!important can also just be added to whatever value you want:

-
.selector {
-  @include padding(2.5rem !important);
-}
-
-

Using the functions

-

When you don't want to use the includes, there are also two functions:

-
    -
  • rfs-value() converts a value into a rem value if a px value is passed, in other cases it returns the same result.
  • -
  • rfs-fluid-value() returns the fluid version of a value if the property needs rescaling.
  • -
-

In this example, we use one of Bootstrap's built-in responsive breakpoint mixins to only apply styling below the lg breakpoint.

-
.selector {
-  @include media-breakpoint-down(lg) {
-    padding: rfs-fluid-value(2rem);
-    font-size: rfs-fluid-value(1.125rem);
-  }
-}
-
-
@media (max-width: 991.98px) {
-  .selector {
-    padding: calc(1.325rem + 0.9vw);
-    font-size: 1.125rem; /* 1.125rem is small enough, so RFS won't rescale this */
-  }
-}
-
-

Extended documentation

-

RFS is a separate project under the Bootstrap organization. More about RFS and its configuration can be found on its GitHub repository.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/rtl/index.html b/site/dist/docs/5.3/getting-started/rtl/index.html deleted file mode 100644 index 895fe12eee..0000000000 --- a/site/dist/docs/5.3/getting-started/rtl/index.html +++ /dev/null @@ -1,163 +0,0 @@ - RTL · Bootstrap v5.3

Learn how to enable support for right-to-left text in Bootstrap across our layout, components, and utilities.

Get familiar

-

We recommend getting familiar with Bootstrap first by reading through our Getting Started Introduction page. Once you've run through it, continue reading here for how to enable RTL.

-

You may also want to read up on the RTLCSS project, as it powers our approach to RTL.

-

Bootstrap's RTL feature is still experimental and will evolve based on user feedback. Spotted something or have an improvement to suggest? Open an issue, we'd love to get your insights.

-

Required HTML

-

There are two strict requirements for enabling RTL in Bootstrap-powered pages.

-
    -
  1. Set dir="rtl" on the <html> element.
  2. -
  3. Add an appropriate lang attribute, like lang="ar", on the <html> element.
  4. -
-

From there, you'll need to include an RTL version of our CSS. For example, here's the stylesheet for our compiled and minified CSS with RTL enabled:

-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.min.css" integrity="sha384-dpuaG1suU0eT09tx5plTaGMLBsfDLzUCCUXOY2j/LSvXYuG6Bqs43ALlhIqAJVRb" crossorigin="anonymous">
-
-

Starter template

-

You can see the above requirements reflected in this modified RTL starter template.

-
<!doctype html>
-<html lang="ar" dir="rtl">
-  <head>
-    <!-- Required meta tags -->
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-
-    <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.min.css" integrity="sha384-dpuaG1suU0eT09tx5plTaGMLBsfDLzUCCUXOY2j/LSvXYuG6Bqs43ALlhIqAJVRb" crossorigin="anonymous">
-
-    <title>مرحبًا بالعالم!</title>
-  </head>
-  <body>
-    <h1>مرحبًا بالعالم!</h1>
-
-    <!-- Optional JavaScript; choose one of the two! -->
-
-    <!-- Option 1: Bootstrap Bundle with Popper -->
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
-
-    <!-- Option 2: Separate Popper and Bootstrap JS -->
-    <!--
-    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script>
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy" crossorigin="anonymous"></script>
-    -->
-  </body>
-</html>
-
-

RTL examples

-

Get started with one of our several RTL examples.

-

Approach

-

Our approach to building RTL support into Bootstrap comes with two important decisions that impact how we write and use our CSS:

-
    -
  1. -

    First, we decided to build it with the RTLCSS project. This gives us some powerful features for managing changes and overrides when moving from LTR to RTL. It also allows us to build two versions of Bootstrap from one codebase.

    -
  2. -
  3. -

    Second, we've renamed a handful of directional classes to adopt a logical properties approach. Most of you have already interacted with logical properties thanks to our flex utilities—they replace direction properties like left and right in favor start and end. That makes the class names and values appropriate for LTR and RTL without any overhead.

    -
  4. -
-

For example, instead of .ml-3 for margin-left, use .ms-3.

-

Working with RTL, through our source Sass or compiled CSS, shouldn't be much different from our default LTR though.

-

Customize from source

-

When it comes to customization, the preferred way is to take advantage of variables, maps, and mixins. This approach works the same for RTL, even if it's post-processed from the compiled files, thanks to how RTLCSS works.

-

Custom RTL values

-

Using RTLCSS value directives, you can make a variable output a different value for RTL. For example, to decrease the weight for $font-weight-bold throughout the codebase, you may use the /*rtl: {value}*/ syntax:

-
$font-weight-bold: 700 #{/* rtl:600 */} !default;
-
-

Which would output to the following for our default CSS and RTL CSS:

-
/* bootstrap.css */
-dt {
-  font-weight: 700 /* rtl:600 */;
-}
-
-/* bootstrap.rtl.css */
-dt {
-  font-weight: 600;
-}
-
-

Alternative font stack

-

In the case you're using a custom font, be aware that not all fonts support the non-Latin alphabet. To switch from Pan-European to Arabic family, you may need to use /*rtl:insert: {value}*/ in your font stack to modify the names of font families.

-

For example, to switch from Helvetica Neue font for LTR to Helvetica Neue Arabic for RTL, your Sass code could look like this:

-
$font-family-sans-serif:
-  Helvetica Neue #{"/* rtl:insert:Arabic */"},
-  // Cross-platform generic font family (default user interface font)
-  system-ui,
-  // Safari for macOS and iOS (San Francisco)
-  -apple-system,
-  // Chrome < 56 for macOS (San Francisco)
-  BlinkMacSystemFont,
-  // Windows
-  "Segoe UI",
-  // Android
-  Roboto,
-  // Basic web fallback
-  Arial,
-  // Linux
-  "Noto Sans",
-  // Sans serif fallback
-  sans-serif,
-  // Emoji fonts
-  "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
-
-

LTR and RTL at the same time

-

Need both LTR and RTL on the same page? Thanks to RTLCSS String Maps, this is pretty straightforward. Wrap your @imports with a class, and set a custom rename rule for RTLCSS:

-
/* rtl:begin:options: {
-  "autoRename": true,
-  "stringMap":[ {
-    "name": "ltr-rtl",
-    "priority": 100,
-    "search": ["ltr"],
-    "replace": ["rtl"],
-    "options": {
-      "scope": "*",
-      "ignoreCase": false
-    }
-  } ]
-} */
-.ltr {
-  @import "../node_modules/bootstrap/scss/bootstrap";
-}
-/*rtl:end:options*/
-
-

After running Sass then RTLCSS, each selector in your CSS files will be prepended by .ltr, and .rtl for RTL files. Now you're able to use both files on the same page, and simply use .ltr or .rtl on your components wrappers to use one or the other direction.

-

Edge cases and known limitations to consider when working with a combined LTR and RTL implementation:

    -
  1. When switching .ltr and .rtl, make sure you add dir and lang attributes accordingly.
  2. -
  3. Loading both files can be a real performance bottleneck: consider some optimization, and maybe try to load one of those files asynchronously.
  4. -
  5. Nesting styles this way will prevent our form-validation-state() mixin from working as intended, thus require you tweak it a bit by yourself. See #31223.
  6. -
-

Do you want to automate this process and address several edge cases involving both directions within a single stylesheet? Then, consider using PostCSS RTLCSS as a PostCSS plugin to process your source files. PostCSS RTLCSS uses RTLCSS behind the scenes to manage the direction flipping process, but it separates the flipped declarations into rules with a different prefix for LTR and RTL, something that allows you to have both directions within the same stylesheet file. By doing this, you can switch between LTR and RTL orientations by simply changing the dir of the page (or even by modifying a specific class if you configure the plugin accordingly).

-

Important things to take into account when using PostCSS RTLCSS to build a combined LTR and RTL implementation:

    -
  1. It is recommended that you add the dir attribute to the html element. This way, the entire page will be affected when you change the direction. Also, make sure you add the lang attribute accordingly.
  2. -
  3. Having a single bundle with both directions will increase the size of the final stylesheet (on average, by 20%-30%): consider some optimization.
  4. -
  5. Take into account that PostCSS RTLCSS is not compatible with /* rtl:remove */ directives because it doesn't remove any CSS rule. You should replace your /* rtl:remove */, /* rtl:begin:remove */ and /* rtl:end:remove */ directives with /* rtl:freeze */, /* rtl:begin:freeze */ and /* rtl:end:freeze */ directives respectively. These directives will prefix the targeted rules or declarations with the current direction but will not create an RTL counterpart (same result as the remove ones in RTLCSS).
  6. -
-

The breadcrumb case

-

The breadcrumb separator is the only case requiring its own brand-new variable— namely $breadcrumb-divider-flipped —defaulting to $breadcrumb-divider.

-

Additional resources

-
\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/vite/index.html b/site/dist/docs/5.3/getting-started/vite/index.html deleted file mode 100644 index 1802fd7b0a..0000000000 --- a/site/dist/docs/5.3/getting-started/vite/index.html +++ /dev/null @@ -1,164 +0,0 @@ - Bootstrap and Vite · Bootstrap v5.3

Bootstrap and Vite

The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Vite.

-

Want to skip to the end? Download the source code and working demo for this guide from the twbs/examples repository. You can also open the example in StackBlitz for live editing.

-

What is Vite?

-

Vite is a modern frontend build tool designed for speed and simplicity. It provides an efficient and streamlined development experience, especially for modern JavaScript frameworks.

-

Setup

-

We're building a Vite project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.

-
    -
  1. -

    Create a project folder and set up npm. We'll create the my-project folder and initialize npm with the -y argument to avoid it asking us all the interactive questions.

    -
    mkdir my-project && cd my-project
    -npm init -y
    -
    -
  2. -
  3. -

    Install Vite. Unlike our Webpack guide, there’s only a single build tool dependency here. We use --save-dev to signal that this dependency is only for development use and not for production.

    -
    npm i --save-dev vite
    -
    -
  4. -
  5. -

    Install Bootstrap. Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.

    -
    npm i --save bootstrap @popperjs/core
    -
    -
  6. -
  7. -

    Install additional dependency. In addition to Vite and Bootstrap, we need another dependency (Sass) to properly import and bundle Bootstrap's CSS.

    -
    npm i --save-dev sass
    -
    -
  8. -
-

Now that we have all the necessary dependencies installed and set up, we can get to work creating the project files and importing Bootstrap.

-

Project structure

-

We've already created the my-project folder and initialized npm. Now we'll also create our src folder, stylesheet, and JavaScript file to round out the project structure. Run the following from my-project, or manually create the folder and file structure shown below.

-
mkdir {src,src/js,src/scss}
-touch src/index.html src/js/main.js src/scss/styles.scss vite.config.js
-
-

When you're done, your complete project should look like this:

-
my-project/
-├── src/
-│   ├── js/
-│   │   └── main.js
-│   └── scss/
-│   |   └── styles.scss
-|   └── index.html
-├── package-lock.json
-├── package.json
-└── vite.config.js
-
-

At this point, everything is in the right place, but Vite won't work because we haven't filled in our vite.config.js yet.

-

Configure Vite

-

With dependencies installed and our project folder ready for us to start coding, we can now configure Vite and run our project locally.

-
    -
  1. -

    Open vite.config.js in your editor. Since it's blank, we'll need to add some boilerplate config to it so we can start our server. This part of the config tells Vite where to look for our project's JavaScript and how the development server should behave (pulling from the src folder with hot reload).

    - -
    import { resolve } from 'path'
    -
    -export default {
    -  root: resolve(__dirname, 'src'),
    -  build: {
    -    outDir: '../dist'
    -  },
    -  server: {
    -    port: 8080
    -  }
    -}
    -
    -
  2. -
  3. -

    Next we fill in src/index.html. This is the HTML page Vite will load in the browser to utilize the bundled CSS and JS we'll add to it in later steps.

    -
    <!doctype html>
    -<html lang="en">
    -  <head>
    -    <meta charset="utf-8">
    -    <meta name="viewport" content="width=device-width, initial-scale=1">
    -    <title>Bootstrap w/ Vite</title>
    -    <script type="module" src="./js/main.js"></script>
    -  </head>
    -  <body>
    -    <div class="container py-4 px-3 mx-auto">
    -      <h1>Hello, Bootstrap and Vite!</h1>
    -      <button class="btn btn-primary">Primary button</button>
    -    </div>
    -  </body>
    -</html>
    -
    -

    We're including a little bit of Bootstrap styling here with the div class="container" and <button> so that we see when Bootstrap's CSS is loaded by Vite.

    -
  4. -
  5. -

    Now we need an npm script to run Vite. Open package.json and add the start script shown below (you should already have the test script). We'll use this script to start our local Vite dev server.

    -
    {
    -  // ...
    -  "scripts": {
    -    "start": "vite",
    -    "test": "echo \"Error: no test specified\" && exit 1"
    -  },
    -  // ...
    -}
    -
    -
  6. -
  7. -

    And finally, we can start Vite. From the my-project folder in your terminal, run that newly added npm script:

    -
    npm start
    -
    -Vite dev server running -
  8. -
-

In the next and final section to this guide, we’ll import all of Bootstrap’s CSS and JavaScript.

-

Import Bootstrap

-
    -
  1. -

    Import Bootstrap's CSS. Add the following to src/scss/styles.scss to import all of Bootstrap's source Sass.

    -
    // Import all of Bootstrap's CSS
    -@import "bootstrap/scss/bootstrap";
    -
    -

    You can also import our stylesheets individually if you want. Read our Sass import docs for details.

    -
  2. -
  3. -

    Next we load the CSS and import Bootstrap's JavaScript. Add the following to src/js/main.js to load the CSS and import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.

    - -
    // Import our custom CSS
    -import '../scss/styles.scss'
    -
    -// Import all of Bootstrap's JS
    -import * as bootstrap from 'bootstrap'
    -
    -

    You can also import JavaScript plugins individually as needed to keep bundle sizes down:

    - -
    import Alert from 'bootstrap/js/dist/alert';
    -
    -// or, specify which plugins you need:
    -import { Tooltip, Toast, Popover } from 'bootstrap';
    -
    -

    Read our JavaScript docs for more information on how to use Bootstrap's plugins.

    -
  4. -
  5. -

    And you're done! 🎉 With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:

    -Vite dev server running with Bootstrap -

    Now you can start adding any Bootstrap components you want to use. Be sure to check out the complete Vite example project for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.

    -
  6. -
-
-

See something wrong or out of date here? Please open an issue on GitHub. Need help troubleshooting? Search or start a discussion on GitHub.

\ No newline at end of file diff --git a/site/dist/docs/5.3/getting-started/webpack/index.html b/site/dist/docs/5.3/getting-started/webpack/index.html deleted file mode 100644 index a73d7e9257..0000000000 --- a/site/dist/docs/5.3/getting-started/webpack/index.html +++ /dev/null @@ -1,309 +0,0 @@ - Bootstrap and Webpack · Bootstrap v5.3

Bootstrap and Webpack

The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Webpack.

-

Want to skip to the end? Download the source code and working demo for this guide from the twbs/examples repository. You can also open the example in StackBlitz for live editing.

-

What is Webpack?

-

Webpack is a JavaScript module bundler that processes modules and their dependencies to generate static assets. It simplifies managing complex web applications with multiple files and dependencies.

-

Setup

-

We're building a Webpack project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.

-
    -
  1. -

    Create a project folder and set up npm. We'll create the my-project folder and initialize npm with the -y argument to avoid it asking us all the interactive questions.

    -
    mkdir my-project && cd my-project
    -npm init -y
    -
    -
  2. -
  3. -

    Install Webpack. Next we need to install our Webpack development dependencies: webpack for the core of Webpack, webpack-cli so we can run Webpack commands from the terminal, and webpack-dev-server so we can run a local development server. Additionally, we'll install html-webpack-plugin to be able to store our index.html in src directory instead of the default dist one. We use --save-dev to signal that these dependencies are only for development use and not for production.

    -
    npm i --save-dev webpack webpack-cli webpack-dev-server html-webpack-plugin
    -
    -
  4. -
  5. -

    Install Bootstrap. Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.

    -
    npm i --save bootstrap @popperjs/core
    -
    -
  6. -
  7. -

    Install additional dependencies. In addition to Webpack and Bootstrap, we need a few more dependencies to properly import and bundle Bootstrap's CSS and JS with Webpack. These include Sass, some loaders, and Autoprefixer.

    -
    npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
    -
    -
  8. -
-

Now that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap.

-

Project structure

-

We've already created the my-project folder and initialized npm. Now we'll also create our src and dist folders to round out the project structure. Run the following from my-project, or manually create the folder and file structure shown below.

-
mkdir {src,src/js,src/scss}
-touch src/index.html src/js/main.js src/scss/styles.scss webpack.config.js
-
-

When you're done, your complete project should look like this:

-
my-project/
-├── src/
-│   ├── js/
-│   │   └── main.js
-│   ├── scss/
-│   │   └── styles.scss
-│   └── index.html
-├── package-lock.json
-├── package.json
-└── webpack.config.js
-
-

At this point, everything is in the right place, but Webpack won't work because we haven't filled in our webpack.config.js yet.

-

Configure Webpack

-

With dependencies installed and our project folder ready for us to start coding, we can now configure Webpack and run our project locally.

-
    -
  1. -

    Open webpack.config.js in your editor. Since it's blank, we'll need to add some boilerplate config to it so we can start our server. This part of the config tells Webpack where to look for our project's JavaScript, where to output the compiled code to (dist), and how the development server should behave (pulling from the dist folder with hot reload).

    -
    'use strict'
    -const path = require('path')
    -const HtmlWebpackPlugin = require('html-webpack-plugin')
    -
    -module.exports = {
    -  mode: 'development',
    -  entry: './src/js/main.js',
    -  output: {
    -    filename: 'main.js',
    -    path: path.resolve(__dirname, 'dist')
    -  },
    -  devServer: {
    -    static: path.resolve(__dirname, 'dist'),
    -    port: 8080,
    -    hot: true
    -  },
    -  plugins: [
    -    new HtmlWebpackPlugin({ template: './src/index.html' })
    -  ]
    -}
    -
    -
  2. -
  3. -

    Next we fill in our src/index.html. This is the HTML page Webpack will load in the browser to utilize the bundled CSS and JS we'll add to it in later steps. Before we can do that, we have to give it something to render and include the output JS from the previous step.

    -
    <!doctype html>
    -<html lang="en">
    -  <head>
    -    <meta charset="utf-8">
    -    <meta name="viewport" content="width=device-width, initial-scale=1">
    -    <title>Bootstrap w/ Webpack</title>
    -  </head>
    -  <body>
    -    <div class="container py-4 px-3 mx-auto">
    -      <h1>Hello, Bootstrap and Webpack!</h1>
    -      <button class="btn btn-primary">Primary button</button>
    -    </div>
    -  </body>
    -</html>
    -
    -

    We're including a little bit of Bootstrap styling here with the div class="container" and <button> so that we see when Bootstrap's CSS is loaded by Webpack.

    -
  4. -
  5. -

    Now we need an npm script to run Webpack. Open package.json and add the start script shown below (you should already have the test script). We'll use this script to start our local Webpack dev server. You can also add a build script shown below to build your project.

    -
    {
    -  // ...
    -  "scripts": {
    -    "start": "webpack serve",
    -    "build": "webpack build --mode=production",
    -    "test": "echo \"Error: no test specified\" && exit 1"
    -  },
    -  // ...
    -}
    -
    -
  6. -
  7. -

    And finally, we can start Webpack. From the my-project folder in your terminal, run that newly added npm script:

    -
    npm start
    -
    -Webpack dev server running -
  8. -
-

In the next and final section to this guide, we'll set up the Webpack loaders and import all of Bootstrap's CSS and JavaScript.

-

Import Bootstrap

-

Importing Bootstrap into Webpack requires the loaders we installed in the first section. We've installed them with npm, but now Webpack needs to be configured to use them.

-
    -
  1. -

    Set up the loaders in webpack.config.js. Your configuration file is now complete and should match the snippet below. The only new part here is the module section.

    -
    'use strict'
    -const path = require('path')
    -const autoprefixer = require('autoprefixer')
    -const HtmlWebpackPlugin = require('html-webpack-plugin')
    -
    -module.exports = {
    -  mode: 'development',
    -  entry: './src/js/main.js',
    -  output: {
    -    filename: 'main.js',
    -    path: path.resolve(__dirname, 'dist')
    -  },
    -  devServer: {
    -    static: path.resolve(__dirname, 'dist'),
    -    port: 8080,
    -    hot: true
    -  },
    -  plugins: [
    -    new HtmlWebpackPlugin({ template: './src/index.html' })
    -  ],
    -  module: {
    -    rules: [
    -      {
    -        test: /\.(scss)$/,
    -        use: [
    -          {
    -            // Adds CSS to the DOM by injecting a `<style>` tag
    -            loader: 'style-loader'
    -          },
    -          {
    -            // Interprets `@import` and `url()` like `import/require()` and will resolve them
    -            loader: 'css-loader'
    -          },
    -          {
    -            // Loader for webpack to process CSS with PostCSS
    -            loader: 'postcss-loader',
    -            options: {
    -              postcssOptions: {
    -                plugins: [
    -                  autoprefixer
    -                ]
    -              }
    -            }
    -          },
    -          {
    -            // Loads a SASS/SCSS file and compiles it to CSS
    -            loader: 'sass-loader'
    -          }
    -        ]
    -      }
    -    ]
    -  }
    -}
    -
    -

    Here's a recap of why we need all these loaders. style-loader injects the CSS into a <style> element in the <head> of the HTML page, css-loader helps with using @import and url(), postcss-loader is required for Autoprefixer, and sass-loader allows us to use Sass.

    -
  2. -
  3. -

    Now, let's import Bootstrap's CSS. Add the following to src/scss/styles.scss to import all of Bootstrap's source Sass.

    -
    // Import all of Bootstrap's CSS
    -@import "bootstrap/scss/bootstrap";
    -
    -

    You can also import our stylesheets individually if you want. Read our Sass import docs for details.

    -
  4. -
  5. -

    Next we load the CSS and import Bootstrap's JavaScript. Add the following to src/js/main.js to load the CSS and import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.

    - -
    // Import our custom CSS
    -import '../scss/styles.scss'
    -
    -// Import all of Bootstrap's JS
    -import * as bootstrap from 'bootstrap'
    -
    -

    You can also import JavaScript plugins individually as needed to keep bundle sizes down:

    - -
    import Alert from 'bootstrap/js/dist/alert'
    -
    -// or, specify which plugins you need:
    -import { Tooltip, Toast, Popover } from 'bootstrap'
    -
    -

    Read our JavaScript docs for more information on how to use Bootstrap's plugins.

    -
  6. -
  7. -

    And you're done! 🎉 With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:

    -Webpack dev server running with Bootstrap -

    Now you can start adding any Bootstrap components you want to use. Be sure to check out the complete Webpack example project for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.

    -
  8. -
-

Production optimizations

-

Depending on your setup, you may want to implement some additional security and speed optimizations useful for running the project in production. Note that these optimizations are not applied on the Webpack example project and are up to you to implement.

-

Extracting CSS

-

The style-loader we configured above conveniently emits CSS into the bundle so that manually loading a CSS file in dist/index.html isn't necessary. This approach may not work with a strict Content Security Policy, however, and it may become a bottleneck in your application due to the large bundle size.

-

To separate the CSS so that we can load it directly from dist/index.html, use the mini-css-extract-loader Webpack plugin.

-

First, install the plugin:

-
npm install --save-dev mini-css-extract-plugin
-
-

Then instantiate and use the plugin in the Webpack configuration:

-
--- a/webpack.config.js
-+++ b/webpack.config.js
-@@ -3,6 +3,7 @@
- const path = require('path')
- const autoprefixer = require('autoprefixer')
- const HtmlWebpackPlugin = require('html-webpack-plugin')
-+const miniCssExtractPlugin = require('mini-css-extract-plugin')
-
- module.exports = {
-   mode: 'development',
-@@ -17,7 +18,8 @@ module.exports = {
-     hot: true
-   },
-   plugins: [
--    new HtmlWebpackPlugin({ template: './src/index.html' })
-+    new HtmlWebpackPlugin({ template: './src/index.html' }),
-+    new miniCssExtractPlugin()
-   ],
-   module: {
-     rules: [
-@@ -25,8 +27,8 @@ module.exports = {
-         test: /\.(scss)$/,
-         use: [
-           {
--            // Adds CSS to the DOM by injecting a `<style>` tag
--            loader: 'style-loader'
-+            // Extracts CSS for each JS file that includes CSS
-+            loader: miniCssExtractPlugin.loader
-           },
-           {
-
-

After running npm run build again, there will be a new file dist/main.css, which will contain all of the CSS imported by src/js/main.js. If you view dist/index.html in your browser now, the style will be missing, as it is now in dist/main.css. You can include the generated CSS in dist/index.html like this:

-
--- a/dist/index.html
-+++ b/dist/index.html
-@@ -3,6 +3,7 @@
-   <head>
-     <meta charset="utf-8">
-     <meta name="viewport" content="width=device-width, initial-scale=1">
-+    <link rel="stylesheet" href="./main.css">
-     <title>Bootstrap w/ Webpack</title>
-   </head>
-   <body>
-
-

Extracting SVG files

-

Bootstrap's CSS includes multiple references to SVG files via inline data: URIs. If you define a Content Security Policy for your project that blocks data: URIs for images, then these SVG files will not load. You can get around this problem by extracting the inline SVG files using Webpack's asset modules feature.

-

Configure Webpack to extract inline SVG files like this:

-
--- a/webpack.config.js
-+++ b/webpack.config.js
-@@ -23,6 +23,14 @@ module.exports = {
-   },
-   module: {
-     rules: [
-+      {
-+        mimetype: 'image/svg+xml',
-+        scheme: 'data',
-+        type: 'asset/resource',
-+        generator: {
-+          filename: 'icons/[hash].svg'
-+        }
-+      },
-       {
-         test: /\.(scss)$/,
-         use: [
-
-

After running npm run build again, you'll find the SVG files extracted into dist/icons and properly referenced from CSS.

-
-

See something wrong or out of date here? Please open an issue on GitHub. Need help troubleshooting? Search or start a discussion on GitHub.

\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/clearfix/index.html b/site/dist/docs/5.3/helpers/clearfix/index.html deleted file mode 100644 index d1fb9daa59..0000000000 --- a/site/dist/docs/5.3/helpers/clearfix/index.html +++ /dev/null @@ -1,50 +0,0 @@ - Clearfix · Bootstrap v5.3

Quickly and easily clear floated content within a container by adding a clearfix utility.

Easily clear floats by adding .clearfix to the parent element. Can also be used as a mixin.

-

Use in HTML:

-
<div class="clearfix">...</div>
-
-

The mixin source code:

-
@mixin clearfix() {
-  &::after {
-    display: block;
-    clear: both;
-    content: "";
-  }
-}
-
-

Use the mixin in SCSS:

-
.element {
-  @include clearfix;
-}
-
-

The following example shows how the clearfix can be used. Without the clearfix the wrapping div would not span around the buttons which would cause a broken layout.

-
- - -
html
<div class="bg-info clearfix">
-<button type="button" class="btn btn-secondary float-start">Example Button floated left</button>
-<button type="button" class="btn btn-secondary float-end">Example Button floated right</button>
-</div>
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/color-background/index.html b/site/dist/docs/5.3/helpers/color-background/index.html deleted file mode 100644 index 4a28ae46a7..0000000000 --- a/site/dist/docs/5.3/helpers/color-background/index.html +++ /dev/null @@ -1,71 +0,0 @@ - Color and background · Bootstrap v5.3
-Added in v5.2 -View on GitHub -

Color and background

Set a background color with contrasting foreground color.

On this page

Overview

-

Color and background helpers combine the power of our .text-* utilities and .bg-* utilities in one class. Using our Sass color-contrast() function, we automatically determine a contrasting color for a particular background-color.

-

Heads up! There's currently no support for a CSS-native color-contrast function, so we use our own via Sass. This means that customizing our theme colors via CSS variables may cause color contrast issues with these utilities.

-
Primary with contrasting color
-
Secondary with contrasting color
-
Success with contrasting color
-
Danger with contrasting color
-
Warning with contrasting color
-
Info with contrasting color
-
Light with contrasting color
-
Dark with contrasting color
html
<div class="text-bg-primary p-3">Primary with contrasting color</div>
-<div class="text-bg-secondary p-3">Secondary with contrasting color</div>
-<div class="text-bg-success p-3">Success with contrasting color</div>
-<div class="text-bg-danger p-3">Danger with contrasting color</div>
-<div class="text-bg-warning p-3">Warning with contrasting color</div>
-<div class="text-bg-info p-3">Info with contrasting color</div>
-<div class="text-bg-light p-3">Light with contrasting color</div>
-<div class="text-bg-dark p-3">Dark with contrasting color</div>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

With components

-

Use them in place of combined .text-* and .bg-* classes, like on badges:

-
Primary -Info
html
<span class="badge text-bg-primary">Primary</span>
-<span class="badge text-bg-info">Info</span>
-

Or on cards:

-
-
Header
-
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
html
<div class="card text-bg-primary mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
-<div class="card text-bg-info mb-3" style="max-width: 18rem;">
-<div class="card-header">Header</div>
-<div class="card-body">
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-</div>
-</div>
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/colored-links/index.html b/site/dist/docs/5.3/helpers/colored-links/index.html deleted file mode 100644 index e6ee59f671..0000000000 --- a/site/dist/docs/5.3/helpers/colored-links/index.html +++ /dev/null @@ -1,67 +0,0 @@ - Colored links · Bootstrap v5.3

Colored links

Colored links with hover states

On this page
-

You can use the .link-* classes to colorize links. Unlike the .text-* classes, these classes have a :hover and :focus state. Some of the link styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast.

-

Heads up! .link-body-emphasis is currently the only colored link that adapts to color modes. It's treated as a special case until v6 arrives and we can more thoroughly rebuild our theme colors for color modes. Until then, it's a unique, high-contrast link color with custom :hover and :focus styles. However, it still responds to the new link utilities.

-
html
<p><a href="#" class="link-primary">Primary link</a></p>
-<p><a href="#" class="link-secondary">Secondary link</a></p>
-<p><a href="#" class="link-success">Success link</a></p>
-<p><a href="#" class="link-danger">Danger link</a></p>
-<p><a href="#" class="link-warning">Warning link</a></p>
-<p><a href="#" class="link-info">Info link</a></p>
-<p><a href="#" class="link-light">Light link</a></p>
-<p><a href="#" class="link-dark">Dark link</a></p>
-<p><a href="#" class="link-body-emphasis">Emphasis link</a></p>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

- -Added in v5.3.0 -

Colored links can also be modified by our link utilities.

-
html
<p><a href="#" class="link-primary link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Primary link</a></p>
-<p><a href="#" class="link-secondary link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Secondary link</a></p>
-<p><a href="#" class="link-success link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Success link</a></p>
-<p><a href="#" class="link-danger link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Danger link</a></p>
-<p><a href="#" class="link-warning link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Warning link</a></p>
-<p><a href="#" class="link-info link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Info link</a></p>
-<p><a href="#" class="link-light link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Light link</a></p>
-<p><a href="#" class="link-dark link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Dark link</a></p>
-<p><a href="#" class="link-body-emphasis link-offset-2 link-underline-opacity-25 link-underline-opacity-75-hover">Emphasis link</a></p>
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/focus-ring/index.html b/site/dist/docs/5.3/helpers/focus-ring/index.html deleted file mode 100644 index ad2775f888..0000000000 --- a/site/dist/docs/5.3/helpers/focus-ring/index.html +++ /dev/null @@ -1,82 +0,0 @@ - Focus ring · Bootstrap v5.3
-Added in v5.3 -View on GitHub -

Focus ring

Utility classes that allows you to add and modify custom focus ring styles to elements and components.

The .focus-ring helper removes the default outline on :focus, replacing it with a box-shadow that can be more broadly customized. The new shadow is made up of a series of CSS variables, inherited from the :root level, that can be modified for any element or component.

-

Example

-

Click directly on the link below to see the focus ring in action, or into the example below and then press Tab.

-
html
<a href="#" class="d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2">
-Custom focus ring
-</a>
-

Customize

-

Modify the styling of a focus ring with our CSS variables, Sass variables, utilities, or custom styles.

-

CSS variables

-

Modify the --bs-focus-ring-* CSS variables as needed to change the default appearance.

-
html
<a href="#" class="d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2" style="--bs-focus-ring-color: rgba(var(--bs-success-rgb), .25)">
-Green focus ring
-</a>
-

.focus-ring sets styles via global CSS variables that can be overridden on any parent element, as shown above. These variables are generated from their Sass variable counterparts.

-
  --#{$prefix}focus-ring-width: #{$focus-ring-width};
-  --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
-  --#{$prefix}focus-ring-color: #{$focus-ring-color};
-  
-

By default, there is no --bs-focus-ring-x, --bs-focus-ring-y, or --bs-focus-ring-blur, but we provide CSS variables with fallbacks to initial 0 values. Modify them to change the default appearance.

-
html
<a href="#" class="d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2" style="--bs-focus-ring-x: 10px; --bs-focus-ring-y: 10px; --bs-focus-ring-blur: 4px">
-Blurry offset focus ring
-</a>
-

Sass variables

-

Customize the focus ring Sass variables to modify all usage of the focus ring styles across your Bootstrap-powered project.

-
$focus-ring-width:      .25rem;
-$focus-ring-opacity:    .25;
-$focus-ring-color:      rgba($primary, $focus-ring-opacity);
-$focus-ring-blur:       0;
-$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color;
-
-

Sass utilities API

-

In addition to .focus-ring, we have several .focus-ring-* utilities to modify the helper class defaults. Modify the color with any of our theme colors. Note that the light and dark variants may not be visible on all background colors given current color mode support.

-
html
<p><a href="#" class="d-inline-flex focus-ring focus-ring-primary py-1 px-2 text-decoration-none border rounded-2">Primary focus</a></p>
-<p><a href="#" class="d-inline-flex focus-ring focus-ring-secondary py-1 px-2 text-decoration-none border rounded-2">Secondary focus</a></p>
-<p><a href="#" class="d-inline-flex focus-ring focus-ring-success py-1 px-2 text-decoration-none border rounded-2">Success focus</a></p>
-<p><a href="#" class="d-inline-flex focus-ring focus-ring-danger py-1 px-2 text-decoration-none border rounded-2">Danger focus</a></p>
-<p><a href="#" class="d-inline-flex focus-ring focus-ring-warning py-1 px-2 text-decoration-none border rounded-2">Warning focus</a></p>
-<p><a href="#" class="d-inline-flex focus-ring focus-ring-info py-1 px-2 text-decoration-none border rounded-2">Info focus</a></p>
-<p><a href="#" class="d-inline-flex focus-ring focus-ring-light py-1 px-2 text-decoration-none border rounded-2">Light focus</a></p>
-<p><a href="#" class="d-inline-flex focus-ring focus-ring-dark py-1 px-2 text-decoration-none border rounded-2">Dark focus</a></p>
-

Focus ring utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "focus-ring": (
-      css-var: true,
-      css-variable-name: focus-ring-color,
-      class: focus-ring,
-      values: map-loop($theme-colors-rgb, rgba-css-var, "$key", "focus-ring")
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/icon-link/index.html b/site/dist/docs/5.3/helpers/icon-link/index.html deleted file mode 100644 index 9c266a4bb9..0000000000 --- a/site/dist/docs/5.3/helpers/icon-link/index.html +++ /dev/null @@ -1,86 +0,0 @@ - Icon link · Bootstrap v5.3
-Added in v5.3 -View on GitHub -

Icon link

Quickly create stylized hyperlinks with Bootstrap Icons or other icons.

The icon link helper component modifies our default link styles to enhance their appearance and quickly align any pairing of icon and text. Alignment is set via inline flexbox styling and a default gap value. We stylize the underline with a custom offset and color. Icons are automatically sized to 1em to best match their associated text's font-size.

-

Icon links assume Bootstrap Icons are being used, but you can use any icon or image you like.

-

When icons are purely decorative, they should be hidden from assistive technologies using aria-hidden="true", as we've done in our examples. For icons that convey meaning, provide an appropriate text alternative by adding role="img" and an appropriate aria-label="..." to the SVGs.

-

Example

-

Take a regular <a> element, add .icon-link, and insert an icon on either the left or right of your link text. The icon is automatically sized, placed, and colored.

-
html
<a class="icon-link" href="#">
-<svg class="bi" aria-hidden="true"><use xlink:href="#box-seam"></use></svg>
-Icon link
-</a>
-
html
<a class="icon-link" href="#">
-Icon link
-<svg class="bi" aria-hidden="true"><use xlink:href="#arrow-right"></use></svg>
-</a>
-

Style on hover

-

Add .icon-link-hover to move the icon to the right on hover.

-
html
<a class="icon-link icon-link-hover" href="#">
-Icon link
-<svg class="bi" aria-hidden="true"><use xlink:href="#arrow-right"></use></svg>
-</a>
-

Customize

-

Modify the styling of an icon link with our link CSS variables, Sass variables, utilities, or custom styles.

-

CSS variables

-

Modify the --bs-link-* and --bs-icon-link-* CSS variables as needed to change the default appearance.

-

Customize the hover transform by overriding the --bs-icon-link-transform CSS variable:

-
html
<a class="icon-link icon-link-hover" style="--bs-icon-link-transform: translate3d(0, -.125rem, 0);" href="#">
-<svg class="bi" aria-hidden="true"><use xlink:href="#clipboard"></use></svg>
-Icon link
-</a>
-

Customize the color by overriding the --bs-link-* CSS variable:

-
html
<a class="icon-link icon-link-hover" style="--bs-link-hover-color-rgb: 25, 135, 84;" href="#">
-Icon link
-<svg class="bi" aria-hidden="true"><use xlink:href="#arrow-right"></use></svg>
-</a>
-

Sass variables

-

Customize the icon link Sass variables to modify all icon link styles across your Bootstrap-powered project.

-
$icon-link-gap:               .375rem;
-$icon-link-underline-offset:  .25em;
-$icon-link-icon-size:         1em;
-$icon-link-icon-transition:   .2s ease-in-out transform;
-$icon-link-icon-transform:    translate3d(.25em, 0, 0);
-
-

Sass utilities API

-

Modify icon links with any of our link utilities for modifying underline color and offset.

-
html
<a class="icon-link icon-link-hover link-success link-underline-success link-underline-opacity-25" href="#">
-Icon link
-<svg class="bi" aria-hidden="true"><use xlink:href="#arrow-right"></use></svg>
-</a>
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/index.html b/site/dist/docs/5.3/helpers/index.html deleted file mode 100644 index e466cd1819..0000000000 --- a/site/dist/docs/5.3/helpers/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/position/index.html b/site/dist/docs/5.3/helpers/position/index.html deleted file mode 100644 index f6ea432dd5..0000000000 --- a/site/dist/docs/5.3/helpers/position/index.html +++ /dev/null @@ -1,58 +0,0 @@ - Position · Bootstrap v5.3

Use these helpers for quickly configuring the position of an element.

Fixed top

-

Position an element at the top of the viewport, from edge to edge. Be sure you understand the ramifications of fixed position in your project; you may need to add additional CSS.

-
<div class="fixed-top">...</div>
-
-

Fixed bottom

-

Position an element at the bottom of the viewport, from edge to edge. Be sure you understand the ramifications of fixed position in your project; you may need to add additional CSS.

-
<div class="fixed-bottom">...</div>
-
-

Sticky top

-

Position an element at the top of the viewport, from edge to edge, but only after you scroll past it.

-
<div class="sticky-top">...</div>
-
-

Responsive sticky top

-

Responsive variations also exist for .sticky-top utility.

-
<div class="sticky-sm-top">Stick to the top on viewports sized SM (small) or wider</div>
-<div class="sticky-md-top">Stick to the top on viewports sized MD (medium) or wider</div>
-<div class="sticky-lg-top">Stick to the top on viewports sized LG (large) or wider</div>
-<div class="sticky-xl-top">Stick to the top on viewports sized XL (extra-large) or wider</div>
-<div class="sticky-xxl-top">Stick to the top on viewports sized XXL (extra-extra-large) or wider</div>
-
-

Sticky bottom

-

Position an element at the bottom of the viewport, from edge to edge, but only after you scroll past it.

-
<div class="sticky-bottom">...</div>
-
-

Responsive sticky bottom

-

Responsive variations also exist for .sticky-bottom utility.

-
<div class="sticky-sm-bottom">Stick to the bottom on viewports sized SM (small) or wider</div>
-<div class="sticky-md-bottom">Stick to the bottom on viewports sized MD (medium) or wider</div>
-<div class="sticky-lg-bottom">Stick to the bottom on viewports sized LG (large) or wider</div>
-<div class="sticky-xl-bottom">Stick to the bottom on viewports sized XL (extra-large) or wider</div>
-<div class="sticky-xxl-bottom">Stick to the bottom on viewports sized XXL (extra-extra-large) or wider</div>
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/ratio/index.html b/site/dist/docs/5.3/helpers/ratio/index.html deleted file mode 100644 index f0b8e1dffc..0000000000 --- a/site/dist/docs/5.3/helpers/ratio/index.html +++ /dev/null @@ -1,91 +0,0 @@ - Ratios · Bootstrap v5.3

Use generated pseudo elements to make an element maintain the aspect ratio of your choosing. Perfect for responsively handling video or slideshow embeds based on the width of the parent.

On this page

About

-

Use the ratio helper to manage the aspect ratios of external content like <iframe>s, <embed>s, <video>s, and <object>s. These helpers also can be used on any standard HTML child element (e.g., a <div> or <img>). Styles are applied from the parent .ratio class directly to the child.

-

Aspect ratios are declared in a Sass map and included in each class via CSS variable, which also allows custom aspect ratios.

-

Pro-Tip! You don't need frameborder="0" on your <iframe>s as we override that for you in Reboot.

-

Example

-

Wrap any embed, like an <iframe>, in a parent element with .ratio and an aspect ratio class. The immediate child element is automatically sized thanks to our universal selector .ratio > *.

-
- -
html
<div class="ratio ratio-16x9">
-<iframe src="https://www.youtube.com/embed/zpOULjyy-n8?rel=0" title="YouTube video" allowfullscreen></iframe>
-</div>
-

Aspect ratios

-

Aspect ratios can be customized with modifier classes. By default the following ratio classes are provided:

-
-
1x1
-
-
-
4x3
-
-
-
16x9
-
-
-
21x9
-
html
<div class="ratio ratio-1x1">
-<div>1x1</div>
-</div>
-<div class="ratio ratio-4x3">
-<div>4x3</div>
-</div>
-<div class="ratio ratio-16x9">
-<div>16x9</div>
-</div>
-<div class="ratio ratio-21x9">
-<div>21x9</div>
-</div>
-

Custom ratios

-

Each .ratio-* class includes a CSS custom property (or CSS variable) in the selector. You can override this CSS variable to create custom aspect ratios on the fly with some quick math on your part.

-

For example, to create a 2x1 aspect ratio, set --bs-aspect-ratio: 50% on the .ratio.

-
-
2x1
-
html
<div class="ratio" style="--bs-aspect-ratio: 50%;">
-<div>2x1</div>
-</div>
-

This CSS variable makes it easy to modify the aspect ratio across breakpoints. The following is 4x3 to start, but changes to a custom 2x1 at the medium breakpoint.

-
.ratio-4x3 {
-  @include media-breakpoint-up(md) {
-    --bs-aspect-ratio: 50%; // 2x1
-  }
-}
-
-
-
4x3, then 2x1
-
html
<div class="ratio ratio-4x3">
-<div>4x3, then 2x1</div>
-</div>
-

Sass maps

-

Within _variables.scss, you can change the aspect ratios you want to use. Here's our default $ratio-aspect-ratios map. Modify the map as you like and recompile your Sass to put them to use.

-
$aspect-ratios: (
-  "1x1": 100%,
-  "4x3": calc(3 / 4 * 100%),
-  "16x9": calc(9 / 16 * 100%),
-  "21x9": calc(9 / 21 * 100%)
-);
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/screen-readers/index.html b/site/dist/docs/5.3/helpers/screen-readers/index.html deleted file mode 100644 index dfca845c18..0000000000 --- a/site/dist/docs/5.3/helpers/screen-readers/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/stacks/index.html b/site/dist/docs/5.3/helpers/stacks/index.html deleted file mode 100644 index eef51ac819..0000000000 --- a/site/dist/docs/5.3/helpers/stacks/index.html +++ /dev/null @@ -1,107 +0,0 @@ - Stacks · Bootstrap v5.3
-Added in v5.1 -View on GitHub -

Stacks

Shorthand helpers that build on top of our flexbox utilities to make component layout faster and easier than ever.

On this page

Stacks offer a shortcut for applying a number of flexbox properties to quickly and easily create layouts in Bootstrap. All credit for the concept and implementation goes to the open source Pylon project.

-

Heads up! Support for gap utilities with flexbox isn't available in Safari prior to 14.5, so consider verifying your intended browser support. Grid layout should have no issues. Read more.

-

Vertical

-

Use .vstack to create vertical layouts. Stacked items are full-width by default. Use .gap-* utilities to add space between items.

-
-
First item
-
Second item
-
Third item
-
html
<div class="vstack gap-3">
-<div class="p-2">First item</div>
-<div class="p-2">Second item</div>
-<div class="p-2">Third item</div>
-</div>
-

Horizontal

-

Use .hstack for horizontal layouts. Stacked items are vertically centered by default and only take up their necessary width. Use .gap-* utilities to add space between items.

-
-
First item
-
Second item
-
Third item
-
html
<div class="hstack gap-3">
-<div class="p-2">First item</div>
-<div class="p-2">Second item</div>
-<div class="p-2">Third item</div>
-</div>
-

Using horizontal margin utilities like .ms-auto as spacers:

-
-
First item
-
Second item
-
Third item
-
html
<div class="hstack gap-3">
-<div class="p-2">First item</div>
-<div class="p-2 ms-auto">Second item</div>
-<div class="p-2">Third item</div>
-</div>
-

And with vertical rules:

-
-
First item
-
Second item
-
-
Third item
-
html
<div class="hstack gap-3">
-<div class="p-2">First item</div>
-<div class="p-2 ms-auto">Second item</div>
-<div class="vr"></div>
-<div class="p-2">Third item</div>
-</div>
-

Examples

-

Use .vstack to stack buttons and other elements:

-
- - -
html
<div class="vstack gap-2 col-md-5 mx-auto">
-<button type="button" class="btn btn-secondary">Save changes</button>
-<button type="button" class="btn btn-outline-secondary">Cancel</button>
-</div>
-

Create an inline form with .hstack:

-
- - -
- -
html
<div class="hstack gap-3">
-<input class="form-control me-auto" type="text" placeholder="Add your item here..." aria-label="Add your item here...">
-<button type="button" class="btn btn-secondary">Submit</button>
-<div class="vr"></div>
-<button type="button" class="btn btn-outline-danger">Reset</button>
-</div>
-

CSS

-
.hstack {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  align-self: stretch;
-}
-
-.vstack {
-  display: flex;
-  flex: 1 1 auto;
-  flex-direction: column;
-  align-self: stretch;
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/stretched-link/index.html b/site/dist/docs/5.3/helpers/stretched-link/index.html deleted file mode 100644 index 1e00d9d0e4..0000000000 --- a/site/dist/docs/5.3/helpers/stretched-link/index.html +++ /dev/null @@ -1,110 +0,0 @@ - Stretched link · Bootstrap v5.3

Stretched link

Make any HTML element or Bootstrap component clickable by "stretching" a nested link via CSS.

Add .stretched-link to a link to make its containing block clickable via a ::after pseudo element. In most cases, this means that an element with position: relative; that contains a link with the .stretched-link class is clickable. Please note given how CSS position works, .stretched-link cannot be mixed with most table elements.

-

Cards have position: relative by default in Bootstrap, so in this case you can safely add the .stretched-link class to a link in the card without any other HTML changes.

-

Multiple links and tap targets are not recommended with stretched links. However, some position and z-index styles can help should this be required.

-
-Card image cap -
-
Card with stretched link
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
-
html
<div class="card" style="width: 18rem;">
-<img src="..." class="card-img-top" alt="...">
-<div class="card-body">
-  <h5 class="card-title">Card with stretched link</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-  <a href="#" class="btn btn-primary stretched-link">Go somewhere</a>
-</div>
-</div>
-

Most custom components do not have position: relative by default, so we need to add the .position-relative here to prevent the link from stretching outside the parent element.

-
-Generic placeholder image22222 -
-
Custom component with stretched link
-

This is some placeholder content for the custom component. It is intended to mimic what some real-world content would look like, and we're using it here to give the component a bit of body and size.

- Go somewhere -
-
html
<div class="d-flex position-relative">
-<img src="..." class="flex-shrink-0 me-3" alt="...">
-<div>
-  <h5 class="mt-0">Custom component with stretched link</h5>
-  <p>This is some placeholder content for the custom component. It is intended to mimic what some real-world content would look like, and we're using it here to give the component a bit of body and size.</p>
-  <a href="#" class="stretched-link">Go somewhere</a>
-</div>
-</div>
-
-
- Generic placeholder image -
-
-
Columns with stretched link
-

Another instance of placeholder content for this other custom component. It is intended to mimic what some real-world content would look like, and we're using it here to give the component a bit of body and size.

- Go somewhere -
-
html
<div class="row g-0 bg-body-secondary position-relative">
-<div class="col-md-6 mb-md-0 p-md-4">
-  <img src="..." class="w-100" alt="...">
-</div>
-<div class="col-md-6 p-4 ps-md-0">
-  <h5 class="mt-0">Columns with stretched link</h5>
-  <p>Another instance of placeholder content for this other custom component. It is intended to mimic what some real-world content would look like, and we're using it here to give the component a bit of body and size.</p>
-  <a href="#" class="stretched-link">Go somewhere</a>
-</div>
-</div>
-

Identifying the containing block

-

If the stretched link doesn't seem to work, the containing block will probably be the cause. The following CSS properties will make an element the containing block:

-
    -
  • A position value other than static
  • -
  • A transform or perspective value other than none
  • -
  • A will-change value of transform or perspective
  • -
  • A filter value other than none or a will-change value of filter (only works on Firefox)
  • -
-
-Card image cap -
-
Card with stretched links
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-

- Stretched link will not work here, because position: relative is added to the link -

-

- This stretched link will only be spread over the p-tag, because a transform is applied to it. -

-
-
html
<div class="card" style="width: 18rem;">
-<img src="..." class="card-img-top" alt="...">
-<div class="card-body">
-  <h5 class="card-title">Card with stretched links</h5>
-  <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
-  <p class="card-text">
-    <a href="#" class="stretched-link text-danger" style="position: relative;">Stretched link will not work here, because <code>position: relative</code> is added to the link</a>
-  </p>
-  <p class="card-text bg-body-tertiary" style="transform: rotate(0);">
-    This <a href="#" class="text-warning stretched-link">stretched link</a> will only be spread over the <code>p</code>-tag, because a transform is applied to it.
-  </p>
-</div>
-</div>
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/text-truncation/index.html b/site/dist/docs/5.3/helpers/text-truncation/index.html deleted file mode 100644 index 2d9dbb5534..0000000000 --- a/site/dist/docs/5.3/helpers/text-truncation/index.html +++ /dev/null @@ -1,46 +0,0 @@ - Text truncation · Bootstrap v5.3

Text truncation

Truncate long strings of text with an ellipsis.

For longer content, you can add a .text-truncate class to truncate the text with an ellipsis. Requires display: inline-block or display: block.

-
-
-
- This text is quite long, and will be truncated once displayed. -
-
- - - -This text is quite long, and will be truncated once displayed. -
html
<!-- Block level -->
-<div class="row">
-<div class="col-2 text-truncate">
-  This text is quite long, and will be truncated once displayed.
-</div>
-</div>
-
-<!-- Inline level -->
-<span class="d-inline-block text-truncate" style="max-width: 150px;">
-This text is quite long, and will be truncated once displayed.
-</span>
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/vertical-rule/index.html b/site/dist/docs/5.3/helpers/vertical-rule/index.html deleted file mode 100644 index 31ea8162d7..0000000000 --- a/site/dist/docs/5.3/helpers/vertical-rule/index.html +++ /dev/null @@ -1,59 +0,0 @@ - Vertical rule · Bootstrap v5.3
-Added in v5.1 -View on GitHub -

Vertical rule

Use the custom vertical rule helper to create vertical dividers like the `


` element.

On this page

How it works

-

Vertical rules are inspired by the <hr> element, allowing you to create vertical dividers in common layouts. They're styled just like <hr> elements:

-
    -
  • They're 1px wide
  • -
  • They have min-height of 1em
  • -
  • Their color is set via currentColor and opacity
  • -
-

Customize them with additional styles as needed.

-

Example

-
html
<div class="vr"></div>
-

Vertical rules scale their height in flex layouts:

-
-
-
html
<div class="d-flex" style="height: 200px;">
-<div class="vr"></div>
-</div>
-

With stacks

-

They can also be used in stacks:

-
-
First item
-
Second item
-
-
Third item
-
html
<div class="hstack gap-3">
-<div class="p-2">First item</div>
-<div class="p-2 ms-auto">Second item</div>
-<div class="vr"></div>
-<div class="p-2">Third item</div>
-</div>
-

CSS

-

Sass variables

-

Customize the vertical rule Sass variable to change its width.

-
$vr-border-width:             var(--#{$prefix}border-width);
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/helpers/visually-hidden/index.html b/site/dist/docs/5.3/helpers/visually-hidden/index.html deleted file mode 100644 index a7568202b6..0000000000 --- a/site/dist/docs/5.3/helpers/visually-hidden/index.html +++ /dev/null @@ -1,41 +0,0 @@ - Visually hidden · Bootstrap v5.3

Visually hidden

Use these helpers to visually hide elements but keep them accessible to assistive technologies.

Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with .visually-hidden. Use .visually-hidden-focusable to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). .visually-hidden-focusable can also be applied to a container–thanks to :focus-within, the container will be displayed when any child element of the container receives focus.

-

Title for screen readers

-Skip to main content -
A container with a focusable element.
html
<h2 class="visually-hidden">Title for screen readers</h2>
-<a class="visually-hidden-focusable" href="#content">Skip to main content</a>
-<div class="visually-hidden-focusable">A container with a <a href="#">focusable element</a>.</div>
-

Both visually-hidden and visually-hidden-focusable can also be used as mixins.

-
// Usage as a mixin
-
-.visually-hidden-title {
-  @include visually-hidden;
-}
-
-.skip-navigation {
-  @include visually-hidden-focusable;
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/index.html b/site/dist/docs/5.3/index.html deleted file mode 100644 index b2e5f03e22..0000000000 --- a/site/dist/docs/5.3/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/layout/breakpoints/index.html b/site/dist/docs/5.3/layout/breakpoints/index.html deleted file mode 100644 index 1ca034a00e..0000000000 --- a/site/dist/docs/5.3/layout/breakpoints/index.html +++ /dev/null @@ -1,194 +0,0 @@ - Breakpoints · Bootstrap v5.3

Breakpoints

Breakpoints are customizable widths that determine how your responsive layout behaves across device or viewport sizes in Bootstrap.

Core concepts

-
    -
  • -

    Breakpoints are the building blocks of responsive design. Use them to control when your layout can be adapted at a particular viewport or device size.

    -
  • -
  • -

    Use media queries to architect your CSS by breakpoint. Media queries are a feature of CSS that allow you to conditionally apply styles based on a set of browser and operating system parameters. We most commonly use min-width in our media queries.

    -
  • -
  • -

    Mobile first, responsive design is the goal. Bootstrap's CSS aims to apply the bare minimum of styles to make a layout work at the smallest breakpoint, and then layers on styles to adjust that design for larger devices. This optimizes your CSS, improves rendering time, and provides a great experience for your visitors.

    -
  • -
-

Available breakpoints

-

Bootstrap includes six default breakpoints, sometimes referred to as grid tiers, for building responsively. These breakpoints can be customized if you're using our source Sass files.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BreakpointClass infixDimensions
Extra smallNone<576px
Smallsm≥576px
Mediummd≥768px
Largelg≥992px
Extra largexl≥1200px
Extra extra largexxl≥1400px
-

Each breakpoint was chosen to comfortably hold containers whose widths are multiples of 12. Breakpoints are also representative of a subset of common device sizes and viewport dimensions—they don't specifically target every use case or device. Instead, the ranges provide a strong and consistent foundation to build on for nearly any device.

-

These breakpoints are customizable via Sass—you'll find them in a Sass map in our _variables.scss stylesheet.

-
$grid-breakpoints: (
-  xs: 0,
-  sm: 576px,
-  md: 768px,
-  lg: 992px,
-  xl: 1200px,
-  xxl: 1400px
-);
-
-

For more information and examples on how to modify our Sass maps and variables, please refer to the CSS section of the Grid documentation.

-

Media queries

-

Since Bootstrap is developed to be mobile first, we use a handful of media queries to create sensible breakpoints for our layouts and interfaces. These breakpoints are mostly based on minimum viewport widths and allow us to scale up elements as the viewport changes.

-

Min-width

-

Bootstrap primarily uses the following media query ranges—or breakpoints—in our source Sass files for our layout, grid system, and components.

-
// Source mixins
-
-// No media query necessary for xs breakpoint as it's effectively `@media (min-width: 0) { ... }`
-@include media-breakpoint-up(sm) { ... }
-@include media-breakpoint-up(md) { ... }
-@include media-breakpoint-up(lg) { ... }
-@include media-breakpoint-up(xl) { ... }
-@include media-breakpoint-up(xxl) { ... }
-
-// Usage
-
-// Example: Hide starting at `min-width: 0`, and then show at the `sm` breakpoint
-.custom-class {
-  display: none;
-}
-@include media-breakpoint-up(sm) {
-  .custom-class {
-    display: block;
-  }
-}
-
-

These Sass mixins translate in our compiled CSS using the values declared in our Sass variables. For example:

-
// X-Small devices (portrait phones, less than 576px)
-// No media query for `xs` since this is the default in Bootstrap
-
-// Small devices (landscape phones, 576px and up)
-@media (min-width: 576px) { ... }
-
-// Medium devices (tablets, 768px and up)
-@media (min-width: 768px) { ... }
-
-// Large devices (desktops, 992px and up)
-@media (min-width: 992px) { ... }
-
-// X-Large devices (large desktops, 1200px and up)
-@media (min-width: 1200px) { ... }
-
-// XX-Large devices (larger desktops, 1400px and up)
-@media (min-width: 1400px) { ... }
-
-

Max-width

-

We occasionally use media queries that go in the other direction (the given screen size or smaller):

-
// No media query necessary for xs breakpoint as it's effectively `@media (max-width: 0) { ... }`
-@include media-breakpoint-down(sm) { ... }
-@include media-breakpoint-down(md) { ... }
-@include media-breakpoint-down(lg) { ... }
-@include media-breakpoint-down(xl) { ... }
-@include media-breakpoint-down(xxl) { ... }
-
-// Example: Style from medium breakpoint and down
-@include media-breakpoint-down(md) {
-  .custom-class {
-    display: block;
-  }
-}
-
-

These mixins take those declared breakpoints, subtract .02px from them, and use them as our max-width values. For example:

-
// `xs` returns only a ruleset and no media query
-// ... { ... }
-
-// `sm` applies to x-small devices (portrait phones, less than 576px)
-@media (max-width: 575.98px) { ... }
-
-// `md` applies to small devices (landscape phones, less than 768px)
-@media (max-width: 767.98px) { ... }
-
-// `lg` applies to medium devices (tablets, less than 992px)
-@media (max-width: 991.98px) { ... }
-
-// `xl` applies to large devices (desktops, less than 1200px)
-@media (max-width: 1199.98px) { ... }
-
-// `xxl` applies to x-large devices (large desktops, less than 1400px)
-@media (max-width: 1399.98px) { ... }
-
-

Why subtract .02px? Browsers don't currently support range context queries, so we work around the limitations of min- and max- prefixes and viewports with fractional widths (which can occur under certain conditions on high-dpi devices, for instance) by using values with higher precision.

-

Single breakpoint

-

There are also media queries and mixins for targeting a single segment of screen sizes using the minimum and maximum breakpoint widths.

-
@include media-breakpoint-only(xs) { ... }
-@include media-breakpoint-only(sm) { ... }
-@include media-breakpoint-only(md) { ... }
-@include media-breakpoint-only(lg) { ... }
-@include media-breakpoint-only(xl) { ... }
-@include media-breakpoint-only(xxl) { ... }
-
-

For example the @include media-breakpoint-only(md) { ... } will result in :

-
@media (min-width: 768px) and (max-width: 991.98px) { ... }
-
-

Between breakpoints

-

Similarly, media queries may span multiple breakpoint widths:

-
@include media-breakpoint-between(md, xl) { ... }
-
-

Which results in:

-
// Example
-// Apply styles starting from medium devices and up to extra large devices
-@media (min-width: 768px) and (max-width: 1199.98px) { ... }
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/layout/columns/index.html b/site/dist/docs/5.3/layout/columns/index.html deleted file mode 100644 index eed3461136..0000000000 --- a/site/dist/docs/5.3/layout/columns/index.html +++ /dev/null @@ -1,525 +0,0 @@ - Columns · Bootstrap v5.3

Learn how to modify columns with a handful of options for alignment, ordering, and offsetting thanks to our flexbox grid system. Plus, see how to use column classes to manage widths of non-grid elements.

Heads up! Be sure to read the Grid page first before diving into how to modify and customize your grid columns.

-

How they work

-
    -
  • -

    Columns build on the grid's flexbox architecture. Flexbox means we have options for changing individual columns and modifying groups of columns at the row level. You choose how columns grow, shrink, or otherwise change.

    -
  • -
  • -

    When building grid layouts, all content goes in columns. The hierarchy of Bootstrap's grid goes from container to row to column to your content. On rare occasions, you may combine content and column, but be aware there can be unintended consequences.

    -
  • -
  • -

    Bootstrap includes predefined classes for creating fast, responsive layouts. With six breakpoints and a dozen columns at each grid tier, we have dozens of classes already built for you to create your desired layouts. This can be disabled via Sass if you wish.

    -
  • -
-

Alignment

-

Use flexbox alignment utilities to vertically and horizontally align columns.

-

Vertical alignment

-

Change the vertical alignment with any of the responsive align-items-* classes.

-
-
-
- One of three columns -
-
- One of three columns -
-
- One of three columns -
-
-
html
<div class="container text-center">
-<div class="row align-items-start">
-  <div class="col">
-    One of three columns
-  </div>
-  <div class="col">
-    One of three columns
-  </div>
-  <div class="col">
-    One of three columns
-  </div>
-</div>
-</div>
-
-
-
- One of three columns -
-
- One of three columns -
-
- One of three columns -
-
-
html
<div class="container text-center">
-<div class="row align-items-center">
-  <div class="col">
-    One of three columns
-  </div>
-  <div class="col">
-    One of three columns
-  </div>
-  <div class="col">
-    One of three columns
-  </div>
-</div>
-</div>
-
-
-
- One of three columns -
-
- One of three columns -
-
- One of three columns -
-
-
html
<div class="container text-center">
-<div class="row align-items-end">
-  <div class="col">
-    One of three columns
-  </div>
-  <div class="col">
-    One of three columns
-  </div>
-  <div class="col">
-    One of three columns
-  </div>
-</div>
-</div>
-

Or, change the alignment of each column individually with any of the responsive .align-self-* classes.

-
-
-
- One of three columns -
-
- One of three columns -
-
- One of three columns -
-
-
html
<div class="container text-center">
-<div class="row">
-  <div class="col align-self-start">
-    One of three columns
-  </div>
-  <div class="col align-self-center">
-    One of three columns
-  </div>
-  <div class="col align-self-end">
-    One of three columns
-  </div>
-</div>
-</div>
-

Horizontal alignment

-

Change the horizontal alignment with any of the responsive justify-content-* classes.

-
-
-
-
- One of two columns -
-
- One of two columns -
-
-
-
- One of two columns -
-
- One of two columns -
-
-
-
- One of two columns -
-
- One of two columns -
-
-
-
- One of two columns -
-
- One of two columns -
-
-
-
- One of two columns -
-
- One of two columns -
-
-
-
- One of two columns -
-
- One of two columns -
-
-
html

-<div class="container text-center">
-<div class="row justify-content-start">
-  <div class="col-4">
-    One of two columns
-  </div>
-  <div class="col-4">
-    One of two columns
-  </div>
-</div>
-<div class="row justify-content-center">
-  <div class="col-4">
-    One of two columns
-  </div>
-  <div class="col-4">
-    One of two columns
-  </div>
-</div>
-<div class="row justify-content-end">
-  <div class="col-4">
-    One of two columns
-  </div>
-  <div class="col-4">
-    One of two columns
-  </div>
-</div>
-<div class="row justify-content-around">
-  <div class="col-4">
-    One of two columns
-  </div>
-  <div class="col-4">
-    One of two columns
-  </div>
-</div>
-<div class="row justify-content-between">
-  <div class="col-4">
-    One of two columns
-  </div>
-  <div class="col-4">
-    One of two columns
-  </div>
-</div>
-<div class="row justify-content-evenly">
-  <div class="col-4">
-    One of two columns
-  </div>
-  <div class="col-4">
-    One of two columns
-  </div>
-</div>
-</div>
-

Column wrapping

-

If more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.

-
-
-
-
.col-9
-
.col-4
Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.
-
.col-6
Subsequent columns continue along the new line.
-
-
html

-<div class="container">
-<div class="row">
-  <div class="col-9">.col-9</div>
-  <div class="col-4">.col-4<br>Since 9 + 4 = 13 &gt; 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.</div>
-  <div class="col-6">.col-6<br>Subsequent columns continue along the new line.</div>
-</div>
-</div>
-

Column breaks

-

Breaking columns to a new line in flexbox requires a small hack: add an element with width: 100% wherever you want to wrap your columns to a new line. Normally this is accomplished with multiple .rows, but not every implementation method can account for this.

-
-
-
-
.col-6 .col-sm-3
-
.col-6 .col-sm-3
- - -
- -
.col-6 .col-sm-3
-
.col-6 .col-sm-3
-
-
html

-<div class="container text-center">
-<div class="row">
-  <div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
-  <div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
-
-  <!-- Force next columns to break to new line -->
-  <div class="w-100"></div>
-
-  <div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
-  <div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
-</div>
-</div>
-

You may also apply this break at specific breakpoints with our responsive display utilities.

-
-
-
-
.col-6 .col-sm-4
-
.col-6 .col-sm-4
- - -
- -
.col-6 .col-sm-4
-
.col-6 .col-sm-4
-
-
html

-<div class="container text-center">
-<div class="row">
-  <div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
-  <div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
-
-  <!-- Force next columns to break to new line at md breakpoint and up -->
-  <div class="w-100 d-none d-md-block"></div>
-
-  <div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
-  <div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
-</div>
-</div>
-

Reordering

-

Order classes

-

Use .order- classes for controlling the visual order of your content. These classes are responsive, so you can set the order by breakpoint (e.g., .order-1.order-md-2). Includes support for 1 through 5 across all six grid tiers.

-
-
-
-
- First in DOM, no order applied -
-
- Second in DOM, with a larger order -
-
- Third in DOM, with an order of 1 -
-
-
html

-<div class="container text-center">
-<div class="row">
-  <div class="col">
-    First in DOM, no order applied
-  </div>
-  <div class="col order-5">
-    Second in DOM, with a larger order
-  </div>
-  <div class="col order-1">
-    Third in DOM, with an order of 1
-  </div>
-</div>
-</div>
-

There are also responsive .order-first and .order-last classes that change the order of an element by applying order: -1 and order: 6, respectively. These classes can also be intermixed with the numbered .order-* classes as needed.

-
-
-
-
- First in DOM, ordered last -
-
- Second in DOM, unordered -
-
- Third in DOM, ordered first -
-
-
html

-<div class="container text-center">
-<div class="row">
-  <div class="col order-last">
-    First in DOM, ordered last
-  </div>
-  <div class="col">
-    Second in DOM, unordered
-  </div>
-  <div class="col order-first">
-    Third in DOM, ordered first
-  </div>
-</div>
-</div>
-

If you need more .order-* classes, you can add new ones by modifying our $utilities Sass map. Read our Sass maps and loops docs or our Modify utilities docs for details.

-
$utilities: map-merge(
-  $utilities,
-  (
-    "order": map-merge(
-      map-get($utilities, "order"),
-      (
-        values: map-merge(
-          map-get(map-get($utilities, "order"), "values"),
-          (
-            6: 6, // Add a new `.order-{breakpoint}-6` utility
-            last: 7 // Change the `.order-{breakpoint}-last` utility to use the next number
-          )
-        ),
-      ),
-    ),
-  )
-);
-
-

Offsetting columns

-

You can offset grid columns in two ways: our responsive .offset- grid classes and our margin utilities. Grid classes are sized to match columns while margins are more useful for quick layouts where the width of the offset is variable.

-

Offset classes

-

Move columns to the right using .offset-md-* classes. These classes increase the left margin of a column by * columns. For example, .offset-md-4 moves .col-md-4 over four columns.

-
-
-
-
.col-md-4
-
.col-md-4 .offset-md-4
-
-
-
.col-md-3 .offset-md-3
-
.col-md-3 .offset-md-3
-
-
-
.col-md-6 .offset-md-3
-
-
html

-<div class="container text-center">
-<div class="row">
-  <div class="col-md-4">.col-md-4</div>
-  <div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div>
-</div>
-<div class="row">
-  <div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
-  <div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
-</div>
-<div class="row">
-  <div class="col-md-6 offset-md-3">.col-md-6 .offset-md-3</div>
-</div>
-</div>
-

In addition to column clearing at responsive breakpoints, you may need to reset offsets. See this in action in the grid example.

-
-
-
-
.col-sm-5 .col-md-6
-
.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0
-
-
-
.col-sm-6 .col-md-5 .col-lg-6
-
.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0
-
-
html

-<div class="container text-center">
-<div class="row">
-  <div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
-  <div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0</div>
-</div>
-<div class="row">
-  <div class="col-sm-6 col-md-5 col-lg-6">.col-sm-6 .col-md-5 .col-lg-6</div>
-  <div class="col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0</div>
-</div>
-</div>
-

Margin utilities

-

With the move to flexbox in v4, you can use margin utilities like .me-auto to force sibling columns away from one another.

-
-
-
-
.col-md-4
-
.col-md-4 .ms-auto
-
-
-
.col-md-3 .ms-md-auto
-
.col-md-3 .ms-md-auto
-
-
-
.col-auto .me-auto
-
.col-auto
-
-
html

-<div class="container text-center">
-<div class="row">
-  <div class="col-md-4">.col-md-4</div>
-  <div class="col-md-4 ms-auto">.col-md-4 .ms-auto</div>
-</div>
-<div class="row">
-  <div class="col-md-3 ms-md-auto">.col-md-3 .ms-md-auto</div>
-  <div class="col-md-3 ms-md-auto">.col-md-3 .ms-md-auto</div>
-</div>
-<div class="row">
-  <div class="col-auto me-auto">.col-auto .me-auto</div>
-  <div class="col-auto">.col-auto</div>
-</div>
-</div>
-

Standalone column classes

-

The .col-* classes can also be used outside a .row to give an element a specific width. Whenever column classes are used as non-direct children of a row, the paddings are omitted.

-
-
-.col-3: width of 25% -
- -
-.col-sm-9: width of 75% above sm breakpoint -
html

-<div class="col-3 p-3 mb-2">
-.col-3: width of 25%
-</div>
-
-<div class="col-sm-9 p-3">
-.col-sm-9: width of 75% above sm breakpoint
-</div>
-

The classes can be used together with utilities to create responsive floated images. Make sure to wrap the content in a .clearfix wrapper to clear the float if the text is shorter.

-
-PlaceholderResponsive floated image - -

- A paragraph of placeholder text. We're using it here to show the use of the clearfix class. We're adding quite a few meaningless phrases here to demonstrate how the columns interact here with the floated image. -

- -

- As you can see the paragraphs gracefully wrap around the floated image. Now imagine how this would look with some actual content in here, rather than just this boring placeholder text that goes on and on, but actually conveys no tangible information at. It simply takes up space and should not really be read. -

- -

- And yet, here you are, still persevering in reading this placeholder text, hoping for some more insights, or some hidden easter egg of content. A joke, perhaps. Unfortunately, there's none of that here. -

-
html
<div class="clearfix">
-<img src="..." class="col-md-6 float-md-end mb-3 ms-md-3" alt="...">
-
-<p>
-  A paragraph of placeholder text. We're using it here to show the use of the clearfix class. We're adding quite a few meaningless phrases here to demonstrate how the columns interact here with the floated image.
-</p>
-
-<p>
-  As you can see the paragraphs gracefully wrap around the floated image. Now imagine how this would look with some actual content in here, rather than just this boring placeholder text that goes on and on, but actually conveys no tangible information at. It simply takes up space and should not really be read.
-</p>
-
-<p>
-  And yet, here you are, still persevering in reading this placeholder text, hoping for some more insights, or some hidden easter egg of content. A joke, perhaps. Unfortunately, there's none of that here.
-</p>
-</div>
\ No newline at end of file diff --git a/site/dist/docs/5.3/layout/containers/index.html b/site/dist/docs/5.3/layout/containers/index.html deleted file mode 100644 index 68d28ce873..0000000000 --- a/site/dist/docs/5.3/layout/containers/index.html +++ /dev/null @@ -1,162 +0,0 @@ - Containers · Bootstrap v5.3

Containers

Containers are a fundamental building block of Bootstrap that contain, pad, and align your content within a given device or viewport.

How they work

-

Containers are the most basic layout element in Bootstrap and are required when using our default grid system. Containers are used to contain, pad, and (sometimes) center the content within them. While containers can be nested, most layouts do not require a nested container.

-

Bootstrap comes with three different containers:

-
    -
  • .container, which sets a max-width at each responsive breakpoint
  • -
  • .container-{breakpoint}, which is width: 100% until the specified breakpoint
  • -
  • .container-fluid, which is width: 100% at all breakpoints
  • -
-

The table below illustrates how each container's max-width compares to the original .container and .container-fluid across each breakpoint.

-

See them in action and compare them in our Grid example.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Extra small
<576px
Small
≥576px
Medium
≥768px
Large
≥992px
X-Large
≥1200px
XX-Large
≥1400px
.container100%540px720px960px1140px1320px
.container-sm100%540px720px960px1140px1320px
.container-md100%100%720px960px1140px1320px
.container-lg100%100%100%960px1140px1320px
.container-xl100%100%100%100%1140px1320px
.container-xxl100%100%100%100%100%1320px
.container-fluid100%100%100%100%100%100%
-

Default container

-

Our default .container class is a responsive, fixed-width container, meaning its max-width changes at each breakpoint.

-
<div class="container">
-  <!-- Content here -->
-</div>
-
-

Responsive containers

-

Responsive containers allow you to specify a class that is 100% wide until the specified breakpoint is reached, after which we apply max-widths for each of the higher breakpoints. For example, .container-sm is 100% wide to start until the sm breakpoint is reached, where it will scale up with md, lg, xl, and xxl.

-
<div class="container-sm">100% wide until small breakpoint</div>
-<div class="container-md">100% wide until medium breakpoint</div>
-<div class="container-lg">100% wide until large breakpoint</div>
-<div class="container-xl">100% wide until extra large breakpoint</div>
-<div class="container-xxl">100% wide until extra extra large breakpoint</div>
-
-

Fluid containers

-

Use .container-fluid for a full width container, spanning the entire width of the viewport.

-
<div class="container-fluid">
-  ...
-</div>
-
-

CSS

-

Sass variables

-

As shown above, Bootstrap generates a series of predefined container classes to help you build the layouts you desire. You may customize these predefined container classes by modifying the Sass map (found in _variables.scss) that powers them:

-

For more information and examples on how to modify our Sass maps and variables, please refer to the CSS section of the Grid documentation.

-

Sass mixins

-
$container-max-widths: (
-  sm: 540px,
-  md: 720px,
-  lg: 960px,
-  xl: 1140px,
-  xxl: 1320px
-);
-
-

In addition to customizing the Sass, you can also create your own containers with our Sass mixin.

-
// Source mixin
-@mixin make-container($padding-x: $container-padding-x) {
-  width: 100%;
-  padding-right: $padding-x;
-  padding-left: $padding-x;
-  margin-right: auto;
-  margin-left: auto;
-}
-
-// Usage
-.custom-container {
-  @include make-container();
-}
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/layout/css-grid/index.html b/site/dist/docs/5.3/layout/css-grid/index.html deleted file mode 100644 index dd3d79389b..0000000000 --- a/site/dist/docs/5.3/layout/css-grid/index.html +++ /dev/null @@ -1,319 +0,0 @@ - CSS Grid · Bootstrap v5.3
-Added in v5.1 -View on GitHub -

CSS Grid

Learn how to enable, use, and customize our alternate layout system built on CSS Grid with examples and code snippets.

Bootstrap's default grid system represents the culmination of over a decade of CSS layout techniques, tried and tested by millions of people. But, it was also created without many of the modern CSS features and techniques we're seeing in browsers like the new CSS Grid.

-

Heads up—our CSS Grid system is experimental and opt-in as of v5.1.0! We included it in our documentation's CSS to demonstrate it for you, but it's disabled by default. Keep reading to learn how to enable it in your projects.

-

How it works

-

With Bootstrap 5, we've added the option to enable a separate grid system that's built on CSS Grid, but with a Bootstrap twist. You still get classes you can apply on a whim to build responsive layouts, but with a different approach under the hood.

-
    -
  • -

    CSS Grid is opt-in. Disable the default grid system by setting $enable-grid-classes: false and enable the CSS Grid by setting $enable-cssgrid: true. Then, recompile your Sass.

    -
  • -
  • -

    Replace instances of .row with .grid. The .grid class sets display: grid and creates a grid-template that you build on with your HTML.

    -
  • -
  • -

    Replace .col-* classes with .g-col-* classes. This is because our CSS Grid columns use the grid-column property instead of width.

    -
  • -
  • -

    Columns and gutter sizes are set via CSS variables. Set these on the parent .grid and customize however you want, inline or in a stylesheet, with --bs-columns and --bs-gap.

    -
  • -
-

In the future, Bootstrap will likely shift to a hybrid solution as the gap property has achieved nearly full browser support for flexbox.

-

Key differences

-

Compared to the default grid system:

-
    -
  • -

    Flex utilities don't affect the CSS Grid columns in the same way.

    -
  • -
  • -

    Gaps replaces gutters. The gap property replaces the horizontal padding from our default grid system and functions more like margin.

    -
  • -
  • -

    As such, unlike .rows, .grids have no negative margins and margin utilities cannot be used to change the grid gutters. Grid gaps are applied horizontally and vertically by default. See the customizing section for more details.

    -
  • -
  • -

    Inline and custom styles should be viewed as replacements for modifier classes (e.g., style="--bs-columns: 3;" vs class="row-cols-3").

    -
  • -
  • -

    Nesting works similarly, but may require you to reset your column counts on each instance of a nested .grid. See the nesting section for details.

    -
  • -
-

Examples

-

Three columns

-

Three equal-width columns across all viewports and devices can be created by using the .g-col-4 classes. Add responsive classes to change the layout by viewport size.

-
-
.g-col-4
-
.g-col-4
-
.g-col-4
-
html
<div class="grid text-center">
-<div class="g-col-4">.g-col-4</div>
-<div class="g-col-4">.g-col-4</div>
-<div class="g-col-4">.g-col-4</div>
-</div>
-

Responsive

-

Use responsive classes to adjust your layout across viewports. Here we start with two columns on the narrowest viewports, and then grow to three columns on medium viewports and above.

-
-
.g-col-6 .g-col-md-4
-
.g-col-6 .g-col-md-4
-
.g-col-6 .g-col-md-4
-
html
<div class="grid text-center">
-<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
-<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
-<div class="g-col-6 g-col-md-4">.g-col-6 .g-col-md-4</div>
-</div>
-

Compare that to this two column layout at all viewports.

-
-
.g-col-6
-
.g-col-6
-
html
<div class="grid text-center">
-<div class="g-col-6">.g-col-6</div>
-<div class="g-col-6">.g-col-6</div>
-</div>
-

Wrapping

-

Grid items automatically wrap to the next line when there's no more room horizontally. Note that the gap applies to horizontal and vertical gaps between grid items.

-
-
.g-col-6
-
.g-col-6
- -
.g-col-6
-
.g-col-6
-
html
<div class="grid text-center">
-<div class="g-col-6">.g-col-6</div>
-<div class="g-col-6">.g-col-6</div>
-
-<div class="g-col-6">.g-col-6</div>
-<div class="g-col-6">.g-col-6</div>
-</div>
-

Starts

-

Start classes aim to replace our default grid's offset classes, but they're not entirely the same. CSS Grid creates a grid template through styles that tell browsers to "start at this column" and "end at this column." Those properties are grid-column-start and grid-column-end. Start classes are shorthand for the former. Pair them with the column classes to size and align your columns however you need. Start classes begin at 1 as 0 is an invalid value for these properties.

-
-
.g-col-3 .g-start-2
-
.g-col-4 .g-start-6
-
html
<div class="grid text-center">
-<div class="g-col-3 g-start-2">.g-col-3 .g-start-2</div>
-<div class="g-col-4 g-start-6">.g-col-4 .g-start-6</div>
-</div>
-

Auto columns

-

When there are no classes on the grid items (the immediate children of a .grid), each grid item will automatically be sized to one column.

-
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
html
<div class="grid text-center">
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-</div>
-

This behavior can be mixed with grid column classes.

-
-
.g-col-6
-
1
-
1
-
1
-
1
-
1
-
1
-
html
<div class="grid text-center">
-<div class="g-col-6">.g-col-6</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-<div>1</div>
-</div>
-

Nesting

-

Similar to our default grid system, our CSS Grid allows for easy nesting of .grids. However, unlike the default, this grid inherits changes in the rows, columns, and gaps. Consider the example below:

-
    -
  • We override the default number of columns with a local CSS variable: --bs-columns: 3.
  • -
  • In the first auto-column, the column count is inherited and each column is one-third of the available width.
  • -
  • In the second auto-column, we've reset the column count on the nested .grid to 12 (our default).
  • -
  • The third auto-column has no nested content.
  • -
-

In practice this allows for more complex and custom layouts when compared to our default grid system.

-
-
- First auto-column -
-
Auto-column
-
Auto-column
-
-
-
- Second auto-column -
-
6 of 12
-
4 of 12
-
2 of 12
-
-
-
Third auto-column
-
html
<div class="grid text-center overflow-x-auto" style="--bs-columns: 3;">
-<div>
-  First auto-column
-  <div class="grid">
-    <div>Auto-column</div>
-    <div>Auto-column</div>
-  </div>
-</div>
-<div>
-  Second auto-column
-  <div class="grid" style="--bs-columns: 12;">
-    <div class="g-col-6">6 of 12</div>
-    <div class="g-col-4">4 of 12</div>
-    <div class="g-col-2">2 of 12</div>
-  </div>
-</div>
-<div>Third auto-column</div>
-</div>
-

Customizing

-

Customize the number of columns, the number of rows, and the width of the gaps with local CSS variables.

-
- - - - - - - - - - - - - - - - - - - - - - - - -
VariableFallback valueDescription
--bs-rows1The number of rows in your grid template
--bs-columns12The number of columns in your grid template
--bs-gap1.5remThe size of the gap between columns (vertical and horizontal)
-

These CSS variables have no default value; instead, they apply fallback values that are used until a local instance is provided. For example, we use var(--bs-rows, 1) for our CSS Grid rows, which ignores --bs-rows because that hasn't been set anywhere yet. Once it is, the .grid instance will use that value instead of the fallback value of 1.

-

No grid classes

-

Immediate children elements of .grid are grid items, so they'll be sized without explicitly adding a .g-col class.

-
-
Auto-column
-
Auto-column
-
Auto-column
-
html
<div class="grid text-center" style="--bs-columns: 3;">
-<div>Auto-column</div>
-<div>Auto-column</div>
-<div>Auto-column</div>
-</div>
-

Columns and gaps

-

Adjust the number of columns and the gap.

-
-
.g-col-2
-
.g-col-2
-
html
<div class="grid text-center" style="--bs-columns: 4; --bs-gap: 5rem;">
-<div class="g-col-2">.g-col-2</div>
-<div class="g-col-2">.g-col-2</div>
-</div>
-
-
.g-col-6
-
.g-col-4
-
html
<div class="grid text-center" style="--bs-columns: 10; --bs-gap: 1rem;">
-<div class="g-col-6">.g-col-6</div>
-<div class="g-col-4">.g-col-4</div>
-</div>
-

Adding rows

-

Adding more rows and changing the placement of columns:

-
-
Auto-column
-
Auto-column
-
Auto-column
-
html
<div class="grid text-center" style="--bs-rows: 3; --bs-columns: 3;">
-<div>Auto-column</div>
-<div class="g-start-2" style="grid-row: 2">Auto-column</div>
-<div class="g-start-3" style="grid-row: 3">Auto-column</div>
-</div>
-

Gaps

-

Change the vertical gaps only by modifying the row-gap. Note that we use gap on .grids, but row-gap and column-gap can be modified as needed.

-
-
.g-col-6
-
.g-col-6
- -
.g-col-6
-
.g-col-6
-
html
<div class="grid text-center" style="row-gap: 0;">
-<div class="g-col-6">.g-col-6</div>
-<div class="g-col-6">.g-col-6</div>
-
-<div class="g-col-6">.g-col-6</div>
-<div class="g-col-6">.g-col-6</div>
-</div>
-

Because of that, you can have different vertical and horizontal gaps, which can take a single value (all sides) or a pair of values (vertical and horizontal). This can be applied with an inline style for gap, or with our --bs-gap CSS variable.

-
-
.g-col-6
-
.g-col-6
- -
.g-col-6
-
.g-col-6
-
html
<div class="grid text-center" style="--bs-gap: .25rem 1rem;">
-<div class="g-col-6">.g-col-6</div>
-<div class="g-col-6">.g-col-6</div>
-
-<div class="g-col-6">.g-col-6</div>
-<div class="g-col-6">.g-col-6</div>
-</div>
-

Sass

-

One limitation of the CSS Grid is that our default classes are still generated by two Sass variables, $grid-columns and $grid-gutter-width. This effectively predetermines the number of classes generated in our compiled CSS. You have two options here:

-
    -
  • Modify those default Sass variables and recompile your CSS.
  • -
  • Use inline or custom styles to augment the provided classes.
  • -
-

For example, you can increase the column count and change the gap size, and then size your "columns" with a mix of inline styles and predefined CSS Grid column classes (e.g., .g-col-4).

-
-
14 columns
-
.g-col-4
-
html
<div class="grid text-center" style="--bs-columns: 18; --bs-gap: .5rem;">
-<div style="grid-column: span 14;">14 columns</div>
-<div class="g-col-4">.g-col-4</div>
-</div>
\ No newline at end of file diff --git a/site/dist/docs/5.3/layout/grid/index.html b/site/dist/docs/5.3/layout/grid/index.html deleted file mode 100644 index 3dc8c72dfb..0000000000 --- a/site/dist/docs/5.3/layout/grid/index.html +++ /dev/null @@ -1,579 +0,0 @@ - Grid system · Bootstrap v5.3

Grid system

Use our powerful mobile-first flexbox grid to build layouts of all shapes and sizes thanks to a twelve column system, six default responsive tiers, Sass variables and mixins, and dozens of predefined classes.

Example

-

Bootstrap's grid system uses a series of containers, rows, and columns to layout and align content. It's built with flexbox and is fully responsive. Below is an example and an in-depth explanation for how the grid system comes together.

-

New to or unfamiliar with flexbox? Read this CSS Tricks flexbox guide for background, terminology, guidelines, and code snippets.

-
-
-
- Column -
-
- Column -
-
- Column -
-
-
html
<div class="container text-center">
-<div class="row">
-  <div class="col">
-    Column
-  </div>
-  <div class="col">
-    Column
-  </div>
-  <div class="col">
-    Column
-  </div>
-</div>
-</div>
-

The above example creates three equal-width columns across all devices and viewports using our predefined grid classes. Those columns are centered in the page with the parent .container.

-

How it works

-

Breaking it down, here's how the grid system comes together:

-
    -
  • -

    Our grid supports six responsive breakpoints. Breakpoints are based on min-width media queries, meaning they affect that breakpoint and all those above it (e.g., .col-sm-4 applies to sm, md, lg, xl, and xxl). This means you can control container and column sizing and behavior by each breakpoint.

    -
  • -
  • -

    Containers center and horizontally pad your content. Use .container for a responsive pixel width, .container-fluid for width: 100% across all viewports and devices, or a responsive container (e.g., .container-md) for a combination of fluid and pixel widths.

    -
  • -
  • -

    Rows are wrappers for columns. Each column has horizontal padding (called a gutter) for controlling the space between them. This padding is then counteracted on the rows with negative margins to ensure the content in your columns is visually aligned down the left side. Rows also support modifier classes to uniformly apply column sizing and gutter classes to change the spacing of your content.

    -
  • -
  • -

    Columns are incredibly flexible. There are 12 template columns available per row, allowing you to create different combinations of elements that span any number of columns. Column classes indicate the number of template columns to span (e.g., col-4 spans four). widths are set in percentages so you always have the same relative sizing.

    -
  • -
  • -

    Gutters are also responsive and customizable. Gutter classes are available across all breakpoints, with all the same sizes as our margin and padding spacing. Change horizontal gutters with .gx-* classes, vertical gutters with .gy-*, or all gutters with .g-* classes. .g-0 is also available to remove gutters.

    -
  • -
  • -

    Sass variables, maps, and mixins power the grid. If you don't want to use the predefined grid classes in Bootstrap, you can use our grid's source Sass to create your own with more semantic markup. We also include some CSS custom properties to consume these Sass variables for even greater flexibility for you.

    -
  • -
-

Be aware of the limitations and bugs around flexbox, like the inability to use some HTML elements as flex containers.

-

Grid options

-

Bootstrap's grid system can adapt across all six default breakpoints, and any breakpoints you customize. The six default grid tiers are as follows:

-
    -
  • Extra small (xs)
  • -
  • Small (sm)
  • -
  • Medium (md)
  • -
  • Large (lg)
  • -
  • Extra large (xl)
  • -
  • Extra extra large (xxl)
  • -
-

As noted above, each of these breakpoints have their own container, unique class prefix, and modifiers. Here's how the grid changes across these breakpoints:

-

xs
-<576px

sm
-≥576px

md
-≥768px

lg
-≥992px

xl
-≥1200px

xxl
-≥1400px

Container max-widthNone (auto)540px720px960px1140px1320px
Class prefix.col-.col-sm-.col-md-.col-lg-.col-xl-.col-xxl-
# of columns12
Gutter width1.5rem (.75rem on left and right)
Custom guttersYes
NestableYes
Column orderingYes
-

Auto-layout columns

-

Utilize breakpoint-specific column classes for easy column sizing without an explicit numbered class like .col-sm-6.

-

Equal-width

-

For example, here are two grid layouts that apply to every device and viewport, from xs to xxl. Add any number of unit-less classes for each breakpoint you need and every column will be the same width.

-
-
-
- 1 of 2 -
-
- 2 of 2 -
-
-
-
- 1 of 3 -
-
- 2 of 3 -
-
- 3 of 3 -
-
-
html
<div class="container text-center">
-<div class="row">
-  <div class="col">
-    1 of 2
-  </div>
-  <div class="col">
-    2 of 2
-  </div>
-</div>
-<div class="row">
-  <div class="col">
-    1 of 3
-  </div>
-  <div class="col">
-    2 of 3
-  </div>
-  <div class="col">
-    3 of 3
-  </div>
-</div>
-</div>
-

Setting one column width

-

Auto-layout for flexbox grid columns also means you can set the width of one column and have the sibling columns automatically resize around it. You may use predefined grid classes (as shown below), grid mixins, or inline widths. Note that the other columns will resize no matter the width of the center column.

-
-
-
- 1 of 3 -
-
- 2 of 3 (wider) -
-
- 3 of 3 -
-
-
-
- 1 of 3 -
-
- 2 of 3 (wider) -
-
- 3 of 3 -
-
-
html
<div class="container text-center">
-<div class="row">
-  <div class="col">
-    1 of 3
-  </div>
-  <div class="col-6">
-    2 of 3 (wider)
-  </div>
-  <div class="col">
-    3 of 3
-  </div>
-</div>
-<div class="row">
-  <div class="col">
-    1 of 3
-  </div>
-  <div class="col-5">
-    2 of 3 (wider)
-  </div>
-  <div class="col">
-    3 of 3
-  </div>
-</div>
-</div>
-

Variable width content

-

Use col-{breakpoint}-auto classes to size columns based on the natural width of their content.

-
-
-
- 1 of 3 -
-
- Variable width content -
-
- 3 of 3 -
-
-
-
- 1 of 3 -
-
- Variable width content -
-
- 3 of 3 -
-
-
html
<div class="container text-center">
-<div class="row justify-content-md-center">
-  <div class="col col-lg-2">
-    1 of 3
-  </div>
-  <div class="col-md-auto">
-    Variable width content
-  </div>
-  <div class="col col-lg-2">
-    3 of 3
-  </div>
-</div>
-<div class="row">
-  <div class="col">
-    1 of 3
-  </div>
-  <div class="col-md-auto">
-    Variable width content
-  </div>
-  <div class="col col-lg-2">
-    3 of 3
-  </div>
-</div>
-</div>
-

Responsive classes

-

Bootstrap's grid includes six tiers of predefined classes for building complex responsive layouts. Customize the size of your columns on extra small, small, medium, large, or extra large devices however you see fit.

-

All breakpoints

-

For grids that are the same from the smallest of devices to the largest, use the .col and .col-* classes. Specify a numbered class when you need a particularly sized column; otherwise, feel free to stick to .col.

-
-
-
col
-
col
-
col
-
col
-
-
-
col-8
-
col-4
-
-
html
<div class="container text-center">
-<div class="row">
-  <div class="col">col</div>
-  <div class="col">col</div>
-  <div class="col">col</div>
-  <div class="col">col</div>
-</div>
-<div class="row">
-  <div class="col-8">col-8</div>
-  <div class="col-4">col-4</div>
-</div>
-</div>
-

Stacked to horizontal

-

Using a single set of .col-sm-* classes, you can create a basic grid system that starts out stacked and becomes horizontal at the small breakpoint (sm).

-
-
-
col-sm-8
-
col-sm-4
-
-
-
col-sm
-
col-sm
-
col-sm
-
-
html
<div class="container text-center">
-<div class="row">
-  <div class="col-sm-8">col-sm-8</div>
-  <div class="col-sm-4">col-sm-4</div>
-</div>
-<div class="row">
-  <div class="col-sm">col-sm</div>
-  <div class="col-sm">col-sm</div>
-  <div class="col-sm">col-sm</div>
-</div>
-</div>
-

Mix and match

-

Don't want your columns to simply stack in some grid tiers? Use a combination of different classes for each tier as needed. See the example below for a better idea of how it all works.

-
- -
-
.col-md-8
-
.col-6 .col-md-4
-
- - -
-
.col-6 .col-md-4
-
.col-6 .col-md-4
-
.col-6 .col-md-4
-
- - -
-
.col-6
-
.col-6
-
-
html
<div class="container text-center">
-<!-- Stack the columns on mobile by making one full-width and the other half-width -->
-<div class="row">
-  <div class="col-md-8">.col-md-8</div>
-  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
-</div>
-
-<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
-<div class="row">
-  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
-  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
-  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
-</div>
-
-<!-- Columns are always 50% wide, on mobile and desktop -->
-<div class="row">
-  <div class="col-6">.col-6</div>
-  <div class="col-6">.col-6</div>
-</div>
-</div>
-

Row columns

-

Use the responsive .row-cols-* classes to quickly set the number of columns that best render your content and layout. Whereas normal .col-* classes apply to the individual columns (e.g., .col-md-4), the row columns classes are set on the parent .row as a shortcut. With .row-cols-auto you can give the columns their natural width.

-

Use these row columns classes to quickly create basic grid layouts or to control your card layouts.

-
-
-
Column
-
Column
-
Column
-
Column
-
-
html
<div class="container text-center">
-<div class="row row-cols-2">
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-</div>
-</div>
-
-
-
Column
-
Column
-
Column
-
Column
-
-
html
<div class="container text-center">
-<div class="row row-cols-3">
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-</div>
-</div>
-
-
-
Column
-
Column
-
Column
-
Column
-
-
html
<div class="container text-center">
-<div class="row row-cols-auto">
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-</div>
-</div>
-
-
-
Column
-
Column
-
Column
-
Column
-
-
html
<div class="container text-center">
-<div class="row row-cols-4">
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-</div>
-</div>
-
-
-
Column
-
Column
-
Column
-
Column
-
-
html
<div class="container text-center">
-<div class="row row-cols-4">
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col-6">Column</div>
-  <div class="col">Column</div>
-</div>
-</div>
-
-
-
Column
-
Column
-
Column
-
Column
-
-
html
<div class="container text-center">
-<div class="row row-cols-1 row-cols-sm-2 row-cols-md-4">
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-  <div class="col">Column</div>
-</div>
-</div>
-

You can also use the accompanying Sass mixin, row-cols():

-
.element {
-  // Three columns to start
-  @include row-cols(3);
-
-  // Five columns from medium breakpoint up
-  @include media-breakpoint-up(md) {
-    @include row-cols(5);
-  }
-}
-
-

Nesting

-

To nest your content with the default grid, add a new .row and set of .col-sm-* columns within an existing .col-sm-* column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns).

-
-
-
- Level 1: .col-sm-3 -
-
-
-
- Level 2: .col-8 .col-sm-6 -
-
- Level 2: .col-4 .col-sm-6 -
-
-
-
-
html
<div class="container text-center">
-<div class="row">
-  <div class="col-sm-3">
-    Level 1: .col-sm-3
-  </div>
-  <div class="col-sm-9">
-    <div class="row">
-      <div class="col-8 col-sm-6">
-        Level 2: .col-8 .col-sm-6
-      </div>
-      <div class="col-4 col-sm-6">
-        Level 2: .col-4 .col-sm-6
-      </div>
-    </div>
-  </div>
-</div>
-</div>
-

CSS

-

When using Bootstrap's source Sass files, you have the option of using Sass variables and mixins to create custom, semantic, and responsive page layouts. Our predefined grid classes use these same variables and mixins to provide a whole suite of ready-to-use classes for fast responsive layouts.

-

Sass variables

-

Variables and maps determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below.

-
$grid-columns:      12;
-$grid-gutter-width: 1.5rem;
-$grid-row-columns:  6;
-
-
$grid-breakpoints: (
-  xs: 0,
-  sm: 576px,
-  md: 768px,
-  lg: 992px,
-  xl: 1200px,
-  xxl: 1400px
-);
-
-
$container-max-widths: (
-  sm: 540px,
-  md: 720px,
-  lg: 960px,
-  xl: 1140px,
-  xxl: 1320px
-);
-
-

Sass mixins

-

Mixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns.

-
// Creates a wrapper for a series of columns
-@include make-row();
-
-// Make the element grid-ready (applying everything but the width)
-@include make-col-ready();
-
-// Without optional size values, the mixin will create equal columns (similar to using .col)
-@include make-col();
-@include make-col($size, $columns: $grid-columns);
-
-// Offset with margins
-@include make-col-offset($size, $columns: $grid-columns);
-
-

Example usage

-

You can modify the variables to your own custom values, or just use the mixins with their default values. Here's an example of using the default settings to create a two-column layout with a gap between.

-
.example-container {
-  @include make-container();
-  // Make sure to define this width after the mixin to override
-  // `width: 100%` generated by `make-container()`
-  width: 800px;
-}
-
-.example-row {
-  @include make-row();
-}
-
-.example-content-main {
-  @include make-col-ready();
-
-  @include media-breakpoint-up(sm) {
-    @include make-col(6);
-  }
-  @include media-breakpoint-up(lg) {
-    @include make-col(8);
-  }
-}
-
-.example-content-secondary {
-  @include make-col-ready();
-
-  @include media-breakpoint-up(sm) {
-    @include make-col(6);
-  }
-  @include media-breakpoint-up(lg) {
-    @include make-col(4);
-  }
-}
-
-
-
-
Main content
-
Secondary content
-
-
html
<div class="example-container">
-<div class="example-row">
-  <div class="example-content-main">Main content</div>
-  <div class="example-content-secondary">Secondary content</div>
-</div>
-</div>
-

Customizing the grid

-

Using our built-in grid Sass variables and maps, it's possible to completely customize the predefined grid classes. Change the number of tiers, the media query dimensions, and the container widths—then recompile.

-

Columns and gutters

-

The number of grid columns can be modified via Sass variables. $grid-columns is used to generate the widths (in percent) of each individual column while $grid-gutter-width sets the width for the column gutters. $grid-row-columns is used to set the maximum number of columns of .row-cols-*, any number over this limit is ignored.

-
$grid-columns: 12 !default;
-$grid-gutter-width: 1.5rem !default;
-$grid-row-columns: 6 !default;
-
-

Grid tiers

-

Moving beyond the columns themselves, you may also customize the number of grid tiers. If you wanted just four grid tiers, you'd update the $grid-breakpoints and $container-max-widths to something like this:

-
$grid-breakpoints: (
-  xs: 0,
-  sm: 480px,
-  md: 768px,
-  lg: 1024px
-);
-
-$container-max-widths: (
-  sm: 420px,
-  md: 720px,
-  lg: 960px
-);
-
-

When making any changes to the Sass variables or maps, you'll need to save your changes and recompile. Doing so will output a brand-new set of predefined grid classes for column widths, offsets, and ordering. Responsive visibility utilities will also be updated to use the custom breakpoints. Make sure to set grid values in px (not rem, em, or %).

\ No newline at end of file diff --git a/site/dist/docs/5.3/layout/gutters/index.html b/site/dist/docs/5.3/layout/gutters/index.html deleted file mode 100644 index be7b6c579a..0000000000 --- a/site/dist/docs/5.3/layout/gutters/index.html +++ /dev/null @@ -1,237 +0,0 @@ - Gutters · Bootstrap v5.3

Gutters are the padding between your columns, used to responsively space and align content in the Bootstrap grid system.

How they work

-
    -
  • -

    Gutters are the gaps between column content, created by horizontal padding. We set padding-right and padding-left on each column, and use negative margin to offset that at the start and end of each row to align content.

    -
  • -
  • -

    Gutters start at 1.5rem (24px) wide. This allows us to match our grid to the padding and margin spacers scale.

    -
  • -
  • -

    Gutters can be responsively adjusted. Use breakpoint-specific gutter classes to modify horizontal gutters, vertical gutters, and all gutters.

    -
  • -
-

Horizontal gutters

-

.gx-* classes can be used to control the horizontal gutter widths. The .container or .container-fluid parent may need to be adjusted if larger gutters are used too to avoid unwanted overflow, using a matching padding utility. For example, in the following example we've increased the padding with .px-4:

-
-
-
-
Custom column padding
-
-
-
Custom column padding
-
-
-
html
<div class="container px-4 text-center">
-<div class="row gx-5">
-  <div class="col">
-   <div class="p-3">Custom column padding</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Custom column padding</div>
-  </div>
-</div>
-</div>
-

An alternative solution is to add a wrapper around the .row with the .overflow-hidden class:

-
-
-
-
Custom column padding
-
-
-
Custom column padding
-
-
-
html
<div class="container overflow-hidden text-center">
-<div class="row gx-5">
-  <div class="col">
-   <div class="p-3">Custom column padding</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Custom column padding</div>
-  </div>
-</div>
-</div>
-

Vertical gutters

-

.gy-* classes can be used to control the vertical gutter widths within a row when columns wrap to new lines. Like the horizontal gutters, the vertical gutters can cause some overflow below the .row at the end of a page. If this occurs, you add a wrapper around .row with the .overflow-hidden class:

-
-
-
-
Custom column padding
-
-
-
Custom column padding
-
-
-
Custom column padding
-
-
-
Custom column padding
-
-
-
html
<div class="container overflow-hidden text-center">
-<div class="row gy-5">
-  <div class="col-6">
-    <div class="p-3">Custom column padding</div>
-  </div>
-  <div class="col-6">
-    <div class="p-3">Custom column padding</div>
-  </div>
-  <div class="col-6">
-    <div class="p-3">Custom column padding</div>
-  </div>
-  <div class="col-6">
-    <div class="p-3">Custom column padding</div>
-  </div>
-</div>
-</div>
-

Horizontal & vertical gutters

-

Use .g-* classes to control the horizontal and vertical grid gutters. In the example below, we use a smaller gutter width, so there isn't a need for the .overflow-hidden wrapper class.

-
-
-
-
Custom column padding
-
-
-
Custom column padding
-
-
-
Custom column padding
-
-
-
Custom column padding
-
-
-
html
<div class="container text-center">
-<div class="row g-2">
-  <div class="col-6">
-    <div class="p-3">Custom column padding</div>
-  </div>
-  <div class="col-6">
-    <div class="p-3">Custom column padding</div>
-  </div>
-  <div class="col-6">
-    <div class="p-3">Custom column padding</div>
-  </div>
-  <div class="col-6">
-    <div class="p-3">Custom column padding</div>
-  </div>
-</div>
-</div>
-

Row columns gutters

-

Gutter classes can also be added to row columns. In the following example, we use responsive row columns and responsive gutter classes.

-
-
-
-
Row column
-
-
-
Row column
-
-
-
Row column
-
-
-
Row column
-
-
-
Row column
-
-
-
Row column
-
-
-
Row column
-
-
-
Row column
-
-
-
Row column
-
-
-
Row column
-
-
-
html
<div class="container text-center">
-<div class="row row-cols-2 row-cols-lg-5 g-2 g-lg-3">
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-  <div class="col">
-    <div class="p-3">Row column</div>
-  </div>
-</div>
-</div>
-

No gutters

-

The gutters between columns in our predefined grid classes can be removed with .g-0. This removes the negative margins from .row and the horizontal padding from all immediate children columns.

-

Need an edge-to-edge design? Drop the parent .container or .container-fluid and add .mx-0 to the .row to prevent overflow.

-

In practice, here's how it looks. Note that you can continue to use this with all other predefined grid classes (including column widths, responsive tiers, reorders, and more).

-
-
.col-sm-6 .col-md-8
-
.col-6 .col-md-4
-
html
<div class="row g-0 text-center">
-<div class="col-sm-6 col-md-8">.col-sm-6 .col-md-8</div>
-<div class="col-6 col-md-4">.col-6 .col-md-4</div>
-</div>
-

Change the gutters

-

Classes are built from the $gutters Sass map which is inherited from the $spacers Sass map.

-
$grid-gutter-width: 1.5rem;
-$gutters: (
-  0: 0,
-  1: $spacer * .25,
-  2: $spacer * .5,
-  3: $spacer,
-  4: $spacer * 1.5,
-  5: $spacer * 3,
-);
-
\ No newline at end of file diff --git a/site/dist/docs/5.3/layout/index.html b/site/dist/docs/5.3/layout/index.html deleted file mode 100644 index 8fbb6c5cd2..0000000000 --- a/site/dist/docs/5.3/layout/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/layout/utilities/index.html b/site/dist/docs/5.3/layout/utilities/index.html deleted file mode 100644 index 419e587626..0000000000 --- a/site/dist/docs/5.3/layout/utilities/index.html +++ /dev/null @@ -1,35 +0,0 @@ - Utilities for layout · Bootstrap v5.3

Utilities for layout

For faster mobile-friendly and responsive development, Bootstrap includes dozens of utility classes for showing, hiding, aligning, and spacing content.

Changing display

-

Use our display utilities for responsively toggling common values of the display property. Mix it with our grid system, content, or components to show or hide them across specific viewports.

-

Flexbox options

-

Bootstrap is built with flexbox, but not every element's display has been changed to display: flex as this would add many unnecessary overrides and unexpectedly change key browser behaviors. Most of our components are built with flexbox enabled.

-

Should you need to add display: flex to an element, do so with .d-flex or one of the responsive variants (e.g., .d-sm-flex). You'll need this class or display value to allow the use of our extra flexbox utilities for sizing, alignment, spacing, and more.

-

Margin and padding

-

Use the margin and padding spacing utilities to control how elements and components are spaced and sized. Bootstrap includes a six-level scale for spacing utilities, based on a 1rem value default $spacer variable. Choose values for all viewports (e.g., .me-3 for margin-right: 1rem in LTR), or pick responsive variants to target specific viewports (e.g., .me-md-3 for margin-right: 1rem —in LTR— starting at the md breakpoint).

-

Toggle visibility

-

When toggling display isn't needed, you can toggle the visibility of an element with our visibility utilities. Invisible elements will still affect the layout of the page, but are visually hidden from visitors.

\ No newline at end of file diff --git a/site/dist/docs/5.3/layout/z-index/index.html b/site/dist/docs/5.3/layout/z-index/index.html deleted file mode 100644 index b851f99da1..0000000000 --- a/site/dist/docs/5.3/layout/z-index/index.html +++ /dev/null @@ -1,39 +0,0 @@ - Z-index · Bootstrap v5.3

While not a part of Bootstrap's grid system, z-indexes play an important part in how our components overlay and interact with one another.

Several Bootstrap components utilize z-index, the CSS property that helps control layout by providing a third axis to arrange content. We utilize a default z-index scale in Bootstrap that's been designed to properly layer navigation, tooltips and popovers, modals, and more.

-

These higher values start at an arbitrary number, high and specific enough to ideally avoid conflicts. We need a standard set of these across our layered components—tooltips, popovers, navbars, dropdowns, modals—so we can be reasonably consistent in the behaviors. There's no reason we couldn't have used 100+ or 500+.

-

We don't encourage customization of these individual values; should you change one, you likely need to change them all.

-
$zindex-dropdown:                   1000;
-$zindex-sticky:                     1020;
-$zindex-fixed:                      1030;
-$zindex-offcanvas-backdrop:         1040;
-$zindex-offcanvas:                  1045;
-$zindex-modal-backdrop:             1050;
-$zindex-modal:                      1055;
-$zindex-popover:                    1070;
-$zindex-tooltip:                    1080;
-$zindex-toast:                      1090;
-
-

To handle overlapping borders within components (e.g., buttons and inputs in input groups), we use low single digit z-index values of 1, 2, and 3 for default, hover, and active states. On hover/focus/active, we bring a particular element to the forefront with a higher z-index value to show their border over the sibling elements.

\ No newline at end of file diff --git a/site/dist/docs/5.3/migration/index.html b/site/dist/docs/5.3/migration/index.html deleted file mode 100644 index 6891781426..0000000000 --- a/site/dist/docs/5.3/migration/index.html +++ /dev/null @@ -1,948 +0,0 @@ - Migrating to v5 · Bootstrap v5.3

Migrating to v5

Track and review changes to the Bootstrap source files, documentation, and components to help you migrate from v4 to v5.

v5.3.4

-

Dependencies

-
    -
  • Migrated from Hugo to Astro for building our documentation
  • -
-

v5.3.0

-

If you're migrating from our previous alpha releases of v5.3.0, please review their changes in addition to this section.

-

Helpers

-
    -
  • Colored links once again have !important so they work better with our newly added link utilities.
  • -
-

Utilities

- -

v5.3.0-alpha2

-

If you're migrating from our previous alpha release of v5.3.0, please review the changes listed below.

-

CSS variables

-
    -
  • Removed several duplicate and unused root CSS variables.
  • -
-

Color modes

-
    -
  • -

    Dark mode colors are now derived from our theme colors (e.g., $primary) in Sass, rather than color specific tints or shades (e.g., $blue-300). This allows for a more automated dark mode when customizing the default theme colors.

    -
  • -
  • -

    Added Sass maps for generating theme colors for dark mode text, subtle background, and subtle border.

    -
  • -
  • -

    Snippet examples are now ready for dark mode with updated markup and reduced custom styles.

    -
  • -
  • -

    Added color-scheme: dark to dark mode CSS to change OS level controls like scrollbars

    -
  • -
  • -

    Form validation border-color and text color states now respond to dark mode, thanks to new Sass and CSS variables.

    -
  • -
  • -

    Dropped recently added form control background CSS variables and reassigned the Sass variables to use CSS variables instead. This simplifies the styling across color modes and avoids an issue where form controls in dark mode wouldn't update properly.

    -
  • -
  • -

    Our box-shadows will once again always stay dark instead of inverting to white when in dark mode.

    -
  • -
  • -

    Improved HTML and JavaScript for our color mode toggle script. The selector for changing the active SVG has been improved, and the markup made more accessible with ARIA attributes.

    -
  • -
  • -

    Improved docs code syntax colors and more across light and dark modes.

    -
  • -
-

Typography

-
    -
  • We no longer set a color for $headings-color-dark or --bs-heading-color for dark mode. To avoid several problems of headings within components appearing the wrong color, we've set the Sass variable to null and added a null check like we use on the default light mode.
  • -
-

Components

-
    -
  • -

    Cards now have a color set on them to improve rendering across color modes.

    -
  • -
  • -

    Added new .nav-underline variant for our navigation with a simpler bottom border under the active nav link. See the docs for an example.

    -
  • -
  • -

    Navs now have new :focus-visible styles that better match our custom button focus styles.

    -
  • -
-

Helpers

-
    -
  • -

    Added new .icon-link helper to quickly place and align Bootstrap Icons alongside a textual link. Icon links support our new link utilities, too.

    -
  • -
  • -

    Added new focus ring helper for removing the default outline and setting a custom box-shadow focus ring.

    -
  • -
-

Utilities

-
    -
  • -

    Renamed Sass and CSS variables ${color}-text to ${color}-text-emphasis to match their associated utilities.

    -
  • -
  • -

    Added new .link-body-emphasis helper alongside our colored links. This creates a colored link using our color mode responsive emphasis color.

    -
  • -
  • -

    Added new link utilities for link color opacity, underline offset, underline color, and underline opacity. Explore the new links utilities.

    -
  • -
  • -

    CSS variable based border-width utilities have been reverted to set their property directly (as was done prior to v5.2.0). This avoids inheritance issues across nested elements, including tables.

    -
  • -
  • -

    Added new .border-black utility to match our .text-black and .bg-black utilities.

    -
  • -
  • -

    Deprecated Deprecated the .text-muted utility and $text-muted Sass variable. It's been replaced by .text-body-secondary and $body-secondary-color.

    -
  • -
-

Docs

-
    -
  • -

    Examples are now displayed with the appropriate light or dark color mode as dictated by the setting in our docs. Each example has an individual color mode picker.

    -
  • -
  • -

    Improved included JavaScript for live Toast demo.

    -
  • -
  • -

    Added twbs/examples repo contents to the top of the Examples page.

    -
  • -
-

Tooling

-
    -
  • -

    Added SCSS testing via True to help test our utilities API and other customizations.

    -
  • -
  • -

    Replaced instances of our bootstrap-npm-starter project with the newer and more complete twbs/examples repo.

    -
  • -
-
-

For a complete list of changes, see the v5.3.0-alpha2 project on GitHub.

-

v5.3.0-alpha1

-
-

Color modes!

-

Learn more by reading the new color modes documentation.

-
    -
  • -

    Global support for light (default) and dark color modes. Set color mode globally on the :root element, on groups of elements and components with a wrapper class, or directly on components, with data-bs-theme="light|dark". Also included is a new color-mode() mixin that can output a ruleset with the data-bs-theme selector or a media query, depending on your preference.

    -

    Deprecated Color modes replace dark variants for components, so .btn-close-white, .carousel-dark, .dropdown-menu-dark, and .navbar-dark are deprecated.

    -
  • -
  • -

    New extended color system. We've added new theme colors (but not in $theme-colors) for a more nuanced, system-wide color palette with new secondary, tertiary, and emphasis colors for color and background-color. These new colors are available as Sass variables, CSS variables, and utilities.

    -
  • -
  • -

    We've also expanded our theme color Sass variables, CSS variables, and utilities to include text emphasis, subtle background colors, and subtle border colors. These are available as Sass variables, CSS variables, and utilities.

    -
  • -
  • -

    Adds new _variables-dark.scss stylesheet to house dark-mode specific overrides. This stylesheet should be imported immediately after the existing _variables.scss file in your import stack.

    -
    diff --git a/scss/bootstrap.scss b/scss/bootstrap.scss
    -index 8f8296def..449d70487 100644
    ---- a/scss/bootstrap.scss
    -+++ b/scss/bootstrap.scss
    -@@ -6,6 +6,7 @@
    - // Configuration
    - @import "functions";
    - @import "variables";
    -+@import "variables-dark";
    - @import "maps";
    - @import "mixins";
    - @import "utilities";
    -
    -
  • -
-

CSS variables

-
    -
  • -

    Restores CSS variables for breakpoints, though we don't use them in our media queries as they're not supported. However, these can be useful in JS-specific contexts.

    -
  • -
  • -

    Per the color modes update, we've added new utilities for new Sass CSS variables secondary and tertiary text and background colors, plus {color}-bg-subtle, {color}-border-subtle, and {color}-text-emphasis for our theme colors. These new colors are available through Sass and CSS variables (but not our color maps) with the express goal of making it easier to customize across multiple colors modes like light and dark.

    -
  • -
  • -

    Adds additional variables for alerts, .btn-close, and .offcanvas.

    -
  • -
  • -

    The --bs-heading-color variable is back with an update and dark mode support. First, we now check for a null value on the associated Sass variable, $headings-color, before trying to output the CSS variable, so by default it's not present in our compiled CSS. Second, we use the CSS variable with a fallback value, inherit, allowing the original behavior to persist, but also allowing for overrides.

    -
  • -
  • -

    Converts links to use CSS variables for styling color, but not text-decoration. Colors are now set with --bs-link-color-rgb and --bs-link-opacity as rgba() color, allowing you to customize the translucency with ease. The a:hover pseudo-class now overrides --bs-link-color-rgb instead of explicitly setting the color property.

    -
  • -
  • -

    --bs-border-width is now being used in more components for greater control over default global styling.

    -
  • -
  • -

    Adds new root CSS variables for our box-shadows, including --bs-box-shadow, --bs-box-shadow-sm, --bs-box-shadow-lg, and --bs-box-shadow-inset.

    -
  • -
-

Components

-

Alert

-
    -
  • -

    Alert variants are now styled via CSS variables.

    -
  • -
  • -

    Deprecated The alert-variant() mixin is now deprecated. We now use a Sass loop directly to modify the component's default CSS variables for each variant.

    -
  • -
-

List group

-
    -
  • -

    List group item variants are now styled via CSS variables.

    -
  • -
  • -

    Deprecated The list-group-item-variant() mixin is now deprecated. We now use a Sass loop directly to modify the component's default CSS variables for each variant.

    -
  • -
- -
    -
  • Deprecated The .dropdown-menu-dark class has been deprecated and replaced with data-bs-theme="dark" on the dropdown or any parent element. See the docs for an example.
  • -
-

Close button

-
    -
  • Deprecated The .btn-close-white class has been deprecated and replaced with data-bs-theme="dark" on the close button or any parent element. See the docs for an example.
  • -
- - -

Progress bars

-

The markup for progress bars has been updated in v5.3.0. Due to the placement of role and various aria- attributes on the inner .progress-bar element, some screen readers were not announcing zero value progress bars. Now, role="progressbar" and the relevant aria-* attributes are on the outer .progress element, leaving the .progress-bar purely for the visual presentation of the bar and optional label.

-

While we recommend adopting the new markup for improved compatibility with all screen readers, note that the legacy progress bar structure will continue to work as before.

-
<!-- Previous markup -->
-<div class="progress">
-  <div class="progress-bar" role="progressbar" aria-label="Basic example" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
-</div>
-
-<!-- New markup -->
-<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
-  <div class="progress-bar" style="width: 25%"></div>
-</div>
-
-

We've also introduced a new .progress-stacked class to more logically wrap multiple progress bars into a single stacked progress bar.

-
<!-- Previous markup -->
-<div class="progress">
-  <div class="progress-bar" role="progressbar" aria-label="Segment one" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div>
-  <div class="progress-bar bg-success" role="progressbar" aria-label="Segment two" style="width: 30%" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100"></div>
-  <div class="progress-bar bg-info" role="progressbar" aria-label="Segment three" style="width: 20%" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100"></div>
-</div>
-
-<!-- New markup -->
-<div class="progress-stacked">
-  <div class="progress" role="progressbar" aria-label="Segment one" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100" style="width: 15%">
-    <div class="progress-bar"></div>
-  </div>
-  <div class="progress" role="progressbar" aria-label="Segment two" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100" style="width: 30%">
-    <div class="progress-bar bg-success"></div>
-  </div>
-  <div class="progress" role="progressbar" aria-label="Segment three" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
-    <div class="progress-bar bg-info"></div>
-  </div>
-</div>
-
-

Forms

-
    -
  • -

    .form-control is now styled with CSS variables to support color modes. This includes the addition of two new root CSS variables for the default and disabled form control backgrounds.

    -
  • -
  • -

    .form-check and .form-switch components are now built with CSS variables for setting the background-image. The usage here differs from other components in that the various focus, active, etc states for each component aren't set on the base class. Instead, the states override one variable (e.g., --bs-form-switch-bg).

    -
  • -
  • -

    Floating form labels now have a background-color to fix support for <textarea> elements. Additional changes have been made to also support disabled states and more.

    -
  • -
  • -

    Fixed display of date and time inputs in WebKit based browsers.

    -
  • -
-

Utilities

-
    -
  • -

    Deprecated .text-muted will be replaced by .text-body-secondary in v6.

    -

    With the addition of the expanded theme colors and variables, the .text-muted variables and utility have been deprecated with v5.3.0. Its default value has also been reassigned to the new --bs-secondary-color CSS variable to better support color modes. It will be removed in v6.0.0.

    -
  • -
  • -

    Adds new .overflow-x, .overflow-y, and several .object-fit-* utilities. The object-fit property is used to specify how an <img> or <video> should be resized to fit its container, giving us a responsive alternative to using background-image for a resizable fill/fit image.

    -
  • -
  • -

    Adds new .fw-medium utility.

    -
  • -
  • -

    Added new .z-* utilities for z-index.

    -
  • -
  • -

    Box shadow utilities (and Sass variables) have been updated for dark mode. They now use --bs-body-color-rgb to generate the rgba() color values, allowing them to easily adapt to color modes based on the specified foreground color.

    -
  • -
-

For a complete list of changes, see the v5.3.0 project on GitHub.

-

v5.2.0

-
-

Refreshed design

-

Bootstrap v5.2.0 features a subtle design update for a handful of components and properties across the project, most notably through refined border-radius values on buttons and form controls. Our documentation also has been updated with a new homepage, simpler docs layout that no longer collapses sections of the sidebar, and more prominent examples of Bootstrap Icons.

-

More CSS variables

-

We've updated all our components to use CSS variables. While Sass still underpins everything, each component has been updated to include CSS variables on the component base classes (e.g., .btn), allowing for more real-time customization of Bootstrap. In subsequent releases, we'll continue to expand our use of CSS variables into our layout, forms, helpers, and utilities. Read more about CSS variables in each component on their respective documentation pages.

-

Our CSS variable usage will be somewhat incomplete until Bootstrap 6. While we'd love to fully implement these across the board, they do run the risk of causing breaking changes. For example, setting $alert-border-width: var(--bs-border-width) in our source code breaks potential Sass in your own code if you were doing $alert-border-width * 2 for some reason.

-

As such, wherever possible, we will continue to push towards more CSS variables, but please recognize our implementation may be slightly limited in v5.

-

New _maps.scss

-

Bootstrap v5.2.0 introduced a new Sass file with _maps.scss. It pulls out several Sass maps from _variables.scss to fix an issue where updates to an original map were not applied to secondary maps that extend them. For example, updates to $theme-colors were not being applied to other theme maps that relied on $theme-colors, breaking key customization workflows. In short, Sass has a limitation where once a default variable or map has been used, it cannot be updated. There's a similar shortcoming with CSS variables when they're used to compose other CSS variables.

-

This is why variable customizations in Bootstrap have to come after @import "functions", but before @import "variables" and the rest of our import stack. The same applies to Sass maps—you must override the defaults before they get used. The following maps have been moved to the new _maps.scss:

-
    -
  • $theme-colors-rgb
  • -
  • $utilities-colors
  • -
  • $utilities-text
  • -
  • $utilities-text-colors
  • -
  • $utilities-bg
  • -
  • $utilities-bg-colors
  • -
  • $negative-spacers
  • -
  • $gutters
  • -
-

Your custom Bootstrap CSS builds should now look something like this with a separate maps import.

-
  // Functions come first
-  @import "functions";
-
-  // Optional variable overrides here
-+ $custom-color: #df711b;
-+ $custom-theme-colors: (
-+   "custom": $custom-color
-+ );
-
-  // Variables come next
-  @import "variables";
-
-+ // Optional Sass map overrides here
-+ $theme-colors: map-merge($theme-colors, $custom-theme-colors);
-+
-+ // Followed by our default maps
-+ @import "maps";
-+
-  // Rest of our imports
-  @import "mixins";
-  @import "utilities";
-  @import "root";
-  @import "reboot";
-  // etc
-
-

New utilities

- -

Additional changes

-
    -
  • -

    Introduced new $enable-container-classes option. — Now when opting into the experimental CSS Grid layout, .container-* classes will still be compiled, unless this option is set to false. Containers also now keep their gutter values.

    -
  • -
  • -

    Offcanvas component now has responsive variations. The original .offcanvas class remains unchanged—it hides content across all viewports. To make it responsive, change that .offcanvas class to any .offcanvas-{sm|md|lg|xl|xxl} class.

    -
  • -
  • -

    Thicker table dividers are now opt-in. — We've removed the thicker and more difficult to override border between table groups and moved it to an optional class you can apply, .table-group-divider. See the table docs for an example.

    -
  • -
  • -

    Scrollspy has been rewritten to use the Intersection Observer API, which means you no longer need relative parent wrappers, deprecates offset config, and more. Look for your Scrollspy implementations to be more accurate and consistent in their nav highlighting.

    -
  • -
  • -

    Popovers and tooltips now use CSS variables. Some CSS variables have been updated from their Sass counterparts to reduce the number of variables. As a result, three variables have been deprecated in this release: $popover-arrow-color, $popover-arrow-outer-color, and $tooltip-arrow-color.

    -
  • -
  • -

    Added new .text-bg-{color} helpers. Instead of setting individual .text-* and .bg-* utilities, you can now use the .text-bg-* helpers to set a background-color with contrasting foreground color.

    -
  • -
  • -

    Added .form-check-reverse modifier to flip the order of labels and associated checkboxes/radios.

    -
  • -
  • -

    Added striped columns support to tables via the new .table-striped-columns class.

    -
  • -
-

For a complete list of changes, see the v5.2.0 project on GitHub.

-

v5.1.0

-
-
    -
  • -

    Added experimental support for CSS Grid layout. — This is a work in progress, and is not yet ready for production use, but you can opt into the new feature via Sass. To enable it, disable the default grid, by setting $enable-grid-classes: false and enable the CSS Grid by setting $enable-cssgrid: true.

    -
  • -
  • -

    Updated navbars to support offcanvas. — Add offcanvas drawers in any navbar with the responsive .navbar-expand-* classes and some offcanvas markup.

    -
  • -
  • -

    Added new placeholder component. — Our newest component, a way to provide temporary blocks in lieu of real content to help indicate that something is still loading in your site or app.

    -
  • -
  • -

    Collapse plugin now supports horizontal collapsing. — Add .collapse-horizontal to your .collapse to collapse the width instead of the height. Avoid browser repainting by setting a min-height or height.

    -
  • -
  • -

    Added new stack and vertical rule helpers. — Quickly apply multiple flexbox properties to quickly create custom layouts with stacks. Choose from horizontal (.hstack) and vertical (.vstack) stacks. Add vertical dividers similar to <hr> elements with the new .vr helpers.

    -
  • -
  • -

    Added new global :root CSS variables. — Added several new CSS variables to the :root level for controlling <body> styles. More are in the works, including across our utilities and components, but for now read up CSS variables in the Customize section.

    -
  • -
  • -

    Overhauled color and background utilities to use CSS variables, and added new text opacity and background opacity utilities. — .text-* and .bg-* utilities are now built with CSS variables and rgba() color values, allowing you to easily customize any utility with new opacity utilities.

    -
  • -
  • -

    Added new snippet examples based to show how to customize our components. — Pull ready to use customized components and other common design patterns with our new Snippets examples. Includes footers, dropdowns, list groups, and modals.

    -
  • -
  • -

    Removed unused positioning styles from popovers and tooltips as these are handled solely by Popper. $tooltip-margin has been deprecated and set to null in the process.

    -
  • -
-

Want more information? Read the v5.1.0 blog post.

-

v5.0.0

-
-

Hey there! Changes to our first major release of Bootstrap 5, v5.0.0, are documented below. They don't reflect the additional changes shown above.

-

Dependencies

-
    -
  • Dropped jQuery.
  • -
  • Upgraded from Popper v1.x to Popper v2.x.
  • -
  • Replaced Libsass with Dart Sass as our Sass compiler given Libsass was deprecated.
  • -
  • Migrated from Jekyll to Hugo for building our documentation
  • -
-

Browser support

-
    -
  • Dropped Internet Explorer 10 and 11
  • -
  • Dropped Microsoft Edge < 16 (Legacy Edge)
  • -
  • Dropped Firefox < 60
  • -
  • Dropped Safari < 12
  • -
  • Dropped iOS Safari < 12
  • -
  • Dropped Chrome < 60
  • -
-
-

Documentation changes

-
    -
  • Redesigned homepage, docs layout, and footer.
  • -
  • Added new Parcel guide.
  • -
  • Added new Customize section, replacing v4's Theming page, with new details on Sass, global configuration options, color schemes, CSS variables, and more.
  • -
  • Reorganized all form documentation into new Forms section, breaking apart the content into more focused pages.
  • -
  • Similarly, updated the Layout section, to flesh out grid content more clearly.
  • -
  • Renamed "Navs" component page to "Navs & Tabs".
  • -
  • Renamed "Checks" page to "Checks & radios".
  • -
  • Redesigned the navbar and added a new subnav to make it easier to get around our sites and docs versions.
  • -
  • Added new keyboard shortcut for the search field: Ctrl + /.
  • -
-

Sass

-
    -
  • -

    We've ditched the default Sass map merges to make it easier to remove redundant values. Keep in mind you now have to define all values in the Sass maps like $theme-colors. Check out how to deal with Sass maps.

    -
  • -
  • -

    Breaking Renamed color-yiq() function and related variables to color-contrast() as it's no longer related to YIQ color space. See #30168.

    -
      -
    • $yiq-contrasted-threshold is renamed to $min-contrast-ratio.
    • -
    • $yiq-text-dark and $yiq-text-light are respectively renamed to $color-contrast-dark and $color-contrast-light.
    • -
    -
  • -
  • -

    Breaking Media query mixins parameters have changed for a more logical approach.

    -
      -
    • media-breakpoint-down() uses the breakpoint itself instead of the next breakpoint (e.g., media-breakpoint-down(lg) instead of media-breakpoint-down(md) targets viewports smaller than lg).
    • -
    • Similarly, the second parameter in media-breakpoint-between() also uses the breakpoint itself instead of the next breakpoint (e.g., media-breakpoint-between(sm, lg) instead of media-breakpoint-between(sm, md) targets viewports between sm and lg).
    • -
    -
  • -
  • -

    Breaking Removed print styles and $enable-print-styles variable. Print display classes are still around. See #28339.

    -
  • -
  • -

    Breaking Dropped color(), theme-color(), and gray() functions in favor of variables. See #29083.

    -
  • -
  • -

    Breaking Renamed theme-color-level() function to color-level() and now accepts any color you want instead of only $theme-color colors. See #29083 Watch out: color-level() was later on dropped in v5.0.0-alpha3.

    -
  • -
  • -

    Breaking Renamed $enable-prefers-reduced-motion-media-query and $enable-pointer-cursor-for-buttons to $enable-reduced-motion and $enable-button-pointers for brevity.

    -
  • -
  • -

    Breaking Removed the bg-gradient-variant() mixin. Use the .bg-gradient class to add gradients to elements instead of the generated .bg-gradient-* classes.

    -
  • -
  • -

    Breaking Removed previously deprecated mixins:

    -
      -
    • hover, hover-focus, plain-hover-focus, and hover-focus-active
    • -
    • float()
    • -
    • form-control-mixin()
    • -
    • nav-divider()
    • -
    • retina-img()
    • -
    • text-hide() (also dropped the associated utility class, .text-hide)
    • -
    • visibility()
    • -
    • form-control-focus()
    • -
    -
  • -
  • -

    Breaking Renamed scale-color() function to shift-color() to avoid collision with Sass's own color scaling function.

    -
  • -
  • -

    box-shadow mixins now allow null values and drop none from multiple arguments. See #30394.

    -
  • -
  • -

    The border-radius() mixin now has a default value.

    -
  • -
-

Color system

-
    -
  • -

    The color system which worked with color-level() and $theme-color-interval was removed in favor of a new color system. All lighten() and darken() functions in our codebase are replaced by tint-color() and shade-color(). These functions will mix the color with either white or black instead of changing its lightness by a fixed amount. The shift-color() will either tint or shade a color depending on whether its weight parameter is positive or negative. See #30622 for more details.

    -
  • -
  • -

    Added new tints and shades for every color, providing nine separate colors for each base color, as new Sass variables.

    -
  • -
  • -

    Improved color contrast. Bumped color contrast ratio from 3:1 to 4.5:1 and updated blue, green, cyan, and pink colors to ensure WCAG 2.2 AA contrast. Also changed our color contrast color from $gray-900 to $black.

    -
  • -
  • -

    To support our color system, we've added new custom tint-color() and shade-color() functions to mix our colors appropriately.

    -
  • -
-

Grid updates

-
    -
  • -

    New breakpoint! Added new xxl breakpoint for 1400px and up. No changes to all other breakpoints.

    -
  • -
  • -

    Improved gutters. Gutters are now set in rems, and are narrower than v4 (1.5rem, or about 24px, down from 30px). This aligns our grid system's gutters with our spacing utilities.

    -
      -
    • Added new gutter class (.g-*, .gx-*, and .gy-*) to control horizontal/vertical gutters, horizontal gutters, and vertical gutters.
    • -
    • Breaking Renamed .no-gutters to .g-0 to match new gutter utilities.
    • -
    -
  • -
  • -

    Columns no longer have position: relative applied, so you may have to add .position-relative to some elements to restore that behavior.

    -
  • -
  • -

    Breaking Dropped several .order-* classes that often went unused. We now only provide .order-0 to .order-5 out of the box.

    -
  • -
  • -

    Breaking Dropped the .media component as it can be easily replicated with utilities. See #28265 and the flex utilities page for an example.

    -
  • -
  • -

    Breaking bootstrap-grid.css now only applies box-sizing: border-box to the column instead of resetting the global box-sizing. This way, our grid styles can be used in more places without interference.

    -
  • -
  • -

    $enable-grid-classes no longer disables the generation of container classes anymore. See #29146.

    -
  • -
  • -

    Updated the make-col mixin to default to equal columns without a specified size.

    -
  • -
-

Content, Reboot, etc

-
    -
  • -

    RFS is now enabled by default. Headings using the font-size() mixin will automatically adjust their font-size to scale with the viewport. This feature was previously opt-in with v4.

    -
  • -
  • -

    Breaking Overhauled our display typography to replace our $display-* variables and with a $display-font-sizes Sass map. Also removed the individual $display-*-weight variables for a single $display-font-weight and adjusted font-sizes.

    -
  • -
  • -

    Added two new .display-* heading sizes, .display-5 and .display-6.

    -
  • -
  • -

    Links are underlined by default (not just on hover), unless they're part of specific components.

    -
  • -
  • -

    Redesigned tables to refresh their styles and rebuild them with CSS variables for more control over styling.

    -
  • -
  • -

    Breaking Nested tables do not inherit styles anymore.

    -
  • -
  • -

    Breaking .thead-light and .thead-dark are dropped in favor of the .table-* variant classes which can be used for all table elements (thead, tbody, tfoot, tr, th and td).

    -
  • -
  • -

    Breaking The table-row-variant() mixin is renamed to table-variant() and accepts only 2 parameters: $color (color name) and $value (color code). The border color and accent colors are automatically calculated based on the table factor variables.

    -
  • -
  • -

    Split table cell padding variables into -y and -x.

    -
  • -
  • -

    Breaking Dropped .pre-scrollable class. See #29135

    -
  • -
  • -

    Breaking .text-* utilities do not add hover and focus states to links anymore. .link-* helper classes can be used instead. See #29267

    -
  • -
  • -

    Breaking Dropped .text-justify class. See #29793

    -
  • -
  • -

    Breaking <hr> elements now use height instead of border to better support the size attribute. This also enables use of padding utilities to create thicker dividers (e.g., <hr class="py-1">).

    -
  • -
  • -

    Reset default horizontal padding-left on <ul> and <ol> elements from browser default 40px to 2rem.

    -
  • -
  • -

    Added $enable-smooth-scroll, which applies scroll-behavior: smooth globally—except for users asking for reduced motion through prefers-reduced-motion media query. See #31877

    -
  • -
-

RTL

-
    -
  • Horizontal direction specific variables, utilities, and mixins have all been renamed to use logical properties like those found in flexbox layouts—e.g., start and end in lieu of left and right.
  • -
-

Forms

-
    -
  • -

    Added new floating forms! We've promoted the Floating labels example to fully supported form components. See the new Floating labels page.

    -
  • -
  • -

    Breaking Consolidated native and custom form elements. Checkboxes, radios, selects, and other inputs that had native and custom classes in v4 have been consolidated. Now nearly all our form elements are entirely custom, most without the need for custom HTML.

    -
      -
    • .custom-control.custom-checkbox is now .form-check.
    • -
    • .custom-control.custom-radio is now .form-check.
    • -
    • .custom-control.custom-switch is now .form-check.form-switch.
    • -
    • .custom-select is now .form-select.
    • -
    • .custom-file and .form-control-file have been replaced by custom styles on top of .form-control.
    • -
    • .custom-range is now .form-range.
    • -
    • Dropped native .form-control-file and .form-control-range.
    • -
    -
  • -
  • -

    Breaking Dropped .input-group-append and .input-group-prepend. You can now just add buttons and .input-group-text as direct children of the input groups.

    -
  • -
  • -

    The longstanding Missing border radius on input group with validation feedback bug is finally fixed by adding an additional .has-validation class to input groups with validation.

    -
  • -
  • -

    Breaking Dropped form-specific layout classes for our grid system. Use our grid and utilities instead of .form-group, .form-row, or .form-inline.

    -
  • -
  • -

    Breaking Form labels now require .form-label.

    -
  • -
  • -

    Breaking .form-text no longer sets display, allowing you to create inline or block help text as you wish just by changing the HTML element.

    -
  • -
  • -

    Form controls no longer used fixed height when possible, instead deferring to min-height to improve customization and compatibility with other components.

    -
  • -
  • -

    Validation icons are no longer applied to <select>s with multiple.

    -
  • -
  • -

    Rearranged source Sass files under scss/forms/, including input group styles.

    -
  • -
-
-

Components

-
    -
  • Unified padding values for alerts, breadcrumbs, cards, dropdowns, list groups, modals, popovers, and tooltips to be based on our $spacer variable. See #30564.
  • -
-

Accordion

- -

Alerts

-
    -
  • -

    Alerts now have examples with icons.

    -
  • -
  • -

    Removed custom styles for <hr>s in each alert since they already use currentColor.

    -
  • -
-

Badges

-
    -
  • -

    Breaking Dropped all .badge-* color classes for background utilities (e.g., use .bg-primary instead of .badge-primary).

    -
  • -
  • -

    Breaking Dropped .badge-pill—use the .rounded-pill utility instead.

    -
  • -
  • -

    Breaking Removed hover and focus styles for <a> and <button> elements.

    -
  • -
  • -

    Increased default padding for badges from .25em/.5em to .35em/.65em.

    -
  • -
- -
    -
  • -

    Simplified the default appearance of breadcrumbs by removing padding, background-color, and border-radius.

    -
  • -
  • -

    Added new CSS custom property --bs-breadcrumb-divider for easy customization without needing to recompile CSS.

    -
  • -
-

Buttons

-
    -
  • -

    Breaking Toggle buttons, with checkboxes or radios, no longer require JavaScript and have new markup. We no longer require a wrapping element, add .btn-check to the <input>, and pair it with any .btn classes on the <label>. See #30650. The docs for this has moved from our Buttons page to the new Forms section.

    -
  • -
  • -

    Breaking Dropped .btn-block for utilities. Instead of using .btn-block on the .btn, wrap your buttons with .d-grid and a .gap-* utility to space them as needed. Switch to responsive classes for even more control over them. Read the docs for some examples.

    -
  • -
  • -

    Updated our button-variant() and button-outline-variant() mixins to support additional parameters.

    -
  • -
  • -

    Updated buttons to ensure increased contrast on hover and active states.

    -
  • -
  • -

    Disabled buttons now have pointer-events: none;.

    -
  • -
-

Card

-
    -
  • -

    Breaking Dropped .card-deck in favor of our grid. Wrap your cards in column classes and add a parent .row-cols-* container to recreate card decks (but with more control over responsive alignment).

    -
  • -
  • -

    Breaking Dropped .card-columns in favor of Masonry. See #28922.

    -
  • -
  • -

    Breaking Replaced the .card based accordion with a new Accordion component.

    -
  • -
- -
    -
  • -

    Added new .carousel-dark variant for dark text, controls, and indicators (great for lighter backgrounds).

    -
  • -
  • -

    Replaced chevron icons for carousel controls with new SVGs from Bootstrap Icons.

    -
  • -
-

Close button

-
    -
  • -

    Breaking Renamed .close to .btn-close for a less generic name.

    -
  • -
  • -

    Close buttons now use a background-image (embedded SVG) instead of a &times; in the HTML, allowing for easier customization without the need to touch your markup.

    -
  • -
  • -

    Added new .btn-close-white variant that uses filter: invert(1) to enable higher contrast dismiss icons against darker backgrounds.

    -
  • -
-

Collapse

-
    -
  • Removed scroll anchoring for accordions.
  • -
- -
    -
  • -

    Added new .dropdown-menu-dark variant and associated variables for on-demand dark dropdowns.

    -
  • -
  • -

    Added new variable for $dropdown-padding-x.

    -
  • -
  • -

    Darkened the dropdown divider for improved contrast.

    -
  • -
  • -

    Breaking All the events for the dropdown are now triggered on the dropdown toggle button and then bubbled up to the parent element.

    -
  • -
  • -

    Dropdown menus now have a data-bs-popper="static" attribute set when the positioning of the dropdown is static, or dropdown is in the navbar. This is added by our JavaScript and helps us use custom position styles without interfering with Popper's positioning.

    -
  • -
  • -

    Breaking Dropped flip option for dropdown plugin in favor of native Popper configuration. You can now disable the flipping behavior by passing an empty array for fallbackPlacements option in flip modifier.

    -
  • -
  • -

    Dropdown menus can now be clickable with a new autoClose option to handle the auto close behavior. You can use this option to accept the click inside or outside the dropdown menu to make it interactive.

    -
  • -
  • -

    Dropdowns now support .dropdown-items wrapped in <li>s.

    -
  • -
-

Jumbotron

- -

List group

- - -
    -
  • Added new null variables for font-size, font-weight, color, and :hover color to the .nav-link class.
  • -
- -
    -
  • Breaking Navbars now require a container within (to drastically simplify spacing requirements and CSS required).
  • -
  • Breaking The .active class can no longer be applied to .nav-items, it must be applied directly on .nav-links.
  • -
-

Offcanvas

- -

Pagination

-
    -
  • -

    Pagination links now have customizable margin-left that are dynamically rounded on all corners when separated from one another.

    -
  • -
  • -

    Added transitions to pagination links.

    -
  • -
-

Popovers

-
    -
  • -

    Breaking Renamed .arrow to .popover-arrow in our default popover template.

    -
  • -
  • -

    Renamed whiteList option to allowList.

    -
  • -
-

Spinners

-
    -
  • -

    Spinners now honor prefers-reduced-motion: reduce by slowing down animations. See #31882.

    -
  • -
  • -

    Improved spinner vertical alignment.

    -
  • -
-

Toasts

-
    -
  • -

    Toasts can now be positioned in a .toast-container with the help of positioning utilities.

    -
  • -
  • -

    Changed default toast duration to 5 seconds.

    -
  • -
  • -

    Removed overflow: hidden from toasts and replaced with proper border-radiuss with calc() functions.

    -
  • -
-

Tooltips

-
    -
  • -

    Breaking Renamed .arrow to .tooltip-arrow in our default tooltip template.

    -
  • -
  • -

    Breaking The default value for the fallbackPlacements is changed to ['top', 'right', 'bottom', 'left'] for better placement of popper elements.

    -
  • -
  • -

    Breaking Renamed whiteList option to allowList.

    -
  • -
-

Utilities

-
    -
  • -

    Breaking Renamed several utilities to use logical property names instead of directional names with the addition of RTL support:

    -
      -
    • Renamed .float-left and .float-right to .float-start and .float-end.
    • -
    • Renamed .border-left and .border-right to .border-start and .border-end.
    • -
    • Renamed .rounded-left and .rounded-right to .rounded-start and .rounded-end.
    • -
    • Renamed .ml-* and .mr-* to .ms-* and .me-*.
    • -
    • Renamed .pl-* and .pr-* to .ps-* and .pe-*.
    • -
    • Renamed .text-*-left and .text-*-right to .text-*-start and .text-*-end.
    • -
    -
  • -
  • -

    Breaking Disabled negative margins by default.

    -
  • -
  • -

    Added new .bg-body class for quickly setting the <body>'s background to additional elements.

    -
  • -
  • -

    Added new position utilities for top, right, bottom, and left. Values include 0, 50%, and 100% for each property.

    -
  • -
  • -

    Added new .translate-middle-x & .translate-middle-y utilities to horizontally or vertically center absolute/fixed positioned elements.

    -
  • -
  • -

    Added new border-width utilities.

    -
  • -
  • -

    Breaking Renamed .text-monospace to .font-monospace.

    -
  • -
  • -

    Breaking Removed .text-hide as it's an antiquated method for hiding text that shouldn't be used anymore.

    -
  • -
  • -

    Added .fs-* utilities for font-size utilities (with RFS enabled). These use the same scale as HTML's default headings (1-6, large to small), and can be modified via Sass map.

    -
  • -
  • -

    Breaking Renamed .font-weight-* utilities as .fw-* for brevity and consistency.

    -
  • -
  • -

    Breaking Renamed .font-italic utility to .fst-italic for brevity and consistency with new .fst-normal utility.

    -
  • -
  • -

    Added .d-grid to display utilities and new gap utilities (.gap) for CSS Grid and flexbox layouts.

    -
  • -
  • -

    Breaking Removed .rounded-sm and rounded-lg, and introduced a new scale of classes, .rounded-0 to .rounded-3. See #31687.

    -
  • -
  • -

    Added new line-height utilities: .lh-1, .lh-sm, .lh-base and .lh-lg. See here.

    -
  • -
  • -

    Moved the .d-none utility in our CSS to give it more weight over other display utilities.

    -
  • -
  • -

    Extended the .visually-hidden-focusable helper to also work on containers, using :focus-within.

    -
  • -
-

Helpers

-
    -
  • -

    Breaking Responsive embed helpers have been renamed to ratio helpers with new class names and improved behaviors, as well as a helpful CSS variable.

    -
      -
    • Classes have been renamed to change by to x in the aspect ratio. For example, .ratio-16by9 is now .ratio-16x9.
    • -
    • We've dropped the .embed-responsive-item and element group selector in favor of a simpler .ratio > * selector. No more class is needed, and the ratio helper now works with any HTML element.
    • -
    • The $embed-responsive-aspect-ratios Sass map has been renamed to $aspect-ratios and its values have been simplified to include the class name and the percentage as the key: value pair.
    • -
    • CSS variables are now generated and included for each value in the Sass map. Modify the --bs-aspect-ratio variable on the .ratio to create any custom aspect ratio.
    • -
    -
  • -
  • -

    Breaking "Screen reader" classes are now "visually hidden" classes.

    -
      -
    • Changed the Sass file from scss/helpers/_screenreaders.scss to scss/helpers/_visually-hidden.scss
    • -
    • Renamed .sr-only and .sr-only-focusable to .visually-hidden and .visually-hidden-focusable
    • -
    • Renamed sr-only() and sr-only-focusable() mixins to visually-hidden() and visually-hidden-focusable().
    • -
    -
  • -
  • -

    bootstrap-utilities.css now also includes our helpers. Helpers don't need to be imported in custom builds anymore.

    -
  • -
-

JavaScript

-
    -
  • -

    Dropped jQuery dependency and rewrote plugins to be in regular JavaScript.

    -
  • -
  • -

    Breaking Data attributes for all JavaScript plugins are now namespaced to help distinguish Bootstrap functionality from third parties and your own code. For example, we use data-bs-toggle instead of data-toggle.

    -
  • -
  • -

    All plugins can now accept a CSS selector as the first argument. You can either pass a DOM element or any valid CSS selector to create a new instance of the plugin:

    -
    const modal = new bootstrap.Modal('#myModal')
    -const dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')
    -
    -
  • -
  • -

    popperConfig can be passed as a function that accepts the Bootstrap's default Popper config as an argument, so that you can merge this default configuration in your way. Applies to dropdowns, popovers, and tooltips.

    -
  • -
  • -

    The default value for the fallbackPlacements is changed to ['top', 'right', 'bottom', 'left'] for better placement of Popper elements. Applies to dropdowns, popovers, and tooltips.

    -
  • -
  • -

    Removed underscore from public static methods like _getInstance()getInstance().

    -
  • -
  • -

    Removed util.js, with its functionality now integrated into individual plugins. If you previously included util.js manually, you can safely remove it, as it is no longer needed. Each plugin now contains only the utilities it requires, enhancing modularity and reducing dependencies.

    -
  • -
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/api/index.html b/site/dist/docs/5.3/utilities/api/index.html deleted file mode 100644 index 553d51644f..0000000000 --- a/site/dist/docs/5.3/utilities/api/index.html +++ /dev/null @@ -1,580 +0,0 @@ - Utility API · Bootstrap v5.3

Utility API

The utility API is a Sass-based tool to generate utility classes.

Bootstrap utilities are generated with our utility API and can be used to modify or extend our default set of utility classes via Sass. Our utility API is based on a series of Sass maps and functions for generating families of classes with various options. If you're unfamiliar with Sass maps, read up on the official Sass docs to get started.

-

The $utilities map contains all our utilities and is later merged with your custom $utilities map, if present. The utility map contains a keyed list of utility groups which accept the following options:

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OptionTypeDefault valueDescription
propertyRequiredName of the property, this can be a string or an array of strings (e.g., horizontal paddings or margins).
valuesRequiredList of values, or a map if you don't want the class name to be the same as the value. If null is used as map key, class is not prepended to the class name.
classOptionalnullName of the generated class. If not provided and property is an array of strings, class will default to the first element of the property array. If not provided and property is a string, the values keys are used for the class names.
css-varOptionalfalseBoolean to generate CSS variables instead of CSS rules.
css-variable-nameOptionalnullCustom un-prefixed name for the CSS variable inside the ruleset.
local-varsOptionalnullMap of local CSS variables to generate in addition to the CSS rules.
stateOptionalnullList of pseudo-class variants (e.g., :hover or :focus) to generate.
responsiveOptionalfalseBoolean indicating if responsive classes should be generated.
rfsOptionalfalseBoolean to enable fluid rescaling with RFS.
printOptionalfalseBoolean indicating if print classes need to be generated.
rtlOptionaltrueBoolean indicating if utility should be kept in RTL.
-

API explained

-

All utility variables are added to the $utilities variable within our _utilities.scss stylesheet. Each group of utilities looks something like this:

-
$utilities: (
-  "opacity": (
-    property: opacity,
-    values: (
-      0: 0,
-      25: .25,
-      50: .5,
-      75: .75,
-      100: 1,
-    )
-  )
-);
-
-

Which outputs the following:

-
.opacity-0 { opacity: 0; }
-.opacity-25 { opacity: .25; }
-.opacity-50 { opacity: .5; }
-.opacity-75 { opacity: .75; }
-.opacity-100 { opacity: 1; }
-
-

Property

-

The required property key must be set for any utility, and it must contain a valid CSS property. This property is used in the generated utility's ruleset. When the class key is omitted, it also serves as the default class name. Consider the text-decoration utility:

-
$utilities: (
-  "text-decoration": (
-    property: text-decoration,
-    values: none underline line-through
-  )
-);
-
-

Output:

-
.text-decoration-none { text-decoration: none !important; }
-.text-decoration-underline { text-decoration: underline !important; }
-.text-decoration-line-through { text-decoration: line-through !important; }
-
-

Values

-

Use the values key to specify which values for the specified property should be used in the generated class names and rules. Can be a list or map (set in the utilities or in a Sass variable).

-

As a list, like with text-decoration utilities:

-
values: none underline line-through
-
-

As a map, like with opacity utilities:

-
values: (
-  0: 0,
-  25: .25,
-  50: .5,
-  75: .75,
-  100: 1,
-)
-
-

As a Sass variable that sets the list or map, as in our position utilities:

-
values: $position-values
-
-

Class

-

Use the class option to change the class prefix used in the compiled CSS. For example, to change from .opacity-* to .o-*:

-
$utilities: (
-  "opacity": (
-    property: opacity,
-    class: o,
-    values: (
-      0: 0,
-      25: .25,
-      50: .5,
-      75: .75,
-      100: 1,
-    )
-  )
-);
-
-

Output:

-
.o-0 { opacity: 0 !important; }
-.o-25 { opacity: .25 !important; }
-.o-50 { opacity: .5 !important; }
-.o-75 { opacity: .75 !important; }
-.o-100 { opacity: 1 !important; }
-
-

If class: null, generates classes for each of the values keys:

-
$utilities: (
-  "visibility": (
-    property: visibility,
-    class: null,
-    values: (
-      visible: visible,
-      invisible: hidden,
-    )
-  )
-);
-
-

Output:

-
.visible { visibility: visible !important; }
-.invisible { visibility: hidden !important; }
-
-

CSS variable utilities

-

Set the css-var boolean option to true and the API will generate local CSS variables for the given selector instead of the usual property: value rules. Add an optional css-variable-name to set a different CSS variable name than the class name.

-

Consider our .text-opacity-* utilities. If we add the css-variable-name option, we'll get a custom output.

-
$utilities: (
-  "text-opacity": (
-    css-var: true,
-    css-variable-name: text-alpha,
-    class: text-opacity,
-    values: (
-      25: .25,
-      50: .5,
-      75: .75,
-      100: 1
-    )
-  ),
-);
-
-

Output:

-
.text-opacity-25 { --bs-text-alpha: .25; }
-.text-opacity-50 { --bs-text-alpha: .5; }
-.text-opacity-75 { --bs-text-alpha: .75; }
-.text-opacity-100 { --bs-text-alpha: 1; }
-
-

Local CSS variables

-

Use the local-vars option to specify a Sass map that will generate local CSS variables within the utility class's ruleset. Please note that it may require additional work to consume those local CSS variables in the generated CSS rules. For example, consider our .bg-* utilities:

-
$utilities: (
-  "background-color": (
-    property: background-color,
-    class: bg,
-    local-vars: (
-      "bg-opacity": 1
-    ),
-    values: map-merge(
-      $utilities-bg-colors,
-      (
-        "transparent": transparent
-      )
-    )
-  )
-);
-
-

Output:

-
.bg-primary {
-  --bs-bg-opacity: 1;
-  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
-}
-
-

States

-

Use the state option to generate pseudo-class variations. Example pseudo-classes are :hover and :focus. When a list of states are provided, classnames are created for that pseudo-class. For example, to change opacity on hover, add state: hover and you'll get .opacity-hover:hover in your compiled CSS.

-

Need multiple pseudo-classes? Use a space-separated list of states: state: hover focus.

-
$utilities: (
-  "opacity": (
-    property: opacity,
-    class: opacity,
-    state: hover,
-    values: (
-      0: 0,
-      25: .25,
-      50: .5,
-      75: .75,
-      100: 1,
-    )
-  )
-);
-
-

Output:

-
.opacity-0-hover:hover { opacity: 0 !important; }
-.opacity-25-hover:hover { opacity: .25 !important; }
-.opacity-50-hover:hover { opacity: .5 !important; }
-.opacity-75-hover:hover { opacity: .75 !important; }
-.opacity-100-hover:hover { opacity: 1 !important; }
-
-

Responsive

-

Add the responsive boolean to generate responsive utilities (e.g., .opacity-md-25) across all breakpoints.

-
$utilities: (
-  "opacity": (
-    property: opacity,
-    responsive: true,
-    values: (
-      0: 0,
-      25: .25,
-      50: .5,
-      75: .75,
-      100: 1,
-    )
-  )
-);
-
-

Output:

-
.opacity-0 { opacity: 0 !important; }
-.opacity-25 { opacity: .25 !important; }
-.opacity-50 { opacity: .5 !important; }
-.opacity-75 { opacity: .75 !important; }
-.opacity-100 { opacity: 1 !important; }
-
-@media (min-width: 576px) {
-  .opacity-sm-0 { opacity: 0 !important; }
-  .opacity-sm-25 { opacity: .25 !important; }
-  .opacity-sm-50 { opacity: .5 !important; }
-  .opacity-sm-75 { opacity: .75 !important; }
-  .opacity-sm-100 { opacity: 1 !important; }
-}
-
-@media (min-width: 768px) {
-  .opacity-md-0 { opacity: 0 !important; }
-  .opacity-md-25 { opacity: .25 !important; }
-  .opacity-md-50 { opacity: .5 !important; }
-  .opacity-md-75 { opacity: .75 !important; }
-  .opacity-md-100 { opacity: 1 !important; }
-}
-
-@media (min-width: 992px) {
-  .opacity-lg-0 { opacity: 0 !important; }
-  .opacity-lg-25 { opacity: .25 !important; }
-  .opacity-lg-50 { opacity: .5 !important; }
-  .opacity-lg-75 { opacity: .75 !important; }
-  .opacity-lg-100 { opacity: 1 !important; }
-}
-
-@media (min-width: 1200px) {
-  .opacity-xl-0 { opacity: 0 !important; }
-  .opacity-xl-25 { opacity: .25 !important; }
-  .opacity-xl-50 { opacity: .5 !important; }
-  .opacity-xl-75 { opacity: .75 !important; }
-  .opacity-xl-100 { opacity: 1 !important; }
-}
-
-@media (min-width: 1400px) {
-  .opacity-xxl-0 { opacity: 0 !important; }
-  .opacity-xxl-25 { opacity: .25 !important; }
-  .opacity-xxl-50 { opacity: .5 !important; }
-  .opacity-xxl-75 { opacity: .75 !important; }
-  .opacity-xxl-100 { opacity: 1 !important; }
-}
-
-

Print

-

Enabling the print option will also generate utility classes for print, which are only applied within the @media print { ... } media query.

-
$utilities: (
-  "opacity": (
-    property: opacity,
-    print: true,
-    values: (
-      0: 0,
-      25: .25,
-      50: .5,
-      75: .75,
-      100: 1,
-    )
-  )
-);
-
-

Output:

-
.opacity-0 { opacity: 0 !important; }
-.opacity-25 { opacity: .25 !important; }
-.opacity-50 { opacity: .5 !important; }
-.opacity-75 { opacity: .75 !important; }
-.opacity-100 { opacity: 1 !important; }
-
-@media print {
-  .opacity-print-0 { opacity: 0 !important; }
-  .opacity-print-25 { opacity: .25 !important; }
-  .opacity-print-50 { opacity: .5 !important; }
-  .opacity-print-75 { opacity: .75 !important; }
-  .opacity-print-100 { opacity: 1 !important; }
-}
-
-

Importance

-

All utilities generated by the API include !important to ensure they override components and modifier classes as intended. You can toggle this setting globally with the $enable-important-utilities variable (defaults to true).

-

Using the API

-

Now that you're familiar with how the utilities API works, learn how to add your own custom classes and modify our default utilities.

-

Override utilities

-

Override existing utilities by using the same key. For example, if you want additional responsive overflow utility classes, you can do this:

-
$utilities: (
-  "overflow": (
-    responsive: true,
-    property: overflow,
-    values: visible hidden scroll auto,
-  ),
-);
-
-

Add utilities

-

New utilities can be added to the default $utilities map with a map-merge. Make sure our required Sass files and _utilities.scss are imported first, then use the map-merge to add your additional utilities. For example, here's how to add a responsive cursor utility with three values.

-
@import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
-@import "bootstrap/scss/maps";
-@import "bootstrap/scss/mixins";
-@import "bootstrap/scss/utilities";
-
-$utilities: map-merge(
-  $utilities,
-  (
-    "cursor": (
-      property: cursor,
-      class: cursor,
-      responsive: true,
-      values: auto pointer grab,
-    )
-  )
-);
-
-@import "bootstrap/scss/utilities/api";
-
-

Modify utilities

-

Modify existing utilities in the default $utilities map with map-get and map-merge functions. In the example below, we're adding an additional value to the width utilities. Start with an initial map-merge and then specify which utility you want to modify. From there, fetch the nested "width" map with map-get to access and modify the utility's options and values.

-
@import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
-@import "bootstrap/scss/maps";
-@import "bootstrap/scss/mixins";
-@import "bootstrap/scss/utilities";
-
-$utilities: map-merge(
-  $utilities,
-  (
-    "width": map-merge(
-      map-get($utilities, "width"),
-      (
-        values: map-merge(
-          map-get(map-get($utilities, "width"), "values"),
-          (10: 10%),
-        ),
-      ),
-    ),
-  )
-);
-
-@import "bootstrap/scss/utilities/api";
-
-

Enable responsive

-

You can enable responsive classes for an existing set of utilities that are not currently responsive by default. For example, to make the border classes responsive:

-
@import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
-@import "bootstrap/scss/maps";
-@import "bootstrap/scss/mixins";
-@import "bootstrap/scss/utilities";
-
-$utilities: map-merge(
-  $utilities,
-  (
-    "border": map-merge(
-      map-get($utilities, "border"),
-      ( responsive: true ),
-    ),
-  )
-);
-
-@import "bootstrap/scss/utilities/api";
-
-

This will now generate responsive variations of .border and .border-0 for each breakpoint. Your generated CSS will look like this:

-
.border { ... }
-.border-0 { ... }
-
-@media (min-width: 576px) {
-  .border-sm { ... }
-  .border-sm-0 { ... }
-}
-
-@media (min-width: 768px) {
-  .border-md { ... }
-  .border-md-0 { ... }
-}
-
-@media (min-width: 992px) {
-  .border-lg { ... }
-  .border-lg-0 { ... }
-}
-
-@media (min-width: 1200px) {
-  .border-xl { ... }
-  .border-xl-0 { ... }
-}
-
-@media (min-width: 1400px) {
-  .border-xxl { ... }
-  .border-xxl-0 { ... }
-}
-
-

Rename utilities

-

Missing v4 utilities, or used to another naming convention? The utilities API can be used to override the resulting class of a given utility—for example, to rename .ms-* utilities to oldish .ml-*:

-
@import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
-@import "bootstrap/scss/maps";
-@import "bootstrap/scss/mixins";
-@import "bootstrap/scss/utilities";
-
-$utilities: map-merge(
-  $utilities,
-  (
-    "margin-start": map-merge(
-      map-get($utilities, "margin-start"),
-      ( class: ml ),
-    ),
-  )
-);
-
-@import "bootstrap/scss/utilities/api";
-
-

Remove utilities

-

Remove any of the default utilities with the map-remove() Sass function.

-
@import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
-@import "bootstrap/scss/maps";
-@import "bootstrap/scss/mixins";
-@import "bootstrap/scss/utilities";
-
-// Remove multiple utilities with a comma-separated list
-$utilities: map-remove($utilities, "width", "float");
-
-@import "bootstrap/scss/utilities/api";
-
-

You can also use the map-merge() Sass function and set the group key to null to remove the utility.

-
@import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
-@import "bootstrap/scss/maps";
-@import "bootstrap/scss/mixins";
-@import "bootstrap/scss/utilities";
-
-$utilities: map-merge(
-  $utilities,
-  (
-    "width": null
-  )
-);
-
-@import "bootstrap/scss/utilities/api";
-
-

Add, remove, modify

-

You can add, remove, and modify many utilities all at once with the map-merge() Sass function. Here's how you can combine the previous examples into one larger map.

-
@import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
-@import "bootstrap/scss/variables-dark";
-@import "bootstrap/scss/maps";
-@import "bootstrap/scss/mixins";
-@import "bootstrap/scss/utilities";
-
-$utilities: map-merge(
-  $utilities,
-  (
-    // Remove the `width` utility
-    "width": null,
-    // Make an existing utility responsive
-    "border": map-merge(
-      map-get($utilities, "border"),
-      ( responsive: true ),
-    ),
-    // Add new utilities
-    "cursor": (
-      property: cursor,
-      class: cursor,
-      responsive: true,
-      values: auto pointer grab,
-    )
-  )
-);
-
-@import "bootstrap/scss/utilities/api";
-
-

Remove utility in RTL

-

Some edge cases make RTL styling difficult, such as line breaks in Arabic. Thus utilities can be dropped from RTL output by setting the rtl option to false:

-
$utilities: (
-  "word-wrap": (
-    property: word-wrap word-break,
-    class: text,
-    values: (break: break-word),
-    rtl: false
-  ),
-);
-
-

Output:

-
/* rtl:begin:remove */
-.text-break {
-  word-wrap: break-word !important;
-  word-break: break-word !important;
-}
-/* rtl:end:remove */
-
-

This doesn't output anything in RTL, thanks to the RTLCSS remove control directive.

\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/background/index.html b/site/dist/docs/5.3/utilities/background/index.html deleted file mode 100644 index 2878bb2b3f..0000000000 --- a/site/dist/docs/5.3/utilities/background/index.html +++ /dev/null @@ -1,314 +0,0 @@ - Background · Bootstrap v5.3

Background

Convey meaning through `background-color` and add decoration with gradients.

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

Background color

-

Similar to the contextual text color classes, set the background of an element to any contextual class. Background utilities do not set color, so in some cases you'll want to use .text-* color utilities.

-

Background utilities like .bg-* that generated from our original $theme-colors Sass map don't yet respond to color modes, however, any .bg-*-subtle utility will. This will be resolved in v6.

-
.bg-primary
-
.bg-primary-subtle
-
.bg-secondary
-
.bg-secondary-subtle
-
.bg-success
-
.bg-success-subtle
-
.bg-danger
-
.bg-danger-subtle
-
.bg-warning
-
.bg-warning-subtle
-
.bg-info
-
.bg-info-subtle
-
.bg-light
-
.bg-light-subtle
-
.bg-dark
-
.bg-dark-subtle
-
.bg-body-secondary
-
.bg-body-tertiary
-
.bg-body
-
.bg-black
-
.bg-white
-
.bg-transparent
html
<div class="p-3 mb-2 bg-primary text-white">.bg-primary</div>
-<div class="p-3 mb-2 bg-primary-subtle text-primary-emphasis">.bg-primary-subtle</div>
-<div class="p-3 mb-2 bg-secondary text-white">.bg-secondary</div>
-<div class="p-3 mb-2 bg-secondary-subtle text-secondary-emphasis">.bg-secondary-subtle</div>
-<div class="p-3 mb-2 bg-success text-white">.bg-success</div>
-<div class="p-3 mb-2 bg-success-subtle text-success-emphasis">.bg-success-subtle</div>
-<div class="p-3 mb-2 bg-danger text-white">.bg-danger</div>
-<div class="p-3 mb-2 bg-danger-subtle text-danger-emphasis">.bg-danger-subtle</div>
-<div class="p-3 mb-2 bg-warning text-dark">.bg-warning</div>
-<div class="p-3 mb-2 bg-warning-subtle text-warning-emphasis">.bg-warning-subtle</div>
-<div class="p-3 mb-2 bg-info text-dark">.bg-info</div>
-<div class="p-3 mb-2 bg-info-subtle text-info-emphasis">.bg-info-subtle</div>
-<div class="p-3 mb-2 bg-light text-dark">.bg-light</div>
-<div class="p-3 mb-2 bg-light-subtle text-light-emphasis">.bg-light-subtle</div>
-<div class="p-3 mb-2 bg-dark text-white">.bg-dark</div>
-<div class="p-3 mb-2 bg-dark-subtle text-dark-emphasis">.bg-dark-subtle</div>
-<div class="p-3 mb-2 bg-body-secondary">.bg-body-secondary</div>
-<div class="p-3 mb-2 bg-body-tertiary">.bg-body-tertiary</div>
-<div class="p-3 mb-2 bg-body text-body">.bg-body</div>
-<div class="p-3 mb-2 bg-black text-white">.bg-black</div>
-<div class="p-3 mb-2 bg-white text-dark">.bg-white</div>
-<div class="p-3 mb-2 bg-transparent text-body">.bg-transparent</div>
-

Background gradient

-

By adding a .bg-gradient class, a linear gradient is added as background image to the backgrounds. This gradient starts with a semi-transparent white which fades out to the bottom.

-

Do you need a gradient in your custom CSS? Just add background-image: var(--bs-gradient);.

-
.bg-primary.bg-gradient
.bg-secondary.bg-gradient
.bg-success.bg-gradient
.bg-danger.bg-gradient
.bg-warning.bg-gradient dark
.bg-info.bg-gradient dark
.bg-light.bg-gradient dark
.bg-dark.bg-gradient white
-
.bg-black.bg-gradient
-

Opacity

-Added in v5.1.0 -

As of v5.1.0, background-color utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.

-

How it works

-

Consider our default .bg-success utility.

-
.bg-success {
-  --bs-bg-opacity: 1;
-  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
-}
-
-

We use an RGB version of our --bs-success (with the value of 25, 135, 84) CSS variable and attached a second CSS variable, --bs-bg-opacity, for the alpha transparency (with a default value 1 thanks to a local CSS variable). That means anytime you use .bg-success now, your computed color value is rgba(25, 135, 84, 1). The local CSS variable inside each .bg-* class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.

-

Example

-

To change that opacity, override --bs-bg-opacity via custom styles or inline styles.

-
This is default success background
-
This is 50% opacity success background
html
<div class="bg-success p-2 text-white">This is default success background</div>
-<div class="bg-success p-2" style="--bs-bg-opacity: .5;">This is 50% opacity success background</div>
-

Or, choose from any of the .bg-opacity utilities:

-
This is default success background
-
This is 75% opacity success background
-
This is 50% opacity success background
-
This is 25% opacity success background
-
This is 10% opacity success background
html
<div class="bg-success p-2 text-white">This is default success background</div>
-<div class="bg-success p-2 text-white bg-opacity-75">This is 75% opacity success background</div>
-<div class="bg-success p-2 text-dark bg-opacity-50">This is 50% opacity success background</div>
-<div class="bg-success p-2 text-dark bg-opacity-25">This is 25% opacity success background</div>
-<div class="bg-success p-2 text-dark bg-opacity-10">This is 10% opacity success background</div>
-

CSS

-

In addition to the following Sass functionality, consider reading about our included CSS custom properties (aka CSS variables) for colors and more.

-

Sass variables

-

Most background-color utilities are generated by our theme colors, reassigned from our generic color palette variables.

-
$blue:    #0d6efd;
-$indigo:  #6610f2;
-$purple:  #6f42c1;
-$pink:    #d63384;
-$red:     #dc3545;
-$orange:  #fd7e14;
-$yellow:  #ffc107;
-$green:   #198754;
-$teal:    #20c997;
-$cyan:    #0dcaf0;
-
-
$primary:       $blue;
-$secondary:     $gray-600;
-$success:       $green;
-$info:          $cyan;
-$warning:       $yellow;
-$danger:        $red;
-$light:         $gray-100;
-$dark:          $gray-900;
-
-
$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0));
-
-

Grayscale colors are also available, but only a subset are used to generate any utilities.

-
$white:    #fff;
-$gray-100: #f8f9fa;
-$gray-200: #e9ecef;
-$gray-300: #dee2e6;
-$gray-400: #ced4da;
-$gray-500: #adb5bd;
-$gray-600: #6c757d;
-$gray-700: #495057;
-$gray-800: #343a40;
-$gray-900: #212529;
-$black:    #000;
-
-

Variables for setting background-color in .bg-*-subtle utilities in light and dark mode:

-
$primary-bg-subtle:       tint-color($primary, 80%);
-$secondary-bg-subtle:     tint-color($secondary, 80%);
-$success-bg-subtle:       tint-color($success, 80%);
-$info-bg-subtle:          tint-color($info, 80%);
-$warning-bg-subtle:       tint-color($warning, 80%);
-$danger-bg-subtle:        tint-color($danger, 80%);
-$light-bg-subtle:         mix($gray-100, $white);
-$dark-bg-subtle:          $gray-400;
-
-
$primary-bg-subtle-dark:            shade-color($primary, 80%);
-$secondary-bg-subtle-dark:          shade-color($secondary, 80%);
-$success-bg-subtle-dark:            shade-color($success, 80%);
-$info-bg-subtle-dark:               shade-color($info, 80%);
-$warning-bg-subtle-dark:            shade-color($warning, 80%);
-$danger-bg-subtle-dark:             shade-color($danger, 80%);
-$light-bg-subtle-dark:              $gray-800;
-$dark-bg-subtle-dark:               mix($gray-800, $black);
-
-

Sass maps

-

Theme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.

-
$theme-colors: (
-  "primary":    $primary,
-  "secondary":  $secondary,
-  "success":    $success,
-  "info":       $info,
-  "warning":    $warning,
-  "danger":     $danger,
-  "light":      $light,
-  "dark":       $dark
-);
-
-

Grayscale colors are also available as a Sass map. This map is not used to generate any utilities.

-
$grays: (
-  "100": $gray-100,
-  "200": $gray-200,
-  "300": $gray-300,
-  "400": $gray-400,
-  "500": $gray-500,
-  "600": $gray-600,
-  "700": $gray-700,
-  "800": $gray-800,
-  "900": $gray-900
-);
-
-

RGB colors are generated from a separate Sass map:

-
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value");
-
-

Background color opacities build on that with their own map that's consumed by the utilities API:

-
$utilities-bg: map-merge(
-  $utilities-colors,
-  (
-    "black": to-rgb($black),
-    "white": to-rgb($white),
-    "body": to-rgb($body-bg)
-  )
-);
-$utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg");
-
-$utilities-bg-subtle: (
-  "primary-subtle": var(--#{$prefix}primary-bg-subtle),
-  "secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
-  "success-subtle": var(--#{$prefix}success-bg-subtle),
-  "info-subtle": var(--#{$prefix}info-bg-subtle),
-  "warning-subtle": var(--#{$prefix}warning-bg-subtle),
-  "danger-subtle": var(--#{$prefix}danger-bg-subtle),
-  "light-subtle": var(--#{$prefix}light-bg-subtle),
-  "dark-subtle": var(--#{$prefix}dark-bg-subtle)
-);
-
-

Color mode background colors are also available as a Sass map:

-
$theme-colors-bg-subtle: (
-  "primary": $primary-bg-subtle,
-  "secondary": $secondary-bg-subtle,
-  "success": $success-bg-subtle,
-  "info": $info-bg-subtle,
-  "warning": $warning-bg-subtle,
-  "danger": $danger-bg-subtle,
-  "light": $light-bg-subtle,
-  "dark": $dark-bg-subtle,
-);
-
-
  $theme-colors-bg-subtle-dark: (
-    "primary": $primary-bg-subtle-dark,
-    "secondary": $secondary-bg-subtle-dark,
-    "success": $success-bg-subtle-dark,
-    "info": $info-bg-subtle-dark,
-    "warning": $warning-bg-subtle-dark,
-    "danger": $danger-bg-subtle-dark,
-    "light": $light-bg-subtle-dark,
-    "dark": $dark-bg-subtle-dark,
-  );
-  
-

Sass mixins

-

No mixins are used to generate our background utilities, but we do have some additional mixins for other situations where you'd like to create your own gradients.

-
@mixin gradient-bg($color: null) {
-  background-color: $color;
-
-  @if $enable-gradients {
-    background-image: var(--#{$prefix}gradient);
-  }
-}
-
-
// Horizontal gradient, from left to right
-//
-// Creates two color stops, start and end, by specifying a color and position for each color stop.
-@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
-  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
-}
-
-// Vertical gradient, from top to bottom
-//
-// Creates two color stops, start and end, by specifying a color and position for each color stop.
-@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {
-  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
-}
-
-@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
-  background-image: linear-gradient($deg, $start-color, $end-color);
-}
-
-@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
-  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
-}
-
-@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
-  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
-}
-
-@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
-  background-image: radial-gradient(circle, $inner-color, $outer-color);
-}
-
-@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
-  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
-}
-
-

Sass utilities API

-

Background utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "background-color": (
-      property: background-color,
-      class: bg,
-      local-vars: (
-        "bg-opacity": 1
-      ),
-      values: map-merge(
-        $utilities-bg-colors,
-        (
-          "transparent": transparent,
-          "body-secondary": rgba(var(--#{$prefix}secondary-bg-rgb), var(--#{$prefix}bg-opacity)),
-          "body-tertiary": rgba(var(--#{$prefix}tertiary-bg-rgb), var(--#{$prefix}bg-opacity)),
-        )
-      )
-    ),
-    "bg-opacity": (
-      css-var: true,
-      class: bg-opacity,
-      values: (
-        10: .1,
-        25: .25,
-        50: .5,
-        75: .75,
-        100: 1
-      )
-    ),
-    "subtle-background-color": (
-      property: background-color,
-      class: bg,
-      values: $utilities-bg-subtle
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/borders/index.html b/site/dist/docs/5.3/utilities/borders/index.html deleted file mode 100644 index 91cc4e24b9..0000000000 --- a/site/dist/docs/5.3/utilities/borders/index.html +++ /dev/null @@ -1,471 +0,0 @@ - Borders · Bootstrap v5.3

Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons, or any other element.

Border

-

Use border utilities to add or remove an element's borders. Choose from all borders or one at a time.

-

Additive

-

Add borders to custom elements:

-
- - - -
html
<span class="border"></span>
-<span class="border-top"></span>
-<span class="border-end"></span>
-<span class="border-bottom"></span>
-<span class="border-start"></span>
-

Subtractive

-

Or remove borders:

-
- - - -
html
<span class="border border-0"></span>
-<span class="border border-top-0"></span>
-<span class="border border-end-0"></span>
-<span class="border border-bottom-0"></span>
-<span class="border border-start-0"></span>
-

Color

-

Border utilities like .border-* that generated from our original $theme-colors Sass map don't yet respond to color modes, however, any .border-*-subtle utility will. This will be resolved in v6.

-

Change the border color using utilities built on our theme colors.

-
- - - - - - - - - - - - - - - - -
html
<span class="border border-primary"></span>
-<span class="border border-primary-subtle"></span>
-<span class="border border-secondary"></span>
-<span class="border border-secondary-subtle"></span>
-<span class="border border-success"></span>
-<span class="border border-success-subtle"></span>
-<span class="border border-danger"></span>
-<span class="border border-danger-subtle"></span>
-<span class="border border-warning"></span>
-<span class="border border-warning-subtle"></span>
-<span class="border border-info"></span>
-<span class="border border-info-subtle"></span>
-<span class="border border-light"></span>
-<span class="border border-light-subtle"></span>
-<span class="border border-dark"></span>
-<span class="border border-dark-subtle"></span>
-<span class="border border-black"></span>
-<span class="border border-white"></span>
-

Or modify the default border-color of a component:

-
- - -
- -
-Dangerous heading -
- -
-Changing border color and width -
html
<div class="mb-4">
-<label for="exampleFormControlInput1" class="form-label">Email address</label>
-<input type="email" class="form-control border-success" id="exampleFormControlInput1" placeholder="name@example.com">
-</div>
-
-<div class="h4 pb-2 mb-4 text-danger border-bottom border-danger">
-Dangerous heading
-</div>
-
-<div class="p-3 bg-info bg-opacity-10 border border-info border-start-0 rounded-end">
-Changing border color and width
-</div>
-

Opacity

-Added in v5.2.0 -

Bootstrap border-{color} utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.

-

How it works

-

Consider our default .border-success utility.

-
.border-success {
-  --bs-border-opacity: 1;
-  border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;
-}
-
-

We use an RGB version of our --bs-success (with the value of 25, 135, 84) CSS variable and attached a second CSS variable, --bs-border-opacity, for the alpha transparency (with a default value 1 thanks to a local CSS variable). That means anytime you use .border-success now, your computed color value is rgba(25, 135, 84, 1). The local CSS variable inside each .border-* class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.

-

Example

-

To change that opacity, override --bs-border-opacity via custom styles or inline styles.

-
This is default success border
-
This is 50% opacity success border
html
<div class="border border-success p-2 mb-2">This is default success border</div>
-<div class="border border-success p-2" style="--bs-border-opacity: .5;">This is 50% opacity success border</div>
-

Or, choose from any of the .border-opacity utilities:

-
This is default success border
-
This is 75% opacity success border
-
This is 50% opacity success border
-
This is 25% opacity success border
-
This is 10% opacity success border
html
<div class="border border-success p-2 mb-2">This is default success border</div>
-<div class="border border-success p-2 mb-2 border-opacity-75">This is 75% opacity success border</div>
-<div class="border border-success p-2 mb-2 border-opacity-50">This is 50% opacity success border</div>
-<div class="border border-success p-2 mb-2 border-opacity-25">This is 25% opacity success border</div>
-<div class="border border-success p-2 border-opacity-10">This is 10% opacity success border</div>
-

Width

-
- - - -
html
<span class="border border-1"></span>
-<span class="border border-2"></span>
-<span class="border border-3"></span>
-<span class="border border-4"></span>
-<span class="border border-5"></span>
-

Radius

-

Add classes to an element to easily round its corners.

-
Example rounded image75x75 -Example top rounded image75x75 -Example right rounded image75x75 -Example bottom rounded image75x75 -Example left rounded image75x75 -Completely round image75x75 -Rounded pill image150x75
html
<img src="..." class="rounded" alt="...">
-<img src="..." class="rounded-top" alt="...">
-<img src="..." class="rounded-end" alt="...">
-<img src="..." class="rounded-bottom" alt="...">
-<img src="..." class="rounded-start" alt="...">
-<img src="..." class="rounded-circle" alt="...">
-<img src="..." class="rounded-pill" alt="...">
-

Sizes

-

Use the scaling classes for larger or smaller rounded corners. Sizes range from 0 to 5, and can be configured by modifying the utilities API.

-
Example non-rounded image75x75 -Example small rounded image75x75 -Example default rounded image75x75 -Example large rounded image75x75 -Example larger rounded image75x75 -Example extra large rounded image75x75
html
<img src="..." class="rounded-0" alt="...">
-<img src="..." class="rounded-1" alt="...">
-<img src="..." class="rounded-2" alt="...">
-<img src="..." class="rounded-3" alt="...">
-<img src="..." class="rounded-4" alt="...">
-<img src="..." class="rounded-5" alt="...">
-
Example small rounded image75x75 -Example default left rounded image75x75 -Example right completely round image75x75 -Example left rounded pill image75x75 -Example extra large bottom rounded image75x75
html
<img src="..." class="rounded-bottom-1" alt="...">
-<img src="..." class="rounded-start-2" alt="...">
-<img src="..." class="rounded-end-circle" alt="...">
-<img src="..." class="rounded-start-pill" alt="...">
-<img src="..." class="rounded-5 rounded-top-0" alt="...">
-

CSS

-

Variables

-Added in v5.2.0 -
  --#{$prefix}border-width: #{$border-width};
-  --#{$prefix}border-style: #{$border-style};
-  --#{$prefix}border-color: #{$border-color};
-  --#{$prefix}border-color-translucent: #{$border-color-translucent};
-
-  --#{$prefix}border-radius: #{$border-radius};
-  --#{$prefix}border-radius-sm: #{$border-radius-sm};
-  --#{$prefix}border-radius-lg: #{$border-radius-lg};
-  --#{$prefix}border-radius-xl: #{$border-radius-xl};
-  --#{$prefix}border-radius-xxl: #{$border-radius-xxl};
-  --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency
-  --#{$prefix}border-radius-pill: #{$border-radius-pill};
-  
-

Sass variables

-
$border-width:                1px;
-$border-widths: (
-  1: 1px,
-  2: 2px,
-  3: 3px,
-  4: 4px,
-  5: 5px
-);
-$border-style:                solid;
-$border-color:                $gray-300;
-$border-color-translucent:    rgba($black, .175);
-
-
$border-radius:               .375rem;
-$border-radius-sm:            .25rem;
-$border-radius-lg:            .5rem;
-$border-radius-xl:            1rem;
-$border-radius-xxl:           2rem;
-$border-radius-pill:          50rem;
-
-

Variables for setting border-color in .border-*-subtle utilities in light and dark mode:

-
$primary-border-subtle:   tint-color($primary, 60%);
-$secondary-border-subtle: tint-color($secondary, 60%);
-$success-border-subtle:   tint-color($success, 60%);
-$info-border-subtle:      tint-color($info, 60%);
-$warning-border-subtle:   tint-color($warning, 60%);
-$danger-border-subtle:    tint-color($danger, 60%);
-$light-border-subtle:     $gray-200;
-$dark-border-subtle:      $gray-500;
-
-
$primary-border-subtle-dark:        shade-color($primary, 40%);
-$secondary-border-subtle-dark:      shade-color($secondary, 40%);
-$success-border-subtle-dark:        shade-color($success, 40%);
-$info-border-subtle-dark:           shade-color($info, 40%);
-$warning-border-subtle-dark:        shade-color($warning, 40%);
-$danger-border-subtle-dark:         shade-color($danger, 40%);
-$light-border-subtle-dark:          $gray-700;
-$dark-border-subtle-dark:           $gray-800;
-
-

Sass maps

-

Color mode adaptive border colors are also available as a Sass map:

-
$theme-colors-border-subtle: (
-  "primary": $primary-border-subtle,
-  "secondary": $secondary-border-subtle,
-  "success": $success-border-subtle,
-  "info": $info-border-subtle,
-  "warning": $warning-border-subtle,
-  "danger": $danger-border-subtle,
-  "light": $light-border-subtle,
-  "dark": $dark-border-subtle,
-);
-
-
  $theme-colors-border-subtle-dark: (
-    "primary": $primary-border-subtle-dark,
-    "secondary": $secondary-border-subtle-dark,
-    "success": $success-border-subtle-dark,
-    "info": $info-border-subtle-dark,
-    "warning": $warning-border-subtle-dark,
-    "danger": $danger-border-subtle-dark,
-    "light": $light-border-subtle-dark,
-    "dark": $dark-border-subtle-dark,
-  );
-  
-

Sass mixins

-
@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
-  @if $enable-rounded {
-    border-radius: valid-radius($radius);
-  }
-  @else if $fallback-border-radius != false {
-    border-radius: $fallback-border-radius;
-  }
-}
-
-@mixin border-top-radius($radius: $border-radius) {
-  @if $enable-rounded {
-    border-top-left-radius: valid-radius($radius);
-    border-top-right-radius: valid-radius($radius);
-  }
-}
-
-@mixin border-end-radius($radius: $border-radius) {
-  @if $enable-rounded {
-    border-top-right-radius: valid-radius($radius);
-    border-bottom-right-radius: valid-radius($radius);
-  }
-}
-
-@mixin border-bottom-radius($radius: $border-radius) {
-  @if $enable-rounded {
-    border-bottom-right-radius: valid-radius($radius);
-    border-bottom-left-radius: valid-radius($radius);
-  }
-}
-
-@mixin border-start-radius($radius: $border-radius) {
-  @if $enable-rounded {
-    border-top-left-radius: valid-radius($radius);
-    border-bottom-left-radius: valid-radius($radius);
-  }
-}
-
-@mixin border-top-start-radius($radius: $border-radius) {
-  @if $enable-rounded {
-    border-top-left-radius: valid-radius($radius);
-  }
-}
-
-@mixin border-top-end-radius($radius: $border-radius) {
-  @if $enable-rounded {
-    border-top-right-radius: valid-radius($radius);
-  }
-}
-
-@mixin border-bottom-end-radius($radius: $border-radius) {
-  @if $enable-rounded {
-    border-bottom-right-radius: valid-radius($radius);
-  }
-}
-
-@mixin border-bottom-start-radius($radius: $border-radius) {
-  @if $enable-rounded {
-    border-bottom-left-radius: valid-radius($radius);
-  }
-}
-
-

Sass utilities API

-

Border utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "border": (
-      property: border,
-      values: (
-        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
-        0: 0,
-      )
-    ),
-    "border-top": (
-      property: border-top,
-      values: (
-        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
-        0: 0,
-      )
-    ),
-    "border-end": (
-      property: border-right,
-      class: border-end,
-      values: (
-        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
-        0: 0,
-      )
-    ),
-    "border-bottom": (
-      property: border-bottom,
-      values: (
-        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
-        0: 0,
-      )
-    ),
-    "border-start": (
-      property: border-left,
-      class: border-start,
-      values: (
-        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
-        0: 0,
-      )
-    ),
-    "border-color": (
-      property: border-color,
-      class: border,
-      local-vars: (
-        "border-opacity": 1
-      ),
-      values: $utilities-border-colors
-    ),
-    "subtle-border-color": (
-      property: border-color,
-      class: border,
-      values: $utilities-border-subtle
-    ),
-    "border-width": (
-      property: border-width,
-      class: border,
-      values: $border-widths
-    ),
-    "border-opacity": (
-      css-var: true,
-      class: border-opacity,
-      values: (
-        10: .1,
-        25: .25,
-        50: .5,
-        75: .75,
-        100: 1
-      )
-    ),
-    
-
    "rounded": (
-      property: border-radius,
-      class: rounded,
-      values: (
-        null: var(--#{$prefix}border-radius),
-        0: 0,
-        1: var(--#{$prefix}border-radius-sm),
-        2: var(--#{$prefix}border-radius),
-        3: var(--#{$prefix}border-radius-lg),
-        4: var(--#{$prefix}border-radius-xl),
-        5: var(--#{$prefix}border-radius-xxl),
-        circle: 50%,
-        pill: var(--#{$prefix}border-radius-pill)
-      )
-    ),
-    "rounded-top": (
-      property: border-top-left-radius border-top-right-radius,
-      class: rounded-top,
-      values: (
-        null: var(--#{$prefix}border-radius),
-        0: 0,
-        1: var(--#{$prefix}border-radius-sm),
-        2: var(--#{$prefix}border-radius),
-        3: var(--#{$prefix}border-radius-lg),
-        4: var(--#{$prefix}border-radius-xl),
-        5: var(--#{$prefix}border-radius-xxl),
-        circle: 50%,
-        pill: var(--#{$prefix}border-radius-pill)
-      )
-    ),
-    "rounded-end": (
-      property: border-top-right-radius border-bottom-right-radius,
-      class: rounded-end,
-      values: (
-        null: var(--#{$prefix}border-radius),
-        0: 0,
-        1: var(--#{$prefix}border-radius-sm),
-        2: var(--#{$prefix}border-radius),
-        3: var(--#{$prefix}border-radius-lg),
-        4: var(--#{$prefix}border-radius-xl),
-        5: var(--#{$prefix}border-radius-xxl),
-        circle: 50%,
-        pill: var(--#{$prefix}border-radius-pill)
-      )
-    ),
-    "rounded-bottom": (
-      property: border-bottom-right-radius border-bottom-left-radius,
-      class: rounded-bottom,
-      values: (
-        null: var(--#{$prefix}border-radius),
-        0: 0,
-        1: var(--#{$prefix}border-radius-sm),
-        2: var(--#{$prefix}border-radius),
-        3: var(--#{$prefix}border-radius-lg),
-        4: var(--#{$prefix}border-radius-xl),
-        5: var(--#{$prefix}border-radius-xxl),
-        circle: 50%,
-        pill: var(--#{$prefix}border-radius-pill)
-      )
-    ),
-    "rounded-start": (
-      property: border-bottom-left-radius border-top-left-radius,
-      class: rounded-start,
-      values: (
-        null: var(--#{$prefix}border-radius),
-        0: 0,
-        1: var(--#{$prefix}border-radius-sm),
-        2: var(--#{$prefix}border-radius),
-        3: var(--#{$prefix}border-radius-lg),
-        4: var(--#{$prefix}border-radius-xl),
-        5: var(--#{$prefix}border-radius-xxl),
-        circle: 50%,
-        pill: var(--#{$prefix}border-radius-pill)
-      )
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/colors/index.html b/site/dist/docs/5.3/utilities/colors/index.html deleted file mode 100644 index 937f2af07f..0000000000 --- a/site/dist/docs/5.3/utilities/colors/index.html +++ /dev/null @@ -1,287 +0,0 @@ - Colors · Bootstrap v5.3

Convey meaning through `color` with a handful of color utility classes. Includes support for styling links with hover states, too.

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

Colors

-

Colorize text with color utilities. If you want to colorize links, you can use the .link-* helper classes which have :hover and :focus states.

-

Color utilities like .text-* that generated from our original $theme-colors Sass map don't yet respond to color modes, however, any .text-*-emphasis utility will. This will be resolved in v6.

-

.text-primary

-

.text-primary-emphasis

-

.text-secondary

-

.text-secondary-emphasis

-

.text-success

-

.text-success-emphasis

-

.text-danger

-

.text-danger-emphasis

-

.text-warning

-

.text-warning-emphasis

-

.text-info

-

.text-info-emphasis

-

.text-light

-

.text-light-emphasis

-

.text-dark

-

.text-dark-emphasis

- -

.text-body

-

.text-body-emphasis

-

.text-body-secondary

-

.text-body-tertiary

- -

.text-black

-

.text-white

-

.text-black-50

-

.text-white-50

html
<p class="text-primary">.text-primary</p>
-<p class="text-primary-emphasis">.text-primary-emphasis</p>
-<p class="text-secondary">.text-secondary</p>
-<p class="text-secondary-emphasis">.text-secondary-emphasis</p>
-<p class="text-success">.text-success</p>
-<p class="text-success-emphasis">.text-success-emphasis</p>
-<p class="text-danger">.text-danger</p>
-<p class="text-danger-emphasis">.text-danger-emphasis</p>
-<p class="text-warning bg-dark">.text-warning</p>
-<p class="text-warning-emphasis">.text-warning-emphasis</p>
-<p class="text-info bg-dark">.text-info</p>
-<p class="text-info-emphasis">.text-info-emphasis</p>
-<p class="text-light bg-dark">.text-light</p>
-<p class="text-light-emphasis">.text-light-emphasis</p>
-<p class="text-dark bg-white">.text-dark</p>
-<p class="text-dark-emphasis">.text-dark-emphasis</p>
-
-<p class="text-body">.text-body</p>
-<p class="text-body-emphasis">.text-body-emphasis</p>
-<p class="text-body-secondary">.text-body-secondary</p>
-<p class="text-body-tertiary">.text-body-tertiary</p>
-
-<p class="text-black bg-white">.text-black</p>
-<p class="text-white bg-dark">.text-white</p>
-<p class="text-black-50 bg-white">.text-black-50</p>
-<p class="text-white-50 bg-dark">.text-white-50</p>
-

Deprecation: With the addition of .text-opacity-* utilities and CSS variables for text utilities, .text-black-50 and .text-white-50 are deprecated as of v5.1.0. They'll be removed in v6.0.0.

-

Deprecation: With the addition of the expanded theme colors and variables, the .text-muted utility has been deprecated as of v5.3.0. Its default value has also been reassigned to the new --bs-secondary-color CSS variable to better support color modes. It will be removed in v6.0.0.

-

Opacity

-Added in v5.1.0 -

As of v5.1.0, text color utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.

-

How it works

-

Consider our default .text-primary utility.

-
.text-primary {
-  --bs-text-opacity: 1;
-  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
-}
-
-

We use an RGB version of our --bs-primary (with the value of 13, 110, 253) CSS variable and attached a second CSS variable, --bs-text-opacity, for the alpha transparency (with a default value 1 thanks to a local CSS variable). That means anytime you use .text-primary now, your computed color value is rgba(13, 110, 253, 1). The local CSS variable inside each .text-* class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.

-

Example

-

To change that opacity, override --bs-text-opacity via custom styles or inline styles.

-
This is default primary text
-
This is 50% opacity primary text
html
<div class="text-primary">This is default primary text</div>
-<div class="text-primary" style="--bs-text-opacity: .5;">This is 50% opacity primary text</div>
-

Or, choose from any of the .text-opacity utilities:

-
This is default primary text
-
This is 75% opacity primary text
-
This is 50% opacity primary text
-
This is 25% opacity primary text
html
<div class="text-primary">This is default primary text</div>
-<div class="text-primary text-opacity-75">This is 75% opacity primary text</div>
-<div class="text-primary text-opacity-50">This is 50% opacity primary text</div>
-<div class="text-primary text-opacity-25">This is 25% opacity primary text</div>
-

Specificity

-

Sometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a <div> or more semantic element with the desired class.

-

CSS

-

In addition to the following Sass functionality, consider reading about our included CSS custom properties (aka CSS variables) for colors and more.

-

Sass variables

-

Most color utilities are generated by our theme colors, reassigned from our generic color palette variables.

-
$blue:    #0d6efd;
-$indigo:  #6610f2;
-$purple:  #6f42c1;
-$pink:    #d63384;
-$red:     #dc3545;
-$orange:  #fd7e14;
-$yellow:  #ffc107;
-$green:   #198754;
-$teal:    #20c997;
-$cyan:    #0dcaf0;
-
-
$primary:       $blue;
-$secondary:     $gray-600;
-$success:       $green;
-$info:          $cyan;
-$warning:       $yellow;
-$danger:        $red;
-$light:         $gray-100;
-$dark:          $gray-900;
-
-

Grayscale colors are also available, but only a subset are used to generate any utilities.

-
$white:    #fff;
-$gray-100: #f8f9fa;
-$gray-200: #e9ecef;
-$gray-300: #dee2e6;
-$gray-400: #ced4da;
-$gray-500: #adb5bd;
-$gray-600: #6c757d;
-$gray-700: #495057;
-$gray-800: #343a40;
-$gray-900: #212529;
-$black:    #000;
-
-
$theme-colors-text: (
-  "primary": $primary-text-emphasis,
-  "secondary": $secondary-text-emphasis,
-  "success": $success-text-emphasis,
-  "info": $info-text-emphasis,
-  "warning": $warning-text-emphasis,
-  "danger": $danger-text-emphasis,
-  "light": $light-text-emphasis,
-  "dark": $dark-text-emphasis,
-);
-
-

Variables for setting colors in .text-*-emphasis utilities in light and dark mode:

-
$primary-text-emphasis:   shade-color($primary, 60%);
-$secondary-text-emphasis: shade-color($secondary, 60%);
-$success-text-emphasis:   shade-color($success, 60%);
-$info-text-emphasis:      shade-color($info, 60%);
-$warning-text-emphasis:   shade-color($warning, 60%);
-$danger-text-emphasis:    shade-color($danger, 60%);
-$light-text-emphasis:     $gray-700;
-$dark-text-emphasis:      $gray-700;
-
-
$primary-text-emphasis-dark:        tint-color($primary, 40%);
-$secondary-text-emphasis-dark:      tint-color($secondary, 40%);
-$success-text-emphasis-dark:        tint-color($success, 40%);
-$info-text-emphasis-dark:           tint-color($info, 40%);
-$warning-text-emphasis-dark:        tint-color($warning, 40%);
-$danger-text-emphasis-dark:         tint-color($danger, 40%);
-$light-text-emphasis-dark:          $gray-100;
-$dark-text-emphasis-dark:           $gray-300;
-
-

Sass maps

-

Theme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.

-
$theme-colors: (
-  "primary":    $primary,
-  "secondary":  $secondary,
-  "success":    $success,
-  "info":       $info,
-  "warning":    $warning,
-  "danger":     $danger,
-  "light":      $light,
-  "dark":       $dark
-);
-
-

Grayscale colors are also available as a Sass map. This map is not used to generate any utilities.

-
$grays: (
-  "100": $gray-100,
-  "200": $gray-200,
-  "300": $gray-300,
-  "400": $gray-400,
-  "500": $gray-500,
-  "600": $gray-600,
-  "700": $gray-700,
-  "800": $gray-800,
-  "900": $gray-900
-);
-
-

RGB colors are generated from a separate Sass map:

-
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value");
-
-

Color opacities build on that with their own map that's consumed by the utilities API:

-
$utilities-text: map-merge(
-  $utilities-colors,
-  (
-    "black": to-rgb($black),
-    "white": to-rgb($white),
-    "body": to-rgb($body-color)
-  )
-);
-$utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text");
-
-$utilities-text-emphasis-colors: (
-  "primary-emphasis": var(--#{$prefix}primary-text-emphasis),
-  "secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
-  "success-emphasis": var(--#{$prefix}success-text-emphasis),
-  "info-emphasis": var(--#{$prefix}info-text-emphasis),
-  "warning-emphasis": var(--#{$prefix}warning-text-emphasis),
-  "danger-emphasis": var(--#{$prefix}danger-text-emphasis),
-  "light-emphasis": var(--#{$prefix}light-text-emphasis),
-  "dark-emphasis": var(--#{$prefix}dark-text-emphasis)
-);
-
-

Color mode adaptive text colors are also available as a Sass map:

-
$theme-colors-text: (
-  "primary": $primary-text-emphasis,
-  "secondary": $secondary-text-emphasis,
-  "success": $success-text-emphasis,
-  "info": $info-text-emphasis,
-  "warning": $warning-text-emphasis,
-  "danger": $danger-text-emphasis,
-  "light": $light-text-emphasis,
-  "dark": $dark-text-emphasis,
-);
-
-
  $theme-colors-text-dark: (
-    "primary": $primary-text-emphasis-dark,
-    "secondary": $secondary-text-emphasis-dark,
-    "success": $success-text-emphasis-dark,
-    "info": $info-text-emphasis-dark,
-    "warning": $warning-text-emphasis-dark,
-    "danger": $danger-text-emphasis-dark,
-    "light": $light-text-emphasis-dark,
-    "dark": $dark-text-emphasis-dark,
-  );
-  
-

Sass utilities API

-

Color utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "color": (
-      property: color,
-      class: text,
-      local-vars: (
-        "text-opacity": 1
-      ),
-      values: map-merge(
-        $utilities-text-colors,
-        (
-          "muted": var(--#{$prefix}secondary-color), // deprecated
-          "black-50": rgba($black, .5), // deprecated
-          "white-50": rgba($white, .5), // deprecated
-          "body-secondary": var(--#{$prefix}secondary-color),
-          "body-tertiary": var(--#{$prefix}tertiary-color),
-          "body-emphasis": var(--#{$prefix}emphasis-color),
-          "reset": inherit,
-        )
-      )
-    ),
-    "text-opacity": (
-      css-var: true,
-      class: text-opacity,
-      values: (
-        25: .25,
-        50: .5,
-        75: .75,
-        100: 1
-      )
-    ),
-    "text-color": (
-      property: color,
-      class: text,
-      values: $utilities-text-emphasis-colors
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/display/index.html b/site/dist/docs/5.3/utilities/display/index.html deleted file mode 100644 index c811384033..0000000000 --- a/site/dist/docs/5.3/utilities/display/index.html +++ /dev/null @@ -1,163 +0,0 @@ - Display property · Bootstrap v5.3

Display property

Quickly and responsively toggle the display value of components and more with our display utilities. Includes support for some of the more common values, as well as some extras for controlling display when printing.

How it works

-

Change the value of the display property with our responsive display utility classes. We purposely support only a subset of all possible values for display. Classes can be combined for various effects as you need.

-

Notation

-

Display utility classes that apply to all breakpoints, from xs to xxl, have no breakpoint abbreviation in them. This is because those classes are applied from min-width: 0; and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.

-

As such, the classes are named using the format:

-
    -
  • .d-{value} for xs
  • -
  • .d-{breakpoint}-{value} for sm, md, lg, xl, and xxl.
  • -
-

Where value is one of:

-
    -
  • none
  • -
  • inline
  • -
  • inline-block
  • -
  • block
  • -
  • grid
  • -
  • inline-grid
  • -
  • table
  • -
  • table-cell
  • -
  • table-row
  • -
  • flex
  • -
  • inline-flex
  • -
-

The display values can be altered by changing the display values defined in $utilities and recompiling the SCSS.

-

The media queries affect screen widths with the given breakpoint or larger. For example, .d-lg-none sets display: none; on lg, xl, and xxl screens.

-

Examples

-
d-inline
-
d-inline
html
<div class="d-inline p-2 text-bg-primary">d-inline</div>
-<div class="d-inline p-2 text-bg-dark">d-inline</div>
-
d-block -d-block
html
<span class="d-block p-2 text-bg-primary">d-block</span>
-<span class="d-block p-2 text-bg-dark">d-block</span>
-

Hiding elements

-

For faster mobile-friendly development, use responsive display classes for showing and hiding elements by device. Avoid creating entirely different versions of the same site, instead hide elements responsively for each screen size.

-

To hide elements simply use the .d-none class or one of the .d-{sm,md,lg,xl,xxl}-none classes for any responsive screen variation.

-

To show an element only on a given interval of screen sizes you can combine one .d-*-none class with a .d-*-* class, for example .d-none .d-md-block .d-xl-none will hide the element for all screen sizes except on medium and large devices.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Screen sizeClass
Hidden on all.d-none
Hidden only on xs.d-none .d-sm-block
Hidden only on sm.d-sm-none .d-md-block
Hidden only on md.d-md-none .d-lg-block
Hidden only on lg.d-lg-none .d-xl-block
Hidden only on xl.d-xl-none .d-xxl-block
Hidden only on xxl.d-xxl-none
Visible on all.d-block
Visible only on xs.d-block .d-sm-none
Visible only on sm.d-none .d-sm-block .d-md-none
Visible only on md.d-none .d-md-block .d-lg-none
Visible only on lg.d-none .d-lg-block .d-xl-none
Visible only on xl.d-none .d-xl-block .d-xxl-none
Visible only on xxl.d-none .d-xxl-block
-
hide on lg and wider screens
-
hide on screens smaller than lg
html
<div class="d-lg-none">hide on lg and wider screens</div>
-<div class="d-none d-lg-block">hide on screens smaller than lg</div>
-

Display in print

-

Change the display value of elements when printing with our print display utility classes. Includes support for the same display values as our responsive .d-* utilities.

-
    -
  • .d-print-none
  • -
  • .d-print-inline
  • -
  • .d-print-inline-block
  • -
  • .d-print-block
  • -
  • .d-print-grid
  • -
  • .d-print-inline-grid
  • -
  • .d-print-table
  • -
  • .d-print-table-row
  • -
  • .d-print-table-cell
  • -
  • .d-print-flex
  • -
  • .d-print-inline-flex
  • -
-

The print and display classes can be combined.

-
Screen Only (Hide on print only)
-
Print Only (Hide on screen only)
-
Hide up to large on screen, but always show on print
html
<div class="d-print-none">Screen Only (Hide on print only)</div>
-<div class="d-none d-print-block">Print Only (Hide on screen only)</div>
-<div class="d-none d-lg-block d-print-block">Hide up to large on screen, but always show on print</div>
-

CSS

-

Sass utilities API

-

Display utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "display": (
-      responsive: true,
-      print: true,
-      property: display,
-      class: d,
-      values: inline inline-block block grid inline-grid table table-row table-cell flex inline-flex none
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/flex/index.html b/site/dist/docs/5.3/utilities/flex/index.html deleted file mode 100644 index 7849587602..0000000000 --- a/site/dist/docs/5.3/utilities/flex/index.html +++ /dev/null @@ -1,394 +0,0 @@ - Flex · Bootstrap v5.3

Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary.

Enable flex behaviors

-

Apply display utilities to create a flexbox container and transform direct children elements into flex items. Flex containers and items are able to be modified further with additional flex properties.

-
I'm a flexbox container!
html
<div class="d-flex p-2">I'm a flexbox container!</div>
-
I'm an inline flexbox container!
html
<div class="d-inline-flex p-2">I'm an inline flexbox container!</div>
-

Responsive variations also exist for .d-flex and .d-inline-flex.

-
  • .d-flex
  • .d-inline-flex
  • .d-sm-flex
  • .d-sm-inline-flex
  • .d-md-flex
  • .d-md-inline-flex
  • .d-lg-flex
  • .d-lg-inline-flex
  • .d-xl-flex
  • .d-xl-inline-flex
  • .d-xxl-flex
  • .d-xxl-inline-flex
-

Direction

-

Set the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is row. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts).

-

Use .flex-row to set a horizontal direction (the browser default), or .flex-row-reverse to start the horizontal direction from the opposite side.

-
-
Flex item 1
-
Flex item 2
-
Flex item 3
-
-
-
Flex item 1
-
Flex item 2
-
Flex item 3
-
html
<div class="d-flex flex-row mb-3">
-<div class="p-2">Flex item 1</div>
-<div class="p-2">Flex item 2</div>
-<div class="p-2">Flex item 3</div>
-</div>
-<div class="d-flex flex-row-reverse">
-<div class="p-2">Flex item 1</div>
-<div class="p-2">Flex item 2</div>
-<div class="p-2">Flex item 3</div>
-</div>
-

Use .flex-column to set a vertical direction, or .flex-column-reverse to start the vertical direction from the opposite side.

-
-
Flex item 1
-
Flex item 2
-
Flex item 3
-
-
-
Flex item 1
-
Flex item 2
-
Flex item 3
-
html
<div class="d-flex flex-column mb-3">
-<div class="p-2">Flex item 1</div>
-<div class="p-2">Flex item 2</div>
-<div class="p-2">Flex item 3</div>
-</div>
-<div class="d-flex flex-column-reverse">
-<div class="p-2">Flex item 1</div>
-<div class="p-2">Flex item 2</div>
-<div class="p-2">Flex item 3</div>
-</div>
-

Responsive variations also exist for flex-direction.

-
  • .flex-row
  • .flex-row-reverse
  • .flex-column-reverse
  • .flex-sm-row
  • .flex-sm-row-reverse
  • .flex-sm-column-reverse
  • .flex-md-row
  • .flex-md-row-reverse
  • .flex-md-column-reverse
  • .flex-lg-row
  • .flex-lg-row-reverse
  • .flex-lg-column-reverse
  • .flex-xl-row
  • .flex-xl-row-reverse
  • .flex-xl-column-reverse
  • .flex-xxl-row
  • .flex-xxl-row-reverse
  • .flex-xxl-column-reverse
-

Justify content

-

Use justify-content utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if flex-direction: column). Choose from start (browser default), end, center, between, around, or evenly.

-
Justify
Content
Start
Justify
Content
End
Justify
Content
Center
Justify
Content
Between
Justify
Content
Around
Justify
Content
Evenly
-
<div class="d-flex justify-content-start">...</div>
-<div class="d-flex justify-content-end">...</div>
-<div class="d-flex justify-content-center">...</div>
-<div class="d-flex justify-content-between">...</div>
-<div class="d-flex justify-content-around">...</div>
-<div class="d-flex justify-content-evenly">...</div>
-
-

Responsive variations also exist for justify-content.

-
  • .justify-content-start
  • .justify-content-end
  • .justify-content-center
  • .justify-content-between
  • .justify-content-around
  • .justify-content-evenly
  • .justify-content-sm-start
  • .justify-content-sm-end
  • .justify-content-sm-center
  • .justify-content-sm-between
  • .justify-content-sm-around
  • .justify-content-sm-evenly
  • .justify-content-md-start
  • .justify-content-md-end
  • .justify-content-md-center
  • .justify-content-md-between
  • .justify-content-md-around
  • .justify-content-md-evenly
  • .justify-content-lg-start
  • .justify-content-lg-end
  • .justify-content-lg-center
  • .justify-content-lg-between
  • .justify-content-lg-around
  • .justify-content-lg-evenly
  • .justify-content-xl-start
  • .justify-content-xl-end
  • .justify-content-xl-center
  • .justify-content-xl-between
  • .justify-content-xl-around
  • .justify-content-xl-evenly
  • .justify-content-xxl-start
  • .justify-content-xxl-end
  • .justify-content-xxl-center
  • .justify-content-xxl-between
  • .justify-content-xxl-around
  • .justify-content-xxl-evenly
-

Align items

-

Use align-items utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if flex-direction: column). Choose from start, end, center, baseline, or stretch (browser default).

-
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
-
<div class="d-flex align-items-start">...</div>
-<div class="d-flex align-items-end">...</div>
-<div class="d-flex align-items-center">...</div>
-<div class="d-flex align-items-baseline">...</div>
-<div class="d-flex align-items-stretch">...</div>
-
-

Responsive variations also exist for align-items.

-
  • .align-items-start
  • .align-items-end
  • .align-items-center
  • .align-items-baseline
  • .align-items-stretch
  • .align-items-sm-start
  • .align-items-sm-end
  • .align-items-sm-center
  • .align-items-sm-baseline
  • .align-items-sm-stretch
  • .align-items-md-start
  • .align-items-md-end
  • .align-items-md-center
  • .align-items-md-baseline
  • .align-items-md-stretch
  • .align-items-lg-start
  • .align-items-lg-end
  • .align-items-lg-center
  • .align-items-lg-baseline
  • .align-items-lg-stretch
  • .align-items-xl-start
  • .align-items-xl-end
  • .align-items-xl-center
  • .align-items-xl-baseline
  • .align-items-xl-stretch
  • .align-items-xxl-start
  • .align-items-xxl-end
  • .align-items-xxl-center
  • .align-items-xxl-baseline
  • .align-items-xxl-stretch
-

Align self

-

Use align-self utilities on flexbox items to individually change their alignment on the cross axis (the y-axis to start, x-axis if flex-direction: column). Choose from the same options as align-items: start, end, center, baseline, or stretch (browser default).

-
Flex item
Aligned flex item
Flex item
Flex item
Aligned flex item
Flex item
Flex item
Aligned flex item
Flex item
Flex item
Aligned flex item
Flex item
Flex item
Aligned flex item
Flex item
-
<div class="align-self-start">Aligned flex item</div>
-<div class="align-self-end">Aligned flex item</div>
-<div class="align-self-center">Aligned flex item</div>
-<div class="align-self-baseline">Aligned flex item</div>
-<div class="align-self-stretch">Aligned flex item</div>
-
-

Responsive variations also exist for align-self.

-
  • .align-self-start
  • .align-self-end
  • .align-self-center
  • .align-self-baseline
  • .align-self-stretch
  • .align-self-sm-start
  • .align-self-sm-end
  • .align-self-sm-center
  • .align-self-sm-baseline
  • .align-self-sm-stretch
  • .align-self-md-start
  • .align-self-md-end
  • .align-self-md-center
  • .align-self-md-baseline
  • .align-self-md-stretch
  • .align-self-lg-start
  • .align-self-lg-end
  • .align-self-lg-center
  • .align-self-lg-baseline
  • .align-self-lg-stretch
  • .align-self-xl-start
  • .align-self-xl-end
  • .align-self-xl-center
  • .align-self-xl-baseline
  • .align-self-xl-stretch
  • .align-self-xxl-start
  • .align-self-xxl-end
  • .align-self-xxl-center
  • .align-self-xxl-baseline
  • .align-self-xxl-stretch
-

Fill

-

Use the .flex-fill class on a series of sibling elements to force them into widths equal to their content (or equal widths if their content does not surpass their border-boxes) while taking up all available horizontal space.

-
-
Flex item with a lot of content
-
Flex item
-
Flex item
-
html
<div class="d-flex">
-<div class="p-2 flex-fill">Flex item with a lot of content</div>
-<div class="p-2 flex-fill">Flex item</div>
-<div class="p-2 flex-fill">Flex item</div>
-</div>
-

Responsive variations also exist for flex-fill.

-
  • .flex-fill
  • .flex-sm-fill
  • .flex-md-fill
  • .flex-lg-fill
  • .flex-xl-fill
  • .flex-xxl-fill
-

Grow and shrink

-

Use .flex-grow-* utilities to toggle a flex item's ability to grow to fill available space. In the example below, the .flex-grow-1 elements uses all available space it can, while allowing the remaining two flex items their necessary space.

-
-
Flex item
-
Flex item
-
Third flex item
-
html
<div class="d-flex">
-<div class="p-2 flex-grow-1">Flex item</div>
-<div class="p-2">Flex item</div>
-<div class="p-2">Third flex item</div>
-</div>
-

Use .flex-shrink-* utilities to toggle a flex item's ability to shrink if necessary. In the example below, the second flex item with .flex-shrink-1 is forced to wrap its contents to a new line, "shrinking" to allow more space for the previous flex item with .w-100.

-
-
Flex item
-
Flex item
-
html
<div class="d-flex">
-<div class="p-2 w-100">Flex item</div>
-<div class="p-2 flex-shrink-1">Flex item</div>
-</div>
-

Responsive variations also exist for flex-grow and flex-shrink.

-
  • .flex-{grow|shrink}-0
  • .flex-{grow|shrink}-1
  • .flex-sm-{grow|shrink}-0
  • .flex-sm-{grow|shrink}-1
  • .flex-md-{grow|shrink}-0
  • .flex-md-{grow|shrink}-1
  • .flex-lg-{grow|shrink}-0
  • .flex-lg-{grow|shrink}-1
  • .flex-xl-{grow|shrink}-0
  • .flex-xl-{grow|shrink}-1
  • .flex-xxl-{grow|shrink}-0
  • .flex-xxl-{grow|shrink}-1
-

Auto margins

-

Flexbox can do some pretty awesome things when you mix flex alignments with auto margins. Shown below are three examples of controlling flex items via auto margins: default (no auto margin), pushing two items to the right (.me-auto), and pushing two items to the left (.ms-auto).

-
-
Flex item
-
Flex item
-
Flex item
-
- -
-
Flex item
-
Flex item
-
Flex item
-
- -
-
Flex item
-
Flex item
-
Flex item
-
html
<div class="d-flex mb-3">
-<div class="p-2">Flex item</div>
-<div class="p-2">Flex item</div>
-<div class="p-2">Flex item</div>
-</div>
-
-<div class="d-flex mb-3">
-<div class="me-auto p-2">Flex item</div>
-<div class="p-2">Flex item</div>
-<div class="p-2">Flex item</div>
-</div>
-
-<div class="d-flex mb-3">
-<div class="p-2">Flex item</div>
-<div class="p-2">Flex item</div>
-<div class="ms-auto p-2">Flex item</div>
-</div>
-

With align-items

-

Vertically move one flex item to the top or bottom of a container by mixing align-items, flex-direction: column, and margin-top: auto or margin-bottom: auto.

-
-
Flex item
-
Flex item
-
Flex item
-
- -
-
Flex item
-
Flex item
-
Flex item
-
html
<div class="d-flex align-items-start flex-column mb-3" style="height: 200px;">
-<div class="mb-auto p-2">Flex item</div>
-<div class="p-2">Flex item</div>
-<div class="p-2">Flex item</div>
-</div>
-
-<div class="d-flex align-items-end flex-column mb-3" style="height: 200px;">
-<div class="p-2">Flex item</div>
-<div class="p-2">Flex item</div>
-<div class="mt-auto p-2">Flex item</div>
-</div>
-

Wrap

-

Change how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with .flex-nowrap, wrapping with .flex-wrap, or reverse wrapping with .flex-wrap-reverse.

-
Flex item
Flex item
Flex item
Flex item
Flex item
-
<div class="d-flex flex-nowrap">
-  ...
-</div>
-
-
Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8
Flex item 9
Flex item 10
Flex item 11
Flex item 12
Flex item 13
Flex item 14
-
<div class="d-flex flex-wrap">
-  ...
-</div>
-
-
Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8
Flex item 9
Flex item 10
Flex item 11
Flex item 12
Flex item 13
Flex item 14
-
<div class="d-flex flex-wrap-reverse">
-  ...
-</div>
-
-

Responsive variations also exist for flex-wrap.

-
  • .flex-nowrap
  • .flex-wrap
  • .flex-wrap-reverse
  • .flex-sm-nowrap
  • .flex-sm-wrap
  • .flex-sm-wrap-reverse
  • .flex-md-nowrap
  • .flex-md-wrap
  • .flex-md-wrap-reverse
  • .flex-lg-nowrap
  • .flex-lg-wrap
  • .flex-lg-wrap-reverse
  • .flex-xl-nowrap
  • .flex-xl-wrap
  • .flex-xl-wrap-reverse
  • .flex-xxl-nowrap
  • .flex-xxl-wrap
  • .flex-xxl-wrap-reverse
-

Order

-

Change the visual order of specific flex items with a handful of order utilities. We only provide options for making an item first or last, as well as a reset to use the DOM order. As order takes any integer value from 0 to 5, add custom CSS for any additional values needed.

-
-
First flex item
-
Second flex item
-
Third flex item
-
html
<div class="d-flex flex-nowrap">
-<div class="order-3 p-2">First flex item</div>
-<div class="order-2 p-2">Second flex item</div>
-<div class="order-1 p-2">Third flex item</div>
-</div>
-

Responsive variations also exist for order.

-
  • .order-0
  • .order-1
  • .order-2
  • .order-3
  • .order-4
  • .order-5
  • .order-sm-0
  • .order-sm-1
  • .order-sm-2
  • .order-sm-3
  • .order-sm-4
  • .order-sm-5
  • .order-md-0
  • .order-md-1
  • .order-md-2
  • .order-md-3
  • .order-md-4
  • .order-md-5
  • .order-lg-0
  • .order-lg-1
  • .order-lg-2
  • .order-lg-3
  • .order-lg-4
  • .order-lg-5
  • .order-xl-0
  • .order-xl-1
  • .order-xl-2
  • .order-xl-3
  • .order-xl-4
  • .order-xl-5
  • .order-xxl-0
  • .order-xxl-1
  • .order-xxl-2
  • .order-xxl-3
  • .order-xxl-4
  • .order-xxl-5
-

Additionally there are also responsive .order-first and .order-last classes that change the order of an element by applying order: -1 and order: 6, respectively.

-
  • .order-first
  • .order-last
  • .order-sm-first
  • .order-sm-last
  • .order-md-first
  • .order-md-last
  • .order-lg-first
  • .order-lg-last
  • .order-xl-first
  • .order-xl-last
  • .order-xxl-first
  • .order-xxl-last
-

Align content

-

Use align-content utilities on flexbox containers to align flex items together on the cross axis. Choose from start (browser default), end, center, between, around, or stretch. To demonstrate these utilities, we've enforced flex-wrap: wrap and increased the number of flex items.

-

Heads up! This property has no effect on single rows of flex items.

-
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
-
<div class="d-flex align-content-start flex-wrap">
-  ...
-</div>
-
-
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
-
<div class="d-flex align-content-end flex-wrap">...</div>
-
-
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
-
<div class="d-flex align-content-center flex-wrap">...</div>
-
-
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
-
<div class="d-flex align-content-between flex-wrap">...</div>
-
-
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
-
<div class="d-flex align-content-around flex-wrap">...</div>
-
-
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
-
<div class="d-flex align-content-stretch flex-wrap">...</div>
-
-

Responsive variations also exist for align-content.

-
  • .align-content-start
  • .align-content-end
  • .align-content-center
  • .align-content-between
  • .align-content-around
  • .align-content-stretch
  • .align-content-sm-start
  • .align-content-sm-end
  • .align-content-sm-center
  • .align-content-sm-between
  • .align-content-sm-around
  • .align-content-sm-stretch
  • .align-content-md-start
  • .align-content-md-end
  • .align-content-md-center
  • .align-content-md-between
  • .align-content-md-around
  • .align-content-md-stretch
  • .align-content-lg-start
  • .align-content-lg-end
  • .align-content-lg-center
  • .align-content-lg-between
  • .align-content-lg-around
  • .align-content-lg-stretch
  • .align-content-xl-start
  • .align-content-xl-end
  • .align-content-xl-center
  • .align-content-xl-between
  • .align-content-xl-around
  • .align-content-xl-stretch
  • .align-content-xxl-start
  • .align-content-xxl-end
  • .align-content-xxl-center
  • .align-content-xxl-between
  • .align-content-xxl-around
  • .align-content-xxl-stretch
-

Media object

-

Looking to replicate the media object component from Bootstrap 4? Recreate it in no time with a few flex utilities that allow even more flexibility and customization than before.

-
-
- PlaceholderImage -
-
- This is some content from a media component. You can replace this with any content and adjust it as needed. -
-
html
<div class="d-flex">
-<div class="flex-shrink-0">
-  <img src="..." class="" alt="...">
-</div>
-<div class="flex-grow-1 ms-3">
-  This is some content from a media component. You can replace this with any content and adjust it as needed.
-</div>
-</div>
-

And say you want to vertically center the content next to the image:

-
-
- PlaceholderImage -
-
- This is some content from a media component. You can replace this with any content and adjust it as needed. -
-
html
<div class="d-flex align-items-center">
-<div class="flex-shrink-0">
-  <img src="..." class="" alt="...">
-</div>
-<div class="flex-grow-1 ms-3">
-  This is some content from a media component. You can replace this with any content and adjust it as needed.
-</div>
-</div>
-

CSS

-

Sass utilities API

-

Flexbox utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "flex": (
-      responsive: true,
-      property: flex,
-      values: (fill: 1 1 auto)
-    ),
-    "flex-direction": (
-      responsive: true,
-      property: flex-direction,
-      class: flex,
-      values: row column row-reverse column-reverse
-    ),
-    "flex-grow": (
-      responsive: true,
-      property: flex-grow,
-      class: flex,
-      values: (
-        grow-0: 0,
-        grow-1: 1,
-      )
-    ),
-    "flex-shrink": (
-      responsive: true,
-      property: flex-shrink,
-      class: flex,
-      values: (
-        shrink-0: 0,
-        shrink-1: 1,
-      )
-    ),
-    "flex-wrap": (
-      responsive: true,
-      property: flex-wrap,
-      class: flex,
-      values: wrap nowrap wrap-reverse
-    ),
-    "justify-content": (
-      responsive: true,
-      property: justify-content,
-      values: (
-        start: flex-start,
-        end: flex-end,
-        center: center,
-        between: space-between,
-        around: space-around,
-        evenly: space-evenly,
-      )
-    ),
-    "align-items": (
-      responsive: true,
-      property: align-items,
-      values: (
-        start: flex-start,
-        end: flex-end,
-        center: center,
-        baseline: baseline,
-        stretch: stretch,
-      )
-    ),
-    "align-content": (
-      responsive: true,
-      property: align-content,
-      values: (
-        start: flex-start,
-        end: flex-end,
-        center: center,
-        between: space-between,
-        around: space-around,
-        stretch: stretch,
-      )
-    ),
-    "align-self": (
-      responsive: true,
-      property: align-self,
-      values: (
-        auto: auto,
-        start: flex-start,
-        end: flex-end,
-        center: center,
-        baseline: baseline,
-        stretch: stretch,
-      )
-    ),
-    "order": (
-      responsive: true,
-      property: order,
-      values: (
-        first: -1,
-        0: 0,
-        1: 1,
-        2: 2,
-        3: 3,
-        4: 4,
-        5: 5,
-        last: 6,
-      ),
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/float/index.html b/site/dist/docs/5.3/utilities/float/index.html deleted file mode 100644 index 9cc64bb53a..0000000000 --- a/site/dist/docs/5.3/utilities/float/index.html +++ /dev/null @@ -1,60 +0,0 @@ - Float · Bootstrap v5.3

Toggle floats on any element, across any breakpoint, using our responsive float utilities.

On this page

Overview

-

These utility classes float an element to the left or right, or disable floating, based on the current viewport size using the CSS float property. !important is included to avoid specificity issues. These use the same viewport breakpoints as our grid system. Please be aware float utilities have no effect on flex items.

-
Float start on all viewport sizes

-
Float end on all viewport sizes

-
Don't float on all viewport sizes
html
<div class="float-start">Float start on all viewport sizes</div><br>
-<div class="float-end">Float end on all viewport sizes</div><br>
-<div class="float-none">Don't float on all viewport sizes</div>
-

Use the clearfix helper on a parent element to clear floats.

-

Responsive

-

Responsive variations also exist for each float value.

-
Float end on viewports sized SM (small) or wider

-
Float end on viewports sized MD (medium) or wider

-
Float end on viewports sized LG (large) or wider

-
Float end on viewports sized XL (extra large) or wider

-
Float end on viewports sized XXL (extra extra large) or wider

html
<div class="float-sm-end">Float end on viewports sized SM (small) or wider</div><br>
-<div class="float-md-end">Float end on viewports sized MD (medium) or wider</div><br>
-<div class="float-lg-end">Float end on viewports sized LG (large) or wider</div><br>
-<div class="float-xl-end">Float end on viewports sized XL (extra large) or wider</div><br>
-<div class="float-xxl-end">Float end on viewports sized XXL (extra extra large) or wider</div><br>
-

Here are all the support classes:

-
  • .float-start
  • .float-end
  • .float-none
  • .float-sm-start
  • .float-sm-end
  • .float-sm-none
  • .float-md-start
  • .float-md-end
  • .float-md-none
  • .float-lg-start
  • .float-lg-end
  • .float-lg-none
  • .float-xl-start
  • .float-xl-end
  • .float-xl-none
  • .float-xxl-start
  • .float-xxl-end
  • .float-xxl-none
-

CSS

-

Sass utilities API

-

Float utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "float": (
-      responsive: true,
-      property: float,
-      values: (
-        start: left,
-        end: right,
-        none: none,
-      )
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/index.html b/site/dist/docs/5.3/utilities/index.html deleted file mode 100644 index 887d1aa426..0000000000 --- a/site/dist/docs/5.3/utilities/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/interactions/index.html b/site/dist/docs/5.3/utilities/interactions/index.html deleted file mode 100644 index 6a3a58919e..0000000000 --- a/site/dist/docs/5.3/utilities/interactions/index.html +++ /dev/null @@ -1,57 +0,0 @@ - Interactions · Bootstrap v5.3

Interactions

Utility classes that change how users interact with contents of a website.

Text selection

-

Change the way in which the content is selected when the user interacts with it.

-

This paragraph will be entirely selected when clicked by the user.

-

This paragraph has default select behavior.

-

This paragraph will not be selectable when clicked by the user.

html
<p class="user-select-all">This paragraph will be entirely selected when clicked by the user.</p>
-<p class="user-select-auto">This paragraph has default select behavior.</p>
-<p class="user-select-none">This paragraph will not be selectable when clicked by the user.</p>
-

Pointer events

-

Bootstrap provides .pe-none and .pe-auto classes to prevent or add element interactions.

-

This link can not be clicked.

-

This link can be clicked (this is default behavior).

-

This link can not be clicked because the pointer-events property is inherited from its parent. However, this link has a pe-auto class and can be clicked.

html
<p><a href="#" class="pe-none" tabindex="-1" aria-disabled="true">This link</a> can not be clicked.</p>
-<p><a href="#" class="pe-auto">This link</a> can be clicked (this is default behavior).</p>
-<p class="pe-none"><a href="#" tabindex="-1" aria-disabled="true">This link</a> can not be clicked because the <code>pointer-events</code> property is inherited from its parent. However, <a href="#" class="pe-auto">this link</a> has a <code>pe-auto</code> class and can be clicked.</p>
-

The .pe-none class (and the pointer-events CSS property it sets) only prevents interactions with a pointer (mouse, stylus, touch). Links and controls with .pe-none are, by default, still focusable and actionable for keyboard users. To ensure that they are completely neutralized even for keyboard users, you may need to add further attributes such as tabindex="-1" (to prevent them from receiving keyboard focus) and aria-disabled="true" (to convey the fact they are effectively disabled to assistive technologies), and possibly use JavaScript to completely prevent them from being actionable.

-

If possible, the simpler solution is:

-
    -
  • For form controls, add the disabled HTML attribute.
  • -
  • For links, remove the href attribute, making it a non-interactive anchor or placeholder link.
  • -
-

CSS

-

Sass utilities API

-

Interaction utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "user-select": (
-      property: user-select,
-      values: all auto none
-    ),
-    "pointer-events": (
-      property: pointer-events,
-      class: pe,
-      values: none auto,
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/link/index.html b/site/dist/docs/5.3/utilities/link/index.html deleted file mode 100644 index c708e42ec4..0000000000 --- a/site/dist/docs/5.3/utilities/link/index.html +++ /dev/null @@ -1,158 +0,0 @@ - Link · Bootstrap v5.3
-Added in v5.3 -View on GitHub -

Link

Link utilities are used to stylize your anchors to adjust their color, opacity, underline offset, underline color, and more.

-

Change the alpha opacity of the link rgba() color value with utilities. Please be aware that changes to a color's opacity can lead to links with insufficient contrast.

-
html
<p><a class="link-opacity-10" href="#">Link opacity 10</a></p>
-<p><a class="link-opacity-25" href="#">Link opacity 25</a></p>
-<p><a class="link-opacity-50" href="#">Link opacity 50</a></p>
-<p><a class="link-opacity-75" href="#">Link opacity 75</a></p>
-<p><a class="link-opacity-100" href="#">Link opacity 100</a></p>
-

You can even change the opacity level on hover.

-
html
<p><a class="link-opacity-10-hover" href="#">Link hover opacity 10</a></p>
-<p><a class="link-opacity-25-hover" href="#">Link hover opacity 25</a></p>
-<p><a class="link-opacity-50-hover" href="#">Link hover opacity 50</a></p>
-<p><a class="link-opacity-75-hover" href="#">Link hover opacity 75</a></p>
-<p><a class="link-opacity-100-hover" href="#">Link hover opacity 100</a></p>
- -

Underline color

-

Change the underline's color independent of the link text color.

-
html
<p><a href="#" class="link-underline-primary">Primary underline</a></p>
-<p><a href="#" class="link-underline-secondary">Secondary underline</a></p>
-<p><a href="#" class="link-underline-success">Success underline</a></p>
-<p><a href="#" class="link-underline-danger">Danger underline</a></p>
-<p><a href="#" class="link-underline-warning">Warning underline</a></p>
-<p><a href="#" class="link-underline-info">Info underline</a></p>
-<p><a href="#" class="link-underline-light">Light underline</a></p>
-<p><a href="#" class="link-underline-dark">Dark underline</a></p>
-

Underline offset

-

Change the underline's distance from your text. Offset is set in em units to automatically scale with the element's current font-size.

-
html
<p><a href="#">Default link</a></p>
-<p><a class="link-offset-1" href="#">Offset 1 link</a></p>
-<p><a class="link-offset-2" href="#">Offset 2 link</a></p>
-<p><a class="link-offset-3" href="#">Offset 3 link</a></p>
-

Underline opacity

-

Change the underline's opacity. Requires adding .link-underline to first set an rgba() color we use to then modify the alpha opacity.

-
html
<p><a class="link-offset-2 link-underline link-underline-opacity-0" href="#">Underline opacity 0</a></p>
-<p><a class="link-offset-2 link-underline link-underline-opacity-10" href="#">Underline opacity 10</a></p>
-<p><a class="link-offset-2 link-underline link-underline-opacity-25" href="#">Underline opacity 25</a></p>
-<p><a class="link-offset-2 link-underline link-underline-opacity-50" href="#">Underline opacity 50</a></p>
-<p><a class="link-offset-2 link-underline link-underline-opacity-75" href="#">Underline opacity 75</a></p>
-<p><a class="link-offset-2 link-underline link-underline-opacity-100" href="#">Underline opacity 100</a></p>
-

Hover variants

-

Just like the .link-opacity-*-hover utilities, .link-offset and .link-underline-opacity utilities include :hover variants by default. Mix and match to create unique link styles.

-

Underline opacity 0

- -

Colored link helpers have been updated to pair with our link utilities. Use the new utilities to modify the link opacity, underline opacity, and underline offset.

-
html
<p><a href="#" class="link-primary link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Primary link</a></p>
-<p><a href="#" class="link-secondary link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Secondary link</a></p>
-<p><a href="#" class="link-success link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Success link</a></p>
-<p><a href="#" class="link-danger link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Danger link</a></p>
-<p><a href="#" class="link-warning link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Warning link</a></p>
-<p><a href="#" class="link-info link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Info link</a></p>
-<p><a href="#" class="link-light link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Light link</a></p>
-<p><a href="#" class="link-dark link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">Dark link</a></p>
-<p><a href="#" class="link-body-emphasis link-offset-2 link-underline-opacity-25 link-underline-opacity-75-hover">Emphasis link</a></p>
-

Accessibility tip: Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a sufficient color contrast) or is included through alternative means, such as additional text hidden with the .visually-hidden class.

-

CSS

-

In addition to the following Sass functionality, consider reading about our included CSS custom properties (aka CSS variables) for colors and more.

-

Sass utilities API

-

Link utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "link-opacity": (
-      css-var: true,
-      class: link-opacity,
-      state: hover,
-      values: (
-        10: .1,
-        25: .25,
-        50: .5,
-        75: .75,
-        100: 1
-      )
-    ),
-    "link-offset": (
-      property: text-underline-offset,
-      class: link-offset,
-      state: hover,
-      values: (
-        1: .125em,
-        2: .25em,
-        3: .375em,
-      )
-    ),
-    "link-underline": (
-      property: text-decoration-color,
-      class: link-underline,
-      local-vars: (
-        "link-underline-opacity": 1
-      ),
-      values: map-merge(
-        $utilities-links-underline,
-        (
-          null: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-underline-opacity, 1)),
-        )
-      )
-    ),
-    "link-underline-opacity": (
-      css-var: true,
-      class: link-underline-opacity,
-      state: hover,
-      values: (
-        0: 0,
-        10: .1,
-        25: .25,
-        50: .5,
-        75: .75,
-        100: 1
-      ),
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/object-fit/index.html b/site/dist/docs/5.3/utilities/object-fit/index.html deleted file mode 100644 index e04003260a..0000000000 --- a/site/dist/docs/5.3/utilities/object-fit/index.html +++ /dev/null @@ -1,76 +0,0 @@ - Object fit · Bootstrap v5.3
-Added in v5.3 -View on GitHub -

Object fit

Use the object fit utilities to modify how the content of a [replaced element](https://developer.mozilla.org/en-US/docs/Web/CSS/Replaced_element), such as an `` or `

How it works

-

Change the value of the object-fit property with our responsive object-fit utility classes. This property tells the content to fill the parent container in a variety of ways, such as preserving the aspect ratio or stretching to take up as much space as possible.

-

Classes for the value of object-fit are named using the format .object-fit-{value}. Choose from the following values:

-
    -
  • contain
  • -
  • cover
  • -
  • fill
  • -
  • scale (for scale-down)
  • -
  • none
  • -
-

Examples

-

Add the object-fit-{value} class to the replaced element:

-
Placeholder: Object fit contain -Placeholder: Object fit cover -Placeholder: Object fit fill -Placeholder: Object fit scale down -Placeholder: Object fit none
html
<img src="..." class="object-fit-contain border rounded" alt="...">
-<img src="..." class="object-fit-cover border rounded" alt="...">
-<img src="..." class="object-fit-fill border rounded" alt="...">
-<img src="..." class="object-fit-scale border rounded" alt="...">
-<img src="..." class="object-fit-none border rounded" alt="...">
-

Responsive

-

Responsive variations also exist for each object-fit value using the format .object-fit-{breakpoint}-{value}, for the following breakpoint abbreviations: sm, md, lg, xl, and xxl. Classes can be combined for various effects as you need.

-
Placeholder: Contain on sm -Placeholder: Contain on md -Placeholder: Contain on lg -Placeholder: Contain on xl -Placeholder: Contain on xxl
html
<img src="..." class="object-fit-sm-contain border rounded" alt="...">
-<img src="..." class="object-fit-md-contain border rounded" alt="...">
-<img src="..." class="object-fit-lg-contain border rounded" alt="...">
-<img src="..." class="object-fit-xl-contain border rounded" alt="...">
-<img src="..." class="object-fit-xxl-contain border rounded" alt="...">
-

Video

-

The .object-fit-{value} and responsive .object-fit-{breakpoint}-{value} utilities also work on <video> elements.

-
<video src="..." class="object-fit-contain" autoplay></video>
-<video src="..." class="object-fit-cover" autoplay></video>
-<video src="..." class="object-fit-fill" autoplay></video>
-<video src="..." class="object-fit-scale" autoplay></video>
-<video src="..." class="object-fit-none" autoplay></video>
-
-

CSS

-

Sass utilities API

-

Object fit utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "object-fit": (
-      responsive: true,
-      property: object-fit,
-      values: (
-        contain: contain,
-        cover: cover,
-        fill: fill,
-        scale: scale-down,
-        none: none,
-      )
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/opacity/index.html b/site/dist/docs/5.3/utilities/opacity/index.html deleted file mode 100644 index 61b89c9d5b..0000000000 --- a/site/dist/docs/5.3/utilities/opacity/index.html +++ /dev/null @@ -1,46 +0,0 @@ - Opacity · Bootstrap v5.3
-Added in v5.1 -View on GitHub -

Opacity

Control the opacity of elements.

The opacity property sets the opacity level for an element. The opacity level describes the transparency level, where 1 is not transparent at all, .5 is 50% visible, and 0 is completely transparent.

-

Set the opacity of an element using .opacity-{value} utilities.

-
100%
75%
50%
25%
0%
-
<div class="opacity-100">...</div>
-<div class="opacity-75">...</div>
-<div class="opacity-50">...</div>
-<div class="opacity-25">...</div>
-<div class="opacity-0">...</div>
-
-

CSS

-

Sass utilities API

-

Opacity utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "opacity": (
-      property: opacity,
-      values: (
-        0: 0,
-        25: .25,
-        50: .5,
-        75: .75,
-        100: 1,
-      )
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/overflow/index.html b/site/dist/docs/5.3/utilities/overflow/index.html deleted file mode 100644 index 14060acb67..0000000000 --- a/site/dist/docs/5.3/utilities/overflow/index.html +++ /dev/null @@ -1,67 +0,0 @@ - Overflow · Bootstrap v5.3

Use these shorthand utilities for quickly configuring how content overflows an element.

On this page

Overflow

-

Adjust the overflow property on the fly with four default values and classes. These classes are not responsive by default.

-

This is an example of using .overflow-auto on an element with set width and height dimensions. By design, this content will vertically scroll.

This is an example of using .overflow-hidden on an element with set width and height dimensions.

This is an example of using .overflow-visible on an element with set width and height dimensions.

This is an example of using .overflow-scroll on an element with set width and height dimensions.

-
<div class="overflow-auto">...</div>
-<div class="overflow-hidden">...</div>
-<div class="overflow-visible">...</div>
-<div class="overflow-scroll">...</div>
-
-

overflow-x

-

Adjust the overflow-x property to affect the overflow of content horizontally.

-
.overflow-x-auto example on an element
with set width and height dimensions.
.overflow-x-hidden example
on an element with set width and height dimensions.
.overflow-x-visible example
on an element with set width and height dimensions.
.overflow-x-scroll example on an element
with set width and height dimensions.
-
<div class="overflow-x-auto">...</div>
-<div class="overflow-x-hidden">...</div>
-<div class="overflow-x-visible">...</div>
-<div class="overflow-x-scroll">...</div>
-
-

overflow-y

-

Adjust the overflow-y property to affect the overflow of content vertically.

-

.overflow-y-auto example on an element with set width and height dimensions.

.overflow-y-hidden example on an element with set width and height dimensions.

.overflow-y-visible example on an element with set width and height dimensions.

.overflow-y-scroll example on an element with set width and height dimensions.

-
<div class="overflow-y-auto">...</div>
-<div class="overflow-y-hidden">...</div>
-<div class="overflow-y-visible">...</div>
-<div class="overflow-y-scroll">...</div>
-
-

Using Sass variables, you may customize the overflow utilities by changing the $overflows variable in _variables.scss.

-

CSS

-

Sass utilities API

-

Overflow utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "overflow": (
-      property: overflow,
-      values: auto hidden visible scroll,
-    ),
-    "overflow-x": (
-      property: overflow-x,
-      values: auto hidden visible scroll,
-    ),
-    "overflow-y": (
-      property: overflow-y,
-      values: auto hidden visible scroll,
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/position/index.html b/site/dist/docs/5.3/utilities/position/index.html deleted file mode 100644 index 625851dcc3..0000000000 --- a/site/dist/docs/5.3/utilities/position/index.html +++ /dev/null @@ -1,193 +0,0 @@ - Position · Bootstrap v5.3

Use these shorthand utilities for quickly configuring the position of an element.

Position values

-

Quick positioning classes are available, though they are not responsive.

-
<div class="position-static">...</div>
-<div class="position-relative">...</div>
-<div class="position-absolute">...</div>
-<div class="position-fixed">...</div>
-<div class="position-sticky">...</div>
-
-

Arrange elements

-

Arrange elements easily with the edge positioning utilities. The format is {property}-{position}.

-

Where property is one of:

-
    -
  • top - for the vertical top position
  • -
  • start - for the horizontal left position (in LTR)
  • -
  • bottom - for the vertical bottom position
  • -
  • end - for the horizontal right position (in LTR)
  • -
-

Where position is one of:

-
    -
  • 0 - for 0 edge position
  • -
  • 50 - for 50% edge position
  • -
  • 100 - for 100% edge position
  • -
-

(You can add more position values by adding entries to the $position-values Sass map variable.)

-
-
-
-
-
-
-
-
html
<div class="position-relative">
-<div class="position-absolute top-0 start-0"></div>
-<div class="position-absolute top-0 end-0"></div>
-<div class="position-absolute top-50 start-50"></div>
-<div class="position-absolute bottom-50 end-50"></div>
-<div class="position-absolute bottom-0 start-0"></div>
-<div class="position-absolute bottom-0 end-0"></div>
-</div>
-

Center elements

-

In addition, you can also center the elements with the transform utility class .translate-middle.

-

This class applies the transformations translateX(-50%) and translateY(-50%) to the element which, in combination with the edge positioning utilities, allows you to absolute center an element.

-
-
-
-
-
-
-
-
-
-
-
html
<div class="position-relative">
-<div class="position-absolute top-0 start-0 translate-middle"></div>
-<div class="position-absolute top-0 start-50 translate-middle"></div>
-<div class="position-absolute top-0 start-100 translate-middle"></div>
-<div class="position-absolute top-50 start-0 translate-middle"></div>
-<div class="position-absolute top-50 start-50 translate-middle"></div>
-<div class="position-absolute top-50 start-100 translate-middle"></div>
-<div class="position-absolute top-100 start-0 translate-middle"></div>
-<div class="position-absolute top-100 start-50 translate-middle"></div>
-<div class="position-absolute top-100 start-100 translate-middle"></div>
-</div>
-

By adding .translate-middle-x or .translate-middle-y classes, elements can be positioned only in horizontal or vertical direction.

-
-
-
-
-
-
-
-
-
-
-
html
<div class="position-relative">
-<div class="position-absolute top-0 start-0"></div>
-<div class="position-absolute top-0 start-50 translate-middle-x"></div>
-<div class="position-absolute top-0 end-0"></div>
-<div class="position-absolute top-50 start-0 translate-middle-y"></div>
-<div class="position-absolute top-50 start-50 translate-middle"></div>
-<div class="position-absolute top-50 end-0 translate-middle-y"></div>
-<div class="position-absolute bottom-0 start-0"></div>
-<div class="position-absolute bottom-0 start-50 translate-middle-x"></div>
-<div class="position-absolute bottom-0 end-0"></div>
-</div>
-

Examples

-

Here are some real life examples of these classes:

-
- -
-Marker -
- -
html
<button type="button" class="btn btn-primary position-relative">
-Mails <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill text-bg-secondary">+99 <span class="visually-hidden">unread messages</span></span>
-</button>
-
-<div class="position-relative py-2 px-4 text-bg-secondary border border-secondary rounded-pill">
-Marker <svg width="1em" height="1em" viewBox="0 0 16 16" class="position-absolute top-100 start-50 translate-middle mt-1" fill="var(--bs-secondary)" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/></svg>
-</div>
-
-<button type="button" class="btn btn-primary position-relative">
-Alerts <span class="position-absolute top-0 start-100 translate-middle badge border border-light rounded-circle bg-danger p-2"><span class="visually-hidden">unread messages</span></span>
-</button>
-

You can use these classes with existing components to create new ones. Remember that you can extend its functionality by adding entries to the $position-values variable.

-
-
-
-
- - - -
html
<div class="position-relative m-4">
-<div class="progress" role="progressbar" aria-label="Progress" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" style="height: 1px;">
-  <div class="progress-bar" style="width: 50%"></div>
-</div>
-<button type="button" class="position-absolute top-0 start-0 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">1</button>
-<button type="button" class="position-absolute top-0 start-50 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">2</button>
-<button type="button" class="position-absolute top-0 start-100 translate-middle btn btn-sm btn-secondary rounded-pill" style="width: 2rem; height:2rem;">3</button>
-</div>
-

CSS

-

Sass maps

-

Default position utility values are declared in a Sass map, then used to generate our utilities.

-
$position-values: (
-  0: 0,
-  50: 50%,
-  100: 100%
-);
-
-

Sass utilities API

-

Position utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "position": (
-      property: position,
-      values: static relative absolute fixed sticky
-    ),
-    "top": (
-      property: top,
-      values: $position-values
-    ),
-    "bottom": (
-      property: bottom,
-      values: $position-values
-    ),
-    "start": (
-      property: left,
-      class: start,
-      values: $position-values
-    ),
-    "end": (
-      property: right,
-      class: end,
-      values: $position-values
-    ),
-    "translate-middle": (
-      property: transform,
-      class: translate-middle,
-      values: (
-        null: translate(-50%, -50%),
-        x: translateX(-50%),
-        y: translateY(-50%),
-      )
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/shadows/index.html b/site/dist/docs/5.3/utilities/shadows/index.html deleted file mode 100644 index c03810a222..0000000000 --- a/site/dist/docs/5.3/utilities/shadows/index.html +++ /dev/null @@ -1,55 +0,0 @@ - Shadows · Bootstrap v5.3

Add or remove shadows to elements with box-shadow utilities.

On this page

Examples

-

While shadows on components are disabled by default in Bootstrap and can be enabled via $enable-shadows, you can also quickly add or remove a shadow with our box-shadow utility classes. Includes support for .shadow-none and three default sizes (which have associated variables to match).

-
No shadow
-
Small shadow
-
Regular shadow
-
Larger shadow
html
<div class="shadow-none p-3 mb-5 bg-body-tertiary rounded">No shadow</div>
-<div class="shadow-sm p-3 mb-5 bg-body-tertiary rounded">Small shadow</div>
-<div class="shadow p-3 mb-5 bg-body-tertiary rounded">Regular shadow</div>
-<div class="shadow-lg p-3 mb-5 bg-body-tertiary rounded">Larger shadow</div>
-

CSS

-

Sass variables

-
$box-shadow:                  0 .5rem 1rem rgba($black, .15);
-$box-shadow-sm:               0 .125rem .25rem rgba($black, .075);
-$box-shadow-lg:               0 1rem 3rem rgba($black, .175);
-$box-shadow-inset:            inset 0 1px 2px rgba($black, .075);
-
-

Sass utilities API

-

Shadow utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "shadow": (
-      property: box-shadow,
-      class: shadow,
-      values: (
-        null: var(--#{$prefix}box-shadow),
-        sm: var(--#{$prefix}box-shadow-sm),
-        lg: var(--#{$prefix}box-shadow-lg),
-        none: none,
-      )
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/sizing/index.html b/site/dist/docs/5.3/utilities/sizing/index.html deleted file mode 100644 index a2f664b838..0000000000 --- a/site/dist/docs/5.3/utilities/sizing/index.html +++ /dev/null @@ -1,124 +0,0 @@ - Sizing · Bootstrap v5.3

Easily make an element as wide or as tall with our width and height utilities.

Relative to the parent

-

Width and height utilities are generated from the utility API in _utilities.scss. Includes support for 25%, 50%, 75%, 100%, and auto by default. Modify those values as you need to generate different utilities here.

-
Width 25%
-
Width 50%
-
Width 75%
-
Width 100%
-
Width auto
html
<div class="w-25 p-3">Width 25%</div>
-<div class="w-50 p-3">Width 50%</div>
-<div class="w-75 p-3">Width 75%</div>
-<div class="w-100 p-3">Width 100%</div>
-<div class="w-auto p-3">Width auto</div>
-
-
Height 25%
-
Height 50%
-
Height 75%
-
Height 100%
-
Height auto
-
html
<div style="height: 100px;">
-<div class="h-25 d-inline-block" style="width: 120px;">Height 25%</div>
-<div class="h-50 d-inline-block" style="width: 120px;">Height 50%</div>
-<div class="h-75 d-inline-block" style="width: 120px;">Height 75%</div>
-<div class="h-100 d-inline-block" style="width: 120px;">Height 100%</div>
-<div class="h-auto d-inline-block" style="width: 120px;">Height auto</div>
-</div>
-

You can also use max-width: 100%; and max-height: 100%; utilities as needed.

-
-
Max-width 100%
-
html
<div style="width: 50%; height: 100px;">
-<div class="mw-100" style="width: 200%;">Max-width 100%</div>
-</div>
-
-
Max-height 100%
-
html
<div style="height: 100px;">
-<div class="mh-100" style="width: 100px; height: 200px;">Max-height 100%</div>
-</div>
-

Relative to the viewport

-

You can also use utilities to set the width and height relative to the viewport.

-
<div class="min-vw-100">Min-width 100vw</div>
-<div class="min-vh-100">Min-height 100vh</div>
-<div class="vw-100">Width 100vw</div>
-<div class="vh-100">Height 100vh</div>
-
-

CSS

-

Sass utilities API

-

Sizing utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "width": (
-      property: width,
-      class: w,
-      values: (
-        25: 25%,
-        50: 50%,
-        75: 75%,
-        100: 100%,
-        auto: auto
-      )
-    ),
-    "max-width": (
-      property: max-width,
-      class: mw,
-      values: (100: 100%)
-    ),
-    "viewport-width": (
-      property: width,
-      class: vw,
-      values: (100: 100vw)
-    ),
-    "min-viewport-width": (
-      property: min-width,
-      class: min-vw,
-      values: (100: 100vw)
-    ),
-    "height": (
-      property: height,
-      class: h,
-      values: (
-        25: 25%,
-        50: 50%,
-        75: 75%,
-        100: 100%,
-        auto: auto
-      )
-    ),
-    "max-height": (
-      property: max-height,
-      class: mh,
-      values: (100: 100%)
-    ),
-    "viewport-height": (
-      property: height,
-      class: vh,
-      values: (100: 100vh)
-    ),
-    "min-viewport-height": (
-      property: min-height,
-      class: min-vh,
-      values: (100: 100vh)
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/spacing/index.html b/site/dist/docs/5.3/utilities/spacing/index.html deleted file mode 100644 index d807bfe3bd..0000000000 --- a/site/dist/docs/5.3/utilities/spacing/index.html +++ /dev/null @@ -1,294 +0,0 @@ - Spacing · Bootstrap v5.3

Bootstrap includes a wide range of shorthand responsive margin, padding, and gap utility classes to modify an element's appearance.

Margin and padding

-

Assign responsive-friendly margin or padding values to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. Classes are built from a default Sass map ranging from .25rem to 3rem.

-

Using the CSS Grid layout module? Consider using the gap utility instead.

-

Notation

-

Spacing utilities that apply to all breakpoints, from xs to xxl, have no breakpoint abbreviation in them. This is because those classes are applied from min-width: 0 and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.

-

The classes are named using the format {property}{sides}-{size} for xs and {property}{sides}-{breakpoint}-{size} for sm, md, lg, xl, and xxl.

-

Where property is one of:

-
    -
  • m - for classes that set margin
  • -
  • p - for classes that set padding
  • -
-

Where sides is one of:

-
    -
  • t - for classes that set margin-top or padding-top
  • -
  • b - for classes that set margin-bottom or padding-bottom
  • -
  • s - (start) for classes that set margin-left or padding-left in LTR, margin-right or padding-right in RTL
  • -
  • e - (end) for classes that set margin-right or padding-right in LTR, margin-left or padding-left in RTL
  • -
  • x - for classes that set both *-left and *-right
  • -
  • y - for classes that set both *-top and *-bottom
  • -
  • blank - for classes that set a margin or padding on all 4 sides of the element
  • -
-

Where size is one of:

-
    -
  • 0 - for classes that eliminate the margin or padding by setting it to 0
  • -
  • 1 - (by default) for classes that set the margin or padding to $spacer * .25
  • -
  • 2 - (by default) for classes that set the margin or padding to $spacer * .5
  • -
  • 3 - (by default) for classes that set the margin or padding to $spacer
  • -
  • 4 - (by default) for classes that set the margin or padding to $spacer * 1.5
  • -
  • 5 - (by default) for classes that set the margin or padding to $spacer * 3
  • -
  • auto - for classes that set the margin to auto
  • -
-

(You can add more sizes by adding entries to the $spacers Sass map variable.)

-

Examples

-

Here are some representative examples of these classes:

-
.mt-0 {
-  margin-top: 0 !important;
-}
-
-.ms-1 {
-  margin-left: ($spacer * .25) !important;
-}
-
-.px-2 {
-  padding-left: ($spacer * .5) !important;
-  padding-right: ($spacer * .5) !important;
-}
-
-.p-3 {
-  padding: $spacer !important;
-}
-
-

Horizontal centering

-

Additionally, Bootstrap also includes an .mx-auto class for horizontally centering fixed-width block level content—that is, content that has display: block and a width set—by setting the horizontal margins to auto.

-

Centered element

-
<div class="mx-auto p-2" style="width: 200px;">
-  Centered element
-</div>
-
-

Negative margin

-

In CSS, margin properties can utilize negative values (padding cannot). These negative margins are disabled by default, but can be enabled in Sass by setting $enable-negative-margins: true.

-

The syntax is nearly the same as the default, positive margin utilities, but with the addition of n before the requested size. Here's an example class that's the opposite of .mt-1:

-
.mt-n1 {
-  margin-top: -0.25rem !important;
-}
-
-

Gap

-

When using display: grid or display: flex, you can make use of gap utilities on the parent element. This can save on having to add margin utilities to individual children of a grid or flex container. Gap utilities are responsive by default, and are generated via our utilities API, based on the $spacers Sass map.

-
-
Grid item 1
-
Grid item 2
-
Grid item 3
-
Grid item 4
-
html
<div style="grid-template-columns: 1fr 1fr;" class="d-grid gap-3">
-<div class="p-2">Grid item 1</div>
-<div class="p-2">Grid item 2</div>
-<div class="p-2">Grid item 3</div>
-<div class="p-2">Grid item 4</div>
-</div>
-

Support includes responsive options for all of Bootstrap's grid breakpoints, as well as six sizes from the $spacers map (05). There is no .gap-auto utility class as it's effectively the same as .gap-0.

-

row-gap

-

row-gap sets the vertical space between children items in the specified container.

-
-
Grid item 1
-
Grid item 2
-
Grid item 3
-
Grid item 4
-
html
<div style="grid-template-columns: 1fr 1fr;" class="d-grid gap-0 row-gap-3">
-<div class="p-2">Grid item 1</div>
-<div class="p-2">Grid item 2</div>
-<div class="p-2">Grid item 3</div>
-<div class="p-2">Grid item 4</div>
-</div>
-

column-gap

-

column-gap sets the horizontal space between children items in the specified container.

-
-
Grid item 1
-
Grid item 2
-
Grid item 3
-
Grid item 4
-
html
<div style="grid-template-columns: 1fr 1fr;" class="d-grid gap-0 column-gap-3">
-<div class="p-2">Grid item 1</div>
-<div class="p-2">Grid item 2</div>
-<div class="p-2">Grid item 3</div>
-<div class="p-2">Grid item 4</div>
-</div>
-

CSS

-

Sass maps

-

Spacing utilities are declared via Sass map and then generated with our utilities API.

-
$spacer: 1rem;
-$spacers: (
-  0: 0,
-  1: $spacer * .25,
-  2: $spacer * .5,
-  3: $spacer,
-  4: $spacer * 1.5,
-  5: $spacer * 3,
-);
-
-

Sass utilities API

-

Spacing utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "margin": (
-      responsive: true,
-      property: margin,
-      class: m,
-      values: map-merge($spacers, (auto: auto))
-    ),
-    "margin-x": (
-      responsive: true,
-      property: margin-right margin-left,
-      class: mx,
-      values: map-merge($spacers, (auto: auto))
-    ),
-    "margin-y": (
-      responsive: true,
-      property: margin-top margin-bottom,
-      class: my,
-      values: map-merge($spacers, (auto: auto))
-    ),
-    "margin-top": (
-      responsive: true,
-      property: margin-top,
-      class: mt,
-      values: map-merge($spacers, (auto: auto))
-    ),
-    "margin-end": (
-      responsive: true,
-      property: margin-right,
-      class: me,
-      values: map-merge($spacers, (auto: auto))
-    ),
-    "margin-bottom": (
-      responsive: true,
-      property: margin-bottom,
-      class: mb,
-      values: map-merge($spacers, (auto: auto))
-    ),
-    "margin-start": (
-      responsive: true,
-      property: margin-left,
-      class: ms,
-      values: map-merge($spacers, (auto: auto))
-    ),
-    // Negative margin utilities
-    "negative-margin": (
-      responsive: true,
-      property: margin,
-      class: m,
-      values: $negative-spacers
-    ),
-    "negative-margin-x": (
-      responsive: true,
-      property: margin-right margin-left,
-      class: mx,
-      values: $negative-spacers
-    ),
-    "negative-margin-y": (
-      responsive: true,
-      property: margin-top margin-bottom,
-      class: my,
-      values: $negative-spacers
-    ),
-    "negative-margin-top": (
-      responsive: true,
-      property: margin-top,
-      class: mt,
-      values: $negative-spacers
-    ),
-    "negative-margin-end": (
-      responsive: true,
-      property: margin-right,
-      class: me,
-      values: $negative-spacers
-    ),
-    "negative-margin-bottom": (
-      responsive: true,
-      property: margin-bottom,
-      class: mb,
-      values: $negative-spacers
-    ),
-    "negative-margin-start": (
-      responsive: true,
-      property: margin-left,
-      class: ms,
-      values: $negative-spacers
-    ),
-    // Padding utilities
-    "padding": (
-      responsive: true,
-      property: padding,
-      class: p,
-      values: $spacers
-    ),
-    "padding-x": (
-      responsive: true,
-      property: padding-right padding-left,
-      class: px,
-      values: $spacers
-    ),
-    "padding-y": (
-      responsive: true,
-      property: padding-top padding-bottom,
-      class: py,
-      values: $spacers
-    ),
-    "padding-top": (
-      responsive: true,
-      property: padding-top,
-      class: pt,
-      values: $spacers
-    ),
-    "padding-end": (
-      responsive: true,
-      property: padding-right,
-      class: pe,
-      values: $spacers
-    ),
-    "padding-bottom": (
-      responsive: true,
-      property: padding-bottom,
-      class: pb,
-      values: $spacers
-    ),
-    "padding-start": (
-      responsive: true,
-      property: padding-left,
-      class: ps,
-      values: $spacers
-    ),
-    // Gap utility
-    "gap": (
-      responsive: true,
-      property: gap,
-      class: gap,
-      values: $spacers
-    ),
-    "row-gap": (
-      responsive: true,
-      property: row-gap,
-      class: row-gap,
-      values: $spacers
-    ),
-    "column-gap": (
-      responsive: true,
-      property: column-gap,
-      class: column-gap,
-      values: $spacers
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/text/index.html b/site/dist/docs/5.3/utilities/text/index.html deleted file mode 100644 index ce091685e6..0000000000 --- a/site/dist/docs/5.3/utilities/text/index.html +++ /dev/null @@ -1,265 +0,0 @@ - Text · Bootstrap v5.3

Documentation and examples for common text utilities to control alignment, wrapping, weight, and more.

Text alignment

-

Easily realign text to components with text alignment classes. For start, end, and center alignment, responsive classes are available that use the same viewport width breakpoints as the grid system.

-

Start aligned text on all viewport sizes.

-

Center aligned text on all viewport sizes.

-

End aligned text on all viewport sizes.

- -

End aligned text on viewports sized SM (small) or wider.

-

End aligned text on viewports sized MD (medium) or wider.

-

End aligned text on viewports sized LG (large) or wider.

-

End aligned text on viewports sized XL (extra large) or wider.

-

End aligned text on viewports sized XXL (extra extra large) or wider.

html
<p class="text-start">Start aligned text on all viewport sizes.</p>
-<p class="text-center">Center aligned text on all viewport sizes.</p>
-<p class="text-end">End aligned text on all viewport sizes.</p>
-
-<p class="text-sm-end">End aligned text on viewports sized SM (small) or wider.</p>
-<p class="text-md-end">End aligned text on viewports sized MD (medium) or wider.</p>
-<p class="text-lg-end">End aligned text on viewports sized LG (large) or wider.</p>
-<p class="text-xl-end">End aligned text on viewports sized XL (extra large) or wider.</p>
-<p class="text-xxl-end">End aligned text on viewports sized XXL (extra extra large) or wider.</p>
-

Note that we don't provide utility classes for justified text. While, aesthetically, justified text might look more appealing, it does make word-spacing more random and therefore harder to read.

-

Text wrapping and overflow

-

Wrap text with a .text-wrap class.

-
-This text should wrap. -
html
<div class="badge text-bg-primary text-wrap" style="width: 6rem;">
-This text should wrap.
-</div>
-

Prevent text from wrapping with a .text-nowrap class.

-
-This text should overflow the parent. -
html
<div class="text-nowrap bg-body-secondary border" style="width: 8rem;">
-This text should overflow the parent.
-</div>
-

Word break

-

Prevent long strings of text from breaking your components' layout by using .text-break to set word-wrap: break-word and word-break: break-word. We use word-wrap instead of the more common overflow-wrap for wider browser support, and add the deprecated word-break: break-word to avoid issues with flex containers.

-

mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

html
<p class="text-break">mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm</p>
-

Note that breaking words isn't possible in Arabic, which is the most used RTL language. Therefore .text-break is removed from our RTL compiled CSS.

-

Text transform

-

Transform text in components with our text capitalization classes: text-lowercase, text-uppercase or text-capitalize.

-

Lowercased text.

-

Uppercased text.

-

CapiTaliZed text.

html
<p class="text-lowercase">Lowercased text.</p>
-<p class="text-uppercase">Uppercased text.</p>
-<p class="text-capitalize">CapiTaliZed text.</p>
-

Note how .text-capitalize only changes the first letter of each word, leaving the case of any other letters unaffected.

-

Font size

-

Quickly change the font-size of text. While our heading classes (e.g., .h1.h6) apply font-size, font-weight, and line-height, these utilities only apply font-size. Sizing for these utilities matches HTML's heading elements, so as the number increases, their size decreases.

-

.fs-1 text

-

.fs-2 text

-

.fs-3 text

-

.fs-4 text

-

.fs-5 text

-

.fs-6 text

html
<p class="fs-1">.fs-1 text</p>
-<p class="fs-2">.fs-2 text</p>
-<p class="fs-3">.fs-3 text</p>
-<p class="fs-4">.fs-4 text</p>
-<p class="fs-5">.fs-5 text</p>
-<p class="fs-6">.fs-6 text</p>
-

Customize your available font-sizes by modifying the $font-sizes Sass map.

-

Font weight and italics

-

Quickly change the font-weight or font-style of text with these utilities. font-style utilities are abbreviated as .fst-* and font-weight utilities are abbreviated as .fw-*.

-

Bold text.

-

Bolder weight text (relative to the parent element).

-

Semibold weight text.

-

Medium weight text.

-

Normal weight text.

-

Light weight text.

-

Lighter weight text (relative to the parent element).

-

Italic text.

-

Text with normal font style

html
<p class="fw-bold">Bold text.</p>
-<p class="fw-bolder">Bolder weight text (relative to the parent element).</p>
-<p class="fw-semibold">Semibold weight text.</p>
-<p class="fw-medium">Medium weight text.</p>
-<p class="fw-normal">Normal weight text.</p>
-<p class="fw-light">Light weight text.</p>
-<p class="fw-lighter">Lighter weight text (relative to the parent element).</p>
-<p class="fst-italic">Italic text.</p>
-<p class="fst-normal">Text with normal font style</p>
-

Line height

-

Change the line height with .lh-* utilities.

-

This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.

-

This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.

-

This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.

-

This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.

html
<p class="lh-1">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.</p>
-<p class="lh-sm">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.</p>
-<p class="lh-base">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.</p>
-<p class="lh-lg">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.</p>
-

Monospace

-

Change a selection to our monospace font stack with .font-monospace.

-

This is in monospace

html
<p class="font-monospace">This is in monospace</p>
-

Reset color

-

Reset a text or link's color with .text-reset, so that it inherits the color from its parent.

-

-Secondary body text with a reset link. -

html
<p class="text-body-secondary">
-Secondary body text with a <a href="#" class="text-reset">reset link</a>.
-</p>
-

Text decoration

-

Decorate text in components with text decoration classes.

-

This text has a line underneath it.

-

This text has a line going through it.

-This link has its text decoration removed
html
<p class="text-decoration-underline">This text has a line underneath it.</p>
-<p class="text-decoration-line-through">This text has a line going through it.</p>
-<a href="#" class="text-decoration-none">This link has its text decoration removed</a>
-

CSS

-

Sass variables

-

Default type and font related Sass variables:

-
// stylelint-disable value-keyword-case
-$font-family-sans-serif:      system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
-$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
-// stylelint-enable value-keyword-case
-$font-family-base:            var(--#{$prefix}font-sans-serif);
-$font-family-code:            var(--#{$prefix}font-monospace);
-
-// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins
-// $font-size-base affects the font size of the body text
-$font-size-root:              null;
-$font-size-base:              1rem; // Assumes the browser default, typically `16px`
-$font-size-sm:                $font-size-base * .875;
-$font-size-lg:                $font-size-base * 1.25;
-
-$font-weight-lighter:         lighter;
-$font-weight-light:           300;
-$font-weight-normal:          400;
-$font-weight-medium:          500;
-$font-weight-semibold:        600;
-$font-weight-bold:            700;
-$font-weight-bolder:          bolder;
-
-$font-weight-base:            $font-weight-normal;
-
-$line-height-base:            1.5;
-$line-height-sm:              1.25;
-$line-height-lg:              2;
-
-$h1-font-size:                $font-size-base * 2.5;
-$h2-font-size:                $font-size-base * 2;
-$h3-font-size:                $font-size-base * 1.75;
-$h4-font-size:                $font-size-base * 1.5;
-$h5-font-size:                $font-size-base * 1.25;
-$h6-font-size:                $font-size-base;
-
-

Sass maps

-

Font-size utilities are generated from this map, in combination with our utilities API.

-
$font-sizes: (
-  1: $h1-font-size,
-  2: $h2-font-size,
-  3: $h3-font-size,
-  4: $h4-font-size,
-  5: $h5-font-size,
-  6: $h6-font-size
-);
-
-
$theme-colors-text: (
-  "primary": $primary-text-emphasis,
-  "secondary": $secondary-text-emphasis,
-  "success": $success-text-emphasis,
-  "info": $info-text-emphasis,
-  "warning": $warning-text-emphasis,
-  "danger": $danger-text-emphasis,
-  "light": $light-text-emphasis,
-  "dark": $dark-text-emphasis,
-);
-
-

Sass utilities API

-

Font and text utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "font-family": (
-      property: font-family,
-      class: font,
-      values: (monospace: var(--#{$prefix}font-monospace))
-    ),
-    "font-size": (
-      rfs: true,
-      property: font-size,
-      class: fs,
-      values: $font-sizes
-    ),
-    "font-style": (
-      property: font-style,
-      class: fst,
-      values: italic normal
-    ),
-    "font-weight": (
-      property: font-weight,
-      class: fw,
-      values: (
-        lighter: $font-weight-lighter,
-        light: $font-weight-light,
-        normal: $font-weight-normal,
-        medium: $font-weight-medium,
-        semibold: $font-weight-semibold,
-        bold: $font-weight-bold,
-        bolder: $font-weight-bolder
-      )
-    ),
-    "line-height": (
-      property: line-height,
-      class: lh,
-      values: (
-        1: 1,
-        sm: $line-height-sm,
-        base: $line-height-base,
-        lg: $line-height-lg,
-      )
-    ),
-    "text-align": (
-      responsive: true,
-      property: text-align,
-      class: text,
-      values: (
-        start: left,
-        end: right,
-        center: center,
-      )
-    ),
-    "text-decoration": (
-      property: text-decoration,
-      values: none underline line-through
-    ),
-    "text-transform": (
-      property: text-transform,
-      class: text,
-      values: lowercase uppercase capitalize
-    ),
-    "white-space": (
-      property: white-space,
-      class: text,
-      values: (
-        wrap: normal,
-        nowrap: nowrap,
-      )
-    ),
-    "word-wrap": (
-      property: word-wrap word-break,
-      class: text,
-      values: (break: break-word),
-      rtl: false
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/vertical-align/index.html b/site/dist/docs/5.3/utilities/vertical-align/index.html deleted file mode 100644 index 7a78778f3c..0000000000 --- a/site/dist/docs/5.3/utilities/vertical-align/index.html +++ /dev/null @@ -1,72 +0,0 @@ - Vertical alignment · Bootstrap v5.3

Vertical alignment

Easily change the vertical alignment of inline, inline-block, inline-table, and table cell elements.

Change the alignment of elements with the vertical-alignment utilities. Please note that vertical-align only affects inline, inline-block, inline-table, and table cell elements.

-

Choose from .align-baseline, .align-top, .align-middle, .align-bottom, .align-text-bottom, and .align-text-top as needed.

-

To vertically center non-inline content (like <div>s and more), use our flex box utilities.

-

With inline elements:

-
baseline -top -middle -bottom -text-top -text-bottom
html
<span class="align-baseline">baseline</span>
-<span class="align-top">top</span>
-<span class="align-middle">middle</span>
-<span class="align-bottom">bottom</span>
-<span class="align-text-top">text-top</span>
-<span class="align-text-bottom">text-bottom</span>
-

With table cells:

-
- - - - - - - - - - -
baselinetopmiddlebottomtext-toptext-bottom
html
<table style="height: 100px;">
-<tbody>
-  <tr>
-    <td class="align-baseline">baseline</td>
-    <td class="align-top">top</td>
-    <td class="align-middle">middle</td>
-    <td class="align-bottom">bottom</td>
-    <td class="align-text-top">text-top</td>
-    <td class="align-text-bottom">text-bottom</td>
-  </tr>
-</tbody>
-</table>
-

CSS

-

Sass utilities API

-

Vertical align utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "align": (
-      property: vertical-align,
-      class: align,
-      values: baseline top middle bottom text-bottom text-top
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/visibility/index.html b/site/dist/docs/5.3/utilities/visibility/index.html deleted file mode 100644 index 3c0349a7f7..0000000000 --- a/site/dist/docs/5.3/utilities/visibility/index.html +++ /dev/null @@ -1,50 +0,0 @@ - Visibility · Bootstrap v5.3

Visibility

Control the visibility of elements, without modifying their display, with visibility utilities.

Set the visibility of elements with our visibility utilities. These utility classes do not modify the display value at all and do not affect layout – .invisible elements still take up space in the page.

-

Elements with the .invisible class will be hidden both visually and for assistive technology/screen reader users.

-

Apply .visible or .invisible as needed.

-
<div class="visible">...</div>
-<div class="invisible">...</div>
-
-
// Class
-.visible {
-  visibility: visible !important;
-}
-.invisible {
-  visibility: hidden !important;
-}
-
-

CSS

-

Sass utilities API

-

Visibility utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "visibility": (
-      property: visibility,
-      class: null,
-      values: (
-        visible: visible,
-        invisible: hidden,
-      )
-    ),
-    
\ No newline at end of file diff --git a/site/dist/docs/5.3/utilities/z-index/index.html b/site/dist/docs/5.3/utilities/z-index/index.html deleted file mode 100644 index 419047e742..0000000000 --- a/site/dist/docs/5.3/utilities/z-index/index.html +++ /dev/null @@ -1,58 +0,0 @@ - Z-index · Bootstrap v5.3
-Added in v5.3 -View on GitHub -

Z-index

Use our low-level `z-index` utilities to quickly change the stack level of an element or component.

Example

-

Use z-index utilities to stack elements on top of one another. Requires a position value other than static, which can be set with custom styles or using our position utilities.

-

We call these "low-level" z-index utilities because of their default values of -1 through 3, which we use for the layout of overlapping components. High-level z-index values are used for overlay components like modals and tooltips.

-
z-3
-
z-2
-
z-1
-
z-0
-
z-n1
html
<div class="z-3 position-absolute p-5 rounded-3"><span>z-3</span></div>
-<div class="z-2 position-absolute p-5 rounded-3"><span>z-2</span></div>
-<div class="z-1 position-absolute p-5 rounded-3"><span>z-1</span></div>
-<div class="z-0 position-absolute p-5 rounded-3"><span>z-0</span></div>
-<div class="z-n1 position-absolute p-5 rounded-3"><span>z-n1</span></div>
-

Overlays

-

Bootstrap overlay components—dropdown, modal, offcanvas, popover, toast, and tooltip—all have their own z-index values to ensure a usable experience with competing "layers" of an interface.

-

Read about them in the z-index layout page.

-

Component approach

-

On some components, we use our low-level z-index values to manage repeating elements that overlap one another (like buttons in a button group or items in a list group).

-

Learn about our z-index approach.

-

CSS

-

Sass maps

-

Customize this Sass map to change the available values and generated utilities.

-
$zindex-levels: (
-  n1: -1,
-  0: 0,
-  1: 1,
-  2: 2,
-  3: 3
-);
-
-

Sass utilities API

-

Position utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

-
    "z-index": (
-      property: z-index,
-      class: z,
-      values: $zindex-levels,
-    )
-    
\ No newline at end of file diff --git a/site/dist/docs/getting-started/index.html b/site/dist/docs/getting-started/index.html deleted file mode 100644 index 77668bc23d..0000000000 --- a/site/dist/docs/getting-started/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/index.html b/site/dist/docs/index.html deleted file mode 100644 index b2e5f03e22..0000000000 --- a/site/dist/docs/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/docs/versions/index.html b/site/dist/docs/versions/index.html deleted file mode 100644 index b0c01f37d3..0000000000 --- a/site/dist/docs/versions/index.html +++ /dev/null @@ -1,21 +0,0 @@ - Versions · Bootstrap v5.3

Versions

An appendix of hosted documentation for nearly every release of Bootstrap, from v1 through v5.

v5.x

Current major release. Last update was v5.3.3.

v4.x

Our previous major release with its minor releases. Last update was v4.6.2.

v3.x

Every minor release from v3 is listed below. Last update was v3.4.1.

v1.x

Every minor and patch release from v1 is listed below.

\ No newline at end of file diff --git a/site/dist/docsref/index.html b/site/dist/docsref/index.html deleted file mode 100644 index edb45fd414..0000000000 --- a/site/dist/docsref/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/examples/index.html b/site/dist/examples/index.html deleted file mode 100644 index 2c88cbb27d..0000000000 --- a/site/dist/examples/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/favicon.ico b/site/dist/favicon.ico deleted file mode 100644 index 0549906208..0000000000 Binary files a/site/dist/favicon.ico and /dev/null differ diff --git a/site/dist/getting-started/index.html b/site/dist/getting-started/index.html deleted file mode 100644 index 77668bc23d..0000000000 --- a/site/dist/getting-started/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/index.html b/site/dist/index.html deleted file mode 100644 index b946471b5a..0000000000 --- a/site/dist/index.html +++ /dev/null @@ -1,176 +0,0 @@ - Bootstrap · The most popular HTML, CSS, and JS library in the world.
-Get Security Updates for Bootstrap 3 & 4 - Bootstrap

Build fast, responsive sites with Bootstrap

-Powerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid - system and components, and bring projects to life with powerful JavaScript plugins. -

npm i bootstrap@5.3.3
-Read the docs -

-Currently v5.3.3 · Download · All releases

Get started any way you want

-Jump right into building with Bootstrap—use the CDN, install it via package manager, or download the source code. -

-Read installation docs -

Install via package manager

-Install Bootstrap’s source Sass and JavaScript files via npm, RubyGems, Composer, or Meteor. Package managed - installs don’t include documentation or our full build scripts. You can also use any demo from our Examples repo to quickly jumpstart Bootstrap projects. -

npm i bootstrap@5.3.3
gem install bootstrap -v 5.3.3

Read our installation docs for more info and additional - package managers. -

Include via CDN

-When you only need to include Bootstrap’s compiled CSS or JS, you can use jsDelivr. See it in action with our simple quick start, or browse the examples to jumpstart your next project. You can also - choose to include Popper and our JS separately. -

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>

Read our getting started guides

Get a jump on including Bootstrap's source files in a new project with our official guides.

Customize everything with Sass

-Bootstrap utilizes Sass for a modular and customizable architecture. Import only the components you need, enable - global options like gradients and shadows, and write your own CSS with our variables, maps, functions, and mixins. -

-Learn more about customizing -

Include all of Bootstrap’s Sass

Import one stylesheet and you're off to the races with every feature of our CSS.

// Variable overrides first
-$primary: #900;
-$enable-shadows: true;
-$prefix: "mo-";
-
-// Then import Bootstrap
-@import "../node_modules/bootstrap/scss/bootstrap";

Learn more about our global Sass options.

Include what you need

The easiest way to customize Bootstrap—include only the CSS you need.

// Functions first
-@import "../node_modules/bootstrap/scss/functions";
-
-// Variable overrides second
-$primary: #900;
-$enable-shadows: true;
-$prefix: "mo-";
-
-// Required Bootstrap imports
-@import "../node_modules/bootstrap/scss/variables";
-@import "../node_modules/bootstrap/scss/variables-dark";
-@import "../node_modules/bootstrap/scss/maps";
-@import "../node_modules/bootstrap/scss/mixins";
-@import "../node_modules/bootstrap/scss/root";
-
-// Optional components
-@import "../node_modules/bootstrap/scss/utilities";
-@import "../node_modules/bootstrap/scss/reboot";
-@import "../node_modules/bootstrap/scss/containers";
-@import "../node_modules/bootstrap/scss/grid";
-@import "../node_modules/bootstrap/scss/helpers";
-@import "../node_modules/bootstrap/scss/utilities/api";

Learn more about using Bootstrap with Sass.

Build and extend in real-time with CSS variables

-Bootstrap 5 is evolving with each release to better utilize CSS variables for global theme styles, individual - components, and even utilities. We provide dozens of variables for colors, font styles, and more at a :root level for use anywhere. On components and utilities, CSS variables are scoped to the relevant class and can easily - be modified. -

-Learn more about CSS variables -

Using CSS variables

-Use any of our global :root variables to write new styles. CSS variables use the var(--bs-variableName) syntax and can be inherited by children - elements. -

.component {
-  color: var(--bs-gray-800);
-  background-color: var(--bs-gray-100);
-  border: 1px solid var(--bs-gray-200);
-  border-radius: .25rem;
-}
-
-.component-header {
-  color: var(--bs-purple);
-}

Customizing via CSS variables

-Override global, component, or utility class variables to customize Bootstrap just how you like. No need to - redeclare each rule, just a new variable value. -

body {
-  --bs-body-font-family: var(--bs-font-monospace);
-  --bs-body-line-height: 1.4;
-  --bs-body-bg: var(--bs-gray-100);
-}
-
-.table {
-  --bs-table-color: var(--bs-gray-600);
-  --bs-table-bg: var(--bs-gray-100);
-  --bs-table-border-color: transparent;
-}

Components, meet the Utility API

-New in Bootstrap 5, our utilities are now generated by our Utility API. We built it as a feature-packed Sass map that can be quickly and easily customized. It's never been easier to - add, remove, or modify any utility classes. Make utilities responsive, add pseudo-class variants, and give them - custom names. -

Quickly customize components

-Apply any of our included utility classes to our components to customize their appearance, like the navigation - example below. There are hundreds of classes available—from positioning and sizing to colors and effects. Mix them with CSS variable overrides for - even more control. -

<ul class="nav nav-pills nav-fill gap-2 p-1 small bg-primary rounded-5 shadow-sm" id="pillNav2" role="tablist" style="--bs-nav-link-color: var(--bs-white); --bs-nav-pills-link-active-color: var(--bs-primary); --bs-nav-pills-link-active-bg: var(--bs-white);">
-  <li class="nav-item" role="presentation">
-    <button class="nav-link active rounded-5" id="home-tab2" data-bs-toggle="tab" type="button" role="tab" aria-selected="true">Home</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link rounded-5" id="profile-tab2" data-bs-toggle="tab" type="button" role="tab" aria-selected="false">Profile</button>
-  </li>
-  <li class="nav-item" role="presentation">
-    <button class="nav-link rounded-5" id="contact-tab2" data-bs-toggle="tab" type="button" role="tab" aria-selected="false">Contact</button>
-  </li>
-</ul>

-Explore customized components -

Create and extend utilities

-Use Bootstrap's utility API to modify any of our included utilities or create your own custom utilities for any - project. Import Bootstrap first, then use Sass map functions to modify, add, or remove utilities. -

@import "bootstrap/scss/bootstrap";
-
-$utilities: map-merge(
-  $utilities,
-  (
-    "cursor": (
-      property: cursor,
-      class: cursor,
-      responsive: true,
-      values: auto pointer grab,
-    )
-  )
-);

-Explore the utility API -

Powerful JavaScript plugins without jQuery

-Add toggleable hidden elements, modals and offcanvas menus, popovers and tooltips, and so much more—all without - jQuery. Bootstrap's JavaScript is HTML-first, meaning most plugins are added with data attributes in your - HTML. Need more control? Include individual plugins programmatically. -

-Learn more about Bootstrap JavaScript -

Data attribute API

-Why write more JavaScript when you can write HTML? Nearly all of Bootstrap's JavaScript plugins feature a - first-class data API, allowing you to use JavaScript just by adding data attributes. -

<div class="dropdown">
-  <button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-    <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-    <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-  </ul>
-</div>

-Learn more about our JavaScript as modules and using the programmatic API. -

Personalize it with Bootstrap Icons

Bootstrap Icons is an open source SVG icon library featuring over 1,800 glyphs, with - more added every release. They're designed to work in any project, whether you use Bootstrap itself or not. Use them - as SVGs or icon fonts—both options give you vector scaling and easy customization via CSS. -

-Get Bootstrap Icons -

Bootstrap Icons

Make it yours with official Bootstrap Themes

-Take Bootstrap to the next level with premium themes from the official Bootstrap Themes marketplace. Themes are built on Bootstrap as their own extended frameworks, rich with new components and plugins, - documentation, and powerful build tools. -

-Browse Bootstrap Themes -

Bootstrap Themes
\ No newline at end of file diff --git a/site/dist/migration/index.html b/site/dist/migration/index.html deleted file mode 100644 index 2dbe12f0df..0000000000 --- a/site/dist/migration/index.html +++ /dev/null @@ -1 +0,0 @@ - Bootstrap \ No newline at end of file diff --git a/site/dist/robots.txt b/site/dist/robots.txt deleted file mode 100644 index 1ca8e05f93..0000000000 --- a/site/dist/robots.txt +++ /dev/null @@ -1,5 +0,0 @@ -# www.robotstxt.org -# Allow crawling of all content -User-agent: * -Disallow: -Sitemap: https://getbootstrap.com/sitemap-index.xml diff --git a/site/dist/sitemap-0.xml b/site/dist/sitemap-0.xml deleted file mode 100644 index f61dd6d531..0000000000 --- a/site/dist/sitemap-0.xml +++ /dev/null @@ -1 +0,0 @@ -https://getbootstrap.com/https://getbootstrap.com/about/https://getbootstrap.com/components/https://getbootstrap.com/docs/5.3/about/https://getbootstrap.com/docs/5.3/about/brand/https://getbootstrap.com/docs/5.3/about/license/https://getbootstrap.com/docs/5.3/about/overview/https://getbootstrap.com/docs/5.3/about/team/https://getbootstrap.com/docs/5.3/about/translations/https://getbootstrap.com/docs/5.3/components/https://getbootstrap.com/docs/5.3/components/accordion/https://getbootstrap.com/docs/5.3/components/alerts/https://getbootstrap.com/docs/5.3/components/badge/https://getbootstrap.com/docs/5.3/components/breadcrumb/https://getbootstrap.com/docs/5.3/components/button-group/https://getbootstrap.com/docs/5.3/components/buttons/https://getbootstrap.com/docs/5.3/components/card/https://getbootstrap.com/docs/5.3/components/carousel/https://getbootstrap.com/docs/5.3/components/close-button/https://getbootstrap.com/docs/5.3/components/collapse/https://getbootstrap.com/docs/5.3/components/dropdowns/https://getbootstrap.com/docs/5.3/components/list-group/https://getbootstrap.com/docs/5.3/components/modal/https://getbootstrap.com/docs/5.3/components/navbar/https://getbootstrap.com/docs/5.3/components/navs-tabs/https://getbootstrap.com/docs/5.3/components/navs/https://getbootstrap.com/docs/5.3/components/offcanvas/https://getbootstrap.com/docs/5.3/components/pagination/https://getbootstrap.com/docs/5.3/components/placeholders/https://getbootstrap.com/docs/5.3/components/popovers/https://getbootstrap.com/docs/5.3/components/progress/https://getbootstrap.com/docs/5.3/components/scrollspy/https://getbootstrap.com/docs/5.3/components/spinners/https://getbootstrap.com/docs/5.3/components/toasts/https://getbootstrap.com/docs/5.3/components/tooltips/https://getbootstrap.com/docs/5.3/content/https://getbootstrap.com/docs/5.3/content/figures/https://getbootstrap.com/docs/5.3/content/images/https://getbootstrap.com/docs/5.3/content/reboot/https://getbootstrap.com/docs/5.3/content/tables/https://getbootstrap.com/docs/5.3/content/typography/https://getbootstrap.com/docs/5.3/customize/https://getbootstrap.com/docs/5.3/customize/color-modes/https://getbootstrap.com/docs/5.3/customize/color/https://getbootstrap.com/docs/5.3/customize/components/https://getbootstrap.com/docs/5.3/customize/css-variables/https://getbootstrap.com/docs/5.3/customize/optimize/https://getbootstrap.com/docs/5.3/customize/options/https://getbootstrap.com/docs/5.3/customize/overview/https://getbootstrap.com/docs/5.3/customize/sass/https://getbootstrap.com/docs/5.3/docsref/https://getbootstrap.com/docs/5.3/examples/https://getbootstrap.com/docs/5.3/examples/album-rtl/https://getbootstrap.com/docs/5.3/examples/album/https://getbootstrap.com/docs/5.3/examples/badges/https://getbootstrap.com/docs/5.3/examples/blog-rtl/https://getbootstrap.com/docs/5.3/examples/blog/https://getbootstrap.com/docs/5.3/examples/breadcrumbs/https://getbootstrap.com/docs/5.3/examples/buttons/https://getbootstrap.com/docs/5.3/examples/carousel-rtl/https://getbootstrap.com/docs/5.3/examples/carousel/https://getbootstrap.com/docs/5.3/examples/cheatsheet-rtl/https://getbootstrap.com/docs/5.3/examples/cheatsheet/https://getbootstrap.com/docs/5.3/examples/checkout-rtl/https://getbootstrap.com/docs/5.3/examples/checkout/https://getbootstrap.com/docs/5.3/examples/cover/https://getbootstrap.com/docs/5.3/examples/dashboard-rtl/https://getbootstrap.com/docs/5.3/examples/dashboard/https://getbootstrap.com/docs/5.3/examples/dropdowns/https://getbootstrap.com/docs/5.3/examples/features/https://getbootstrap.com/docs/5.3/examples/footers/https://getbootstrap.com/docs/5.3/examples/grid/https://getbootstrap.com/docs/5.3/examples/headers/https://getbootstrap.com/docs/5.3/examples/heroes/https://getbootstrap.com/docs/5.3/examples/jumbotron/https://getbootstrap.com/docs/5.3/examples/jumbotrons/https://getbootstrap.com/docs/5.3/examples/list-groups/https://getbootstrap.com/docs/5.3/examples/masonry/https://getbootstrap.com/docs/5.3/examples/modals/https://getbootstrap.com/docs/5.3/examples/navbar-bottom/https://getbootstrap.com/docs/5.3/examples/navbar-fixed/https://getbootstrap.com/docs/5.3/examples/navbar-static/https://getbootstrap.com/docs/5.3/examples/navbars-offcanvas/https://getbootstrap.com/docs/5.3/examples/navbars/https://getbootstrap.com/docs/5.3/examples/offcanvas-navbar/https://getbootstrap.com/docs/5.3/examples/offcanvas/https://getbootstrap.com/docs/5.3/examples/pricing/https://getbootstrap.com/docs/5.3/examples/product/https://getbootstrap.com/docs/5.3/examples/sidebars/https://getbootstrap.com/docs/5.3/examples/sign-in/https://getbootstrap.com/docs/5.3/examples/starter-template/https://getbootstrap.com/docs/5.3/examples/sticky-footer-navbar/https://getbootstrap.com/docs/5.3/examples/sticky-footer/https://getbootstrap.com/docs/5.3/extend/https://getbootstrap.com/docs/5.3/extend/approach/https://getbootstrap.com/docs/5.3/extend/icons/https://getbootstrap.com/docs/5.3/forms/https://getbootstrap.com/docs/5.3/forms/checks-radios/https://getbootstrap.com/docs/5.3/forms/checks/https://getbootstrap.com/docs/5.3/forms/floating-labels/https://getbootstrap.com/docs/5.3/forms/form-control/https://getbootstrap.com/docs/5.3/forms/input-group/https://getbootstrap.com/docs/5.3/forms/layout/https://getbootstrap.com/docs/5.3/forms/overview/https://getbootstrap.com/docs/5.3/forms/range/https://getbootstrap.com/docs/5.3/forms/select/https://getbootstrap.com/docs/5.3/forms/validation/https://getbootstrap.com/docs/5.3/getting-started/https://getbootstrap.com/docs/5.3/getting-started/accessibility/https://getbootstrap.com/docs/5.3/getting-started/best-practices/https://getbootstrap.com/docs/5.3/getting-started/browsers-devices/https://getbootstrap.com/docs/5.3/getting-started/build-tools/https://getbootstrap.com/docs/5.3/getting-started/contents/https://getbootstrap.com/docs/5.3/getting-started/contribute/https://getbootstrap.com/docs/5.3/getting-started/download/https://getbootstrap.com/docs/5.3/getting-started/introduction/https://getbootstrap.com/docs/5.3/getting-started/javascript/https://getbootstrap.com/docs/5.3/getting-started/parcel/https://getbootstrap.com/docs/5.3/getting-started/rfs/https://getbootstrap.com/docs/5.3/getting-started/rtl/https://getbootstrap.com/docs/5.3/getting-started/vite/https://getbootstrap.com/docs/5.3/getting-started/webpack/https://getbootstrap.com/docs/5.3/helpers/https://getbootstrap.com/docs/5.3/helpers/clearfix/https://getbootstrap.com/docs/5.3/helpers/color-background/https://getbootstrap.com/docs/5.3/helpers/colored-links/https://getbootstrap.com/docs/5.3/helpers/focus-ring/https://getbootstrap.com/docs/5.3/helpers/icon-link/https://getbootstrap.com/docs/5.3/helpers/position/https://getbootstrap.com/docs/5.3/helpers/ratio/https://getbootstrap.com/docs/5.3/helpers/screen-readers/https://getbootstrap.com/docs/5.3/helpers/stacks/https://getbootstrap.com/docs/5.3/helpers/stretched-link/https://getbootstrap.com/docs/5.3/helpers/text-truncation/https://getbootstrap.com/docs/5.3/helpers/vertical-rule/https://getbootstrap.com/docs/5.3/helpers/visually-hidden/https://getbootstrap.com/docs/5.3/layout/https://getbootstrap.com/docs/5.3/layout/breakpoints/https://getbootstrap.com/docs/5.3/layout/columns/https://getbootstrap.com/docs/5.3/layout/containers/https://getbootstrap.com/docs/5.3/layout/css-grid/https://getbootstrap.com/docs/5.3/layout/grid/https://getbootstrap.com/docs/5.3/layout/gutters/https://getbootstrap.com/docs/5.3/layout/utilities/https://getbootstrap.com/docs/5.3/layout/z-index/https://getbootstrap.com/docs/5.3/migration/https://getbootstrap.com/docs/5.3/utilities/https://getbootstrap.com/docs/5.3/utilities/api/https://getbootstrap.com/docs/5.3/utilities/background/https://getbootstrap.com/docs/5.3/utilities/borders/https://getbootstrap.com/docs/5.3/utilities/colors/https://getbootstrap.com/docs/5.3/utilities/display/https://getbootstrap.com/docs/5.3/utilities/flex/https://getbootstrap.com/docs/5.3/utilities/float/https://getbootstrap.com/docs/5.3/utilities/interactions/https://getbootstrap.com/docs/5.3/utilities/link/https://getbootstrap.com/docs/5.3/utilities/object-fit/https://getbootstrap.com/docs/5.3/utilities/opacity/https://getbootstrap.com/docs/5.3/utilities/overflow/https://getbootstrap.com/docs/5.3/utilities/position/https://getbootstrap.com/docs/5.3/utilities/shadows/https://getbootstrap.com/docs/5.3/utilities/sizing/https://getbootstrap.com/docs/5.3/utilities/spacing/https://getbootstrap.com/docs/5.3/utilities/text/https://getbootstrap.com/docs/5.3/utilities/vertical-align/https://getbootstrap.com/docs/5.3/utilities/visibility/https://getbootstrap.com/docs/5.3/utilities/z-index/https://getbootstrap.com/docs/getting-started/https://getbootstrap.com/docs/versions/https://getbootstrap.com/docsref/https://getbootstrap.com/examples/https://getbootstrap.com/getting-started/https://getbootstrap.com/migration/ \ No newline at end of file diff --git a/site/dist/sitemap-index.xml b/site/dist/sitemap-index.xml deleted file mode 100644 index 382f44104d..0000000000 --- a/site/dist/sitemap-index.xml +++ /dev/null @@ -1 +0,0 @@ -https://getbootstrap.com/sitemap-0.xml \ No newline at end of file diff --git a/site/dist/sw.js b/site/dist/sw.js deleted file mode 100644 index dcebfd2d67..0000000000 --- a/site/dist/sw.js +++ /dev/null @@ -1,27 +0,0 @@ -// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT -// IT'S ALL JUST JUNK FOR OUR DOCS! -// ++++++++++++++++++++++++++++++++++++++++++ - -(function () { - 'use strict' - - if ('serviceWorker' in navigator) { - window.addEventListener('load', function () { - navigator.serviceWorker.getRegistrations().then(function (registrations) { - for (var registration of registrations) { - registration.unregister() - .then(function () { - return self.clients.matchAll() - }) - .then(function (clients) { - clients.forEach(function (client) { - if (client.url && 'navigate' in client) { - client.navigate(client.url) - } - }) - }) - } - }) - }) - } -})() diff --git a/site/node_modules/.astro/data-store.json b/site/node_modules/.astro/data-store.json deleted file mode 100644 index 774b9899a4..0000000000 --- a/site/node_modules/.astro/data-store.json +++ /dev/null @@ -1 +0,0 @@ -[["Map",1,2,9,10,131,132],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.4.2","content-config-digest","55f4119cedb28735","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"site\":\"https://getbootstrap.com\",\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[]},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":\"prism\",\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[null,null,null],\"rehypePlugins\":[null,[null,{\"behavior\":\"append\",\"content\":[{\"type\":\"text\",\"value\":\" \"}],\"properties\":{\"class\":\"anchor-link\"}}],null],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":false},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false,\"serializeConfig\":false},\"legacy\":{\"collections\":false}}","callouts",["Map",11,12,26,27,41,42,56,57,71,72,86,87,101,102,116,117],"info-mediaqueries-breakpoints",{"id":11,"data":13,"body":14,"filePath":15,"digest":16,"rendered":17,"legacyId":25},{},"**Why subtract .02px?** Browsers don't currently support [range context queries](https://www.w3.org/TR/mediaqueries-4/#range-context), so we work around the limitations of [`min-` and `max-` prefixes](https://www.w3.org/TR/mediaqueries-4/#mq-min-max) and viewports with fractional widths (which can occur under certain conditions on high-dpi devices, for instance) by using values with higher precision.","src/content/callouts/info-mediaqueries-breakpoints.md","cf3c1ee7bdc70ef6",{"html":18,"metadata":19},"\u003Cp>\u003Cstrong>Why subtract .02px?\u003C/strong> Browsers don't currently support \u003Ca href=\"https://www.w3.org/TR/mediaqueries-4/#range-context\">range context queries\u003C/a>, so we work around the limitations of \u003Ca href=\"https://www.w3.org/TR/mediaqueries-4/#mq-min-max\">\u003Ccode>min-\u003C/code> and \u003Ccode>max-\u003C/code> prefixes\u003C/a> and viewports with fractional widths (which can occur under certain conditions on high-dpi devices, for instance) by using values with higher precision.\u003C/p>",{"headings":20,"localImagePaths":21,"remoteImagePaths":22,"frontmatter":23,"imagePaths":24},[],[],[],{},[],"info-mediaqueries-breakpoints.md","danger-async-methods",{"id":26,"data":28,"body":29,"filePath":30,"digest":31,"rendered":32,"legacyId":40},{},"**All API methods are asynchronous and start a transition.** They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. [Learn more in our JavaScript docs.](/docs/[[config:docs_version]]/getting-started/javascript/#asynchronous-functions-and-transitions)","src/content/callouts/danger-async-methods.md","9c0d127fac13cbab",{"html":33,"metadata":34},"\u003Cp>\u003Cstrong>All API methods are asynchronous and start a transition.\u003C/strong> They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. \u003Ca href=\"/docs/5.3/getting-started/javascript/#asynchronous-functions-and-transitions\">Learn more in our JavaScript docs.\u003C/a>\u003C/p>",{"headings":35,"localImagePaths":36,"remoteImagePaths":37,"frontmatter":38,"imagePaths":39},[],[],[],{},[],"danger-async-methods.md","info-sanitizer",{"id":41,"data":43,"body":44,"filePath":45,"digest":46,"rendered":47,"legacyId":55},{},"By default, this component uses the built-in content sanitizer, which strips out any HTML elements that are not explicitly allowed. See the [sanitizer section in our JavaScript documentation](/docs/[[config:docs_version]]/getting-started/javascript/#sanitizer) for more details.","src/content/callouts/info-sanitizer.md","223886390d6d5205",{"html":48,"metadata":49},"\u003Cp>By default, this component uses the built-in content sanitizer, which strips out any HTML elements that are not explicitly allowed. See the \u003Ca href=\"/docs/5.3/getting-started/javascript/#sanitizer\">sanitizer section in our JavaScript documentation\u003C/a> for more details.\u003C/p>",{"headings":50,"localImagePaths":51,"remoteImagePaths":52,"frontmatter":53,"imagePaths":54},[],[],[],{},[],"info-sanitizer.md","info-npm-starter",{"id":56,"data":58,"body":59,"filePath":60,"digest":61,"rendered":62,"legacyId":70},{},"**Get started with Bootstrap via npm with our starter project!** Head to the [Sass & JS example](https://github.com/twbs/examples/tree/main/sass-js) template repository to see how to build and customize Bootstrap in your own npm project. Includes Sass compiler, Autoprefixer, Stylelint, PurgeCSS, and Bootstrap Icons.","src/content/callouts/info-npm-starter.md","2f6e891b396b9472",{"html":63,"metadata":64},"\u003Cp>\u003Cstrong>Get started with Bootstrap via npm with our starter project!\u003C/strong> Head to the \u003Ca href=\"https://github.com/twbs/examples/tree/main/sass-js\">Sass & JS example\u003C/a> template repository to see how to build and customize Bootstrap in your own npm project. Includes Sass compiler, Autoprefixer, Stylelint, PurgeCSS, and Bootstrap Icons.\u003C/p>",{"headings":65,"localImagePaths":66,"remoteImagePaths":67,"frontmatter":68,"imagePaths":69},[],[],[],{},[],"info-npm-starter.md","warning-input-support",{"id":71,"data":73,"body":74,"filePath":75,"digest":76,"rendered":77,"legacyId":85},{},"Some date inputs types are [not fully supported](https://caniuse.com/input-datetime) by the latest versions of Safari and Firefox.","src/content/callouts/warning-input-support.md","2eff92fcab0109d0",{"html":78,"metadata":79},"\u003Cp>Some date inputs types are \u003Ca href=\"https://caniuse.com/input-datetime\">not fully supported\u003C/a> by the latest versions of Safari and Firefox.\u003C/p>",{"headings":80,"localImagePaths":81,"remoteImagePaths":82,"frontmatter":83,"imagePaths":84},[],[],[],{},[],"warning-input-support.md","info-prefersreducedmotion",{"id":86,"data":88,"body":89,"filePath":90,"digest":91,"rendered":92,"legacyId":100},{},"The animation effect of this component is dependent on the `prefers-reduced-motion` media query. See the [reduced motion section of our accessibility documentation](/docs/[[config:docs_version]]/getting-started/accessibility/#reduced-motion).","src/content/callouts/info-prefersreducedmotion.md","5d3fba76d4903cd2",{"html":93,"metadata":94},"\u003Cp>The animation effect of this component is dependent on the \u003Ccode>prefers-reduced-motion\u003C/code> media query. See the \u003Ca href=\"/docs/5.3/getting-started/accessibility/#reduced-motion\">reduced motion section of our accessibility documentation\u003C/a>.\u003C/p>",{"headings":95,"localImagePaths":96,"remoteImagePaths":97,"frontmatter":98,"imagePaths":99},[],[],[],{},[],"info-prefersreducedmotion.md","warning-color-assistive-technologies",{"id":101,"data":103,"body":104,"filePath":105,"digest":106,"rendered":107,"legacyId":115},{},"**Accessibility tip:** Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a [_sufficient_ color contrast](/docs/[[config:docs_version]]/getting-started/accessibility/#color-contrast)) or is included through alternative means, such as additional text hidden with the `.visually-hidden` class.","src/content/callouts/warning-color-assistive-technologies.md","8b6512e777588344",{"html":108,"metadata":109},"\u003Cp>\u003Cstrong>Accessibility tip:\u003C/strong> Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a \u003Ca href=\"/docs/5.3/getting-started/accessibility/#color-contrast\">\u003Cem>sufficient\u003C/em> color contrast\u003C/a>) or is included through alternative means, such as additional text hidden with the \u003Ccode>.visually-hidden\u003C/code> class.\u003C/p>",{"headings":110,"localImagePaths":111,"remoteImagePaths":112,"frontmatter":113,"imagePaths":114},[],[],[],{},[],"warning-color-assistive-technologies.md","warning-data-bs-title-vs-title",{"id":116,"data":118,"body":119,"filePath":120,"digest":121,"rendered":122,"legacyId":130},{},"Feel free to use either `title` or `data-bs-title` in your HTML. When `title` is used, Popper will replace it automatically with `data-bs-title` when the element is rendered.","src/content/callouts/warning-data-bs-title-vs-title.md","4166d28547478b6d",{"html":123,"metadata":124},"\u003Cp>Feel free to use either \u003Ccode>title\u003C/code> or \u003Ccode>data-bs-title\u003C/code> in your HTML. When \u003Ccode>title\u003C/code> is used, Popper will replace it automatically with \u003Ccode>data-bs-title\u003C/code> when the element is rendered.\u003C/p>",{"headings":125,"localImagePaths":126,"remoteImagePaths":127,"frontmatter":128,"imagePaths":129},[],[],[],{},[],"warning-data-bs-title-vs-title.md","docs",["Map",133,134,144,145,153,154,162,163,174,175,183,184,192,193,201,202,210,211,220,221,230,231,239,240,248,249,259,260,268,269,277,278,286,287,295,296,304,305,330,331,338,339,347,348,356,357,365,366,377,378,386,387,395,396,404,405,413,414,422,423,431,432,440,441,449,450,458,459,467,468,477,478,486,487,495,496,506,507,515,516,524,525,533,534,542,543,551,552,560,561,571,572,580,581,589,590,599,600,608,609,641,642,649,650,657,658,666,667,677,678,685,686,693,694,702,703,711,712,720,721,731,732,740,741,753,754,762,763,772,773,781,782,790,791,800,801,812,813,822,823,832,833,841,842,851,852,861,862,870,871,879,880,889,890,898,899,907,908,917,918,927,928,937,938,946,947,955,956,965,966,974,975,983,984,992,993,1001,1002,1011,1012,1020,1021,1029,1030,1038,1039,1047,1048,1056,1057,1065,1066,1074,1075,1084,1085,1094,1095,1104,1105,1113,1114,1121,1122,1130,1131,1139,1140,1148,1149,1157,1158,1166,1167,1175,1176],"docsref",{"id":133,"data":135,"body":140,"filePath":141,"digest":142,"legacyId":143,"deferredRender":139},{"aliases":136,"description":137,"title":138,"toc":139},"/docsref/","Examples of Bootstrap's documentation-specific components and styles.","Docs reference",true,"## Buttons\n\n\u003Cbutton class=\"btn btn-bd-primary\">Primary button\u003C/button>\n\u003Cbutton class=\"btn btn-bd-accent\">Accent button\u003C/button>\n\u003Cbutton class=\"btn btn-bd-light\">Light button\u003C/button>\n\n## Callouts\n\n\u003CCallout>\n Default callout\n\u003C/Callout>\n\n\u003CCallout type=\"warning\">\n Warning callout\n\u003C/Callout>\n\n\u003CCallout type=\"danger\">\n Danger callout\n\u003C/Callout>\n\n## Code example\n\n```scss\n.test {\n --color: blue;\n}\n```\n\n\u003Cdiv class=\"bd-example\">\n The \u003Cabbr title=\"HyperText Markup Language\">HTML\u003C/abbr> abbreviation element.\n\u003C/div>\n\n\u003CExample code={`\u003Cdiv class=\"test\">This is a test.\u003C/div>`} />\n\n\u003CScssDocs name=\"variable-gradient\" file=\"scss/_variables.scss\" />\n\n\u003CJsDocs name=\"live-toast\" file=\"site/src/assets/partials/snippets.js\" />","src/content/docs/docsref.mdx","d91e6f101bfa6222","docsref.mdx","about/brand",{"id":144,"data":146,"body":149,"filePath":150,"digest":151,"legacyId":152,"deferredRender":139},{"description":147,"title":148,"toc":139},"Documentation and examples for Bootstrap's logo and brand usage guidelines.","Brand guidelines","Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well.\n\n## Logo\n\nWhen referencing Bootstrap, use our logo mark. Do not modify our logos in any way. Do not use Bootstrap's branding for your own open or closed source projects.\n\n\u003Cdiv class=\"bd-brand-item px-2 py-5 mb-3 border rounded-3\">\n \u003Cimg class=\"d-block img-fluid mx-auto\" src=\"/docs/[[config:docs_version]]/assets/brand/bootstrap-logo.svg\" alt=\"Bootstrap\" width=\"256\" height=\"204\" />\n\u003C/div>\n\nOur logo mark is also available in black and white. All rules for our primary logo apply to these as well.\n\n\u003Cdiv class=\"bd-brand-logos d-sm-flex text-center bg-light rounded-3 overflow-hidden w-100 mb-3\">\n \u003Cdiv class=\"bd-brand-item w-100 px-2 py-5\">\n \u003Cimg src=\"/docs/[[config:docs_version]]/assets/brand/bootstrap-logo-black.svg\" alt=\"Bootstrap\" width=\"128\" height=\"102\" loading=\"lazy\" />\n \u003C/div>\n \u003Cdiv class=\"bd-brand-item w-100 px-2 py-5 inverse\">\n \u003Cimg src=\"/docs/[[config:docs_version]]/assets/brand/bootstrap-logo-white.svg\" alt=\"Bootstrap\" width=\"128\" height=\"102\" loading=\"lazy\" />\n \u003C/div>\n\u003C/div>\n\n## Name\n\nBootstrap should always be referred to as just **Bootstrap**. No capital _s_.\n\n\u003Cdiv class=\"bd-brand-logos d-sm-flex text-center border rounded-3 overflow-hidden w-100 mb-3\">\n \u003Cdiv class=\"bd-brand-item w-100 px-2 py-5\">\n \u003Cdiv class=\"h3\">Bootstrap\u003C/div>\n \u003Cstrong class=\"text-success\">Correct\u003C/strong>\n \u003C/div>\n \u003Cdiv class=\"bd-brand-item w-100 px-2 py-5\">\n \u003Cdiv class=\"h3 text-body-secondary\">BootStrap\u003C/div>\n \u003Cstrong class=\"text-danger\">Incorrect\u003C/strong>\n \u003C/div>\n\u003C/div>","src/content/docs/about/brand.mdx","96bb8191532b6d99","about/brand.mdx","about/license",{"id":153,"data":155,"body":158,"filePath":159,"digest":160,"legacyId":161,"deferredRender":139},{"description":156,"title":157},"Commonly asked questions about Bootstrap's open source license.","License FAQs","Bootstrap is released under the MIT license and is copyright {new Date().getFullYear()}. Boiled down to smaller chunks, it can be described with the following conditions.\n\n## It requires you to:\n\n- Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works\n\n## It permits you to:\n\n- Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes\n- Use Bootstrap in packages or distributions that you create\n- Modify the source code\n- Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license\n\n## It forbids you to:\n\n- Hold the authors and license owners liable for damages as Bootstrap is provided without warranty\n- Hold the creators or copyright holders of Bootstrap liable\n- Redistribute any piece of Bootstrap without proper attribution\n- Use any marks owned by Bootstrap in any way that might state or imply that Bootstrap endorses your distribution\n- Use any marks owned by Bootstrap in any way that might state or imply that you created the Bootstrap software in question\n\n## It does not require you to:\n\n- Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it\n- Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)\n\nThe full Bootstrap license is located [in the project repository]([[config:repo]]/blob/v[[config:current_version]]/LICENSE) for more information.","src/content/docs/about/license.mdx","4a117d7276c78a51","about/license.mdx","about/overview",{"id":162,"data":164,"body":170,"filePath":171,"digest":172,"legacyId":173,"deferredRender":139},{"aliases":165,"description":168,"title":169},[166,167],"/about/","/docs/[[config:docs_version]]/about/","Learn more about the team maintaining Bootstrap, how and why the project started, and how to get involved.","About Bootstrap","## Team\n\nBootstrap is maintained by a [small team of developers](https://github.com/orgs/twbs/people) on GitHub. We're actively looking to grow this team and would love to hear from you if you're excited about CSS at scale, writing and maintaining vanilla JavaScript plugins, and improving build tooling processes for frontend code.\n\n## History\n\nOriginally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world.\n\nBootstrap was created at Twitter in mid-2010 by [@mdo](https://twitter.com/mdo) and [@fat](https://twitter.com/fat). Prior to being an open-sourced framework, Bootstrap was known as _Twitter Blueprint_. A few months into development, Twitter held its [first Hack Week](https://blog.twitter.com/engineering/en_us/a/2010/hack-week) and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today.\n\nOriginally [released](https://blog.twitter.com/developer/en_us/a/2011/bootstrap-twitter) on \u003Ctime datetime=\"2011-08-19 11:25\">Friday, August 19, 2011\u003C/time>, we've since had over [twenty releases]([[config:repo]]/releases), including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach.\n\nWith Bootstrap 4, we once again rewrote the project to account for two key architectural changes: a migration to Sass and the move to CSS's flexbox. Our intention is to help in a small way to move the web development community forward by pushing for newer CSS properties, fewer dependencies, and new technologies across more modern browsers.\n\nOur latest release, Bootstrap 5, focuses on improving v4's codebase with as few major breaking changes as possible. We improved existing features and components, removed support for older browsers, dropped jQuery for regular JavaScript, and embraced more future-friendly technologies like CSS custom properties as part of our tooling.\n\n## Get involved\n\nGet involved with Bootstrap development by [opening an issue]([[config:repo]]/issues/new/choose) or submitting a pull request. Read our [contributing guidelines]([[config:repo]]/blob/v[[config:current_version]]/.github/CONTRIBUTING.md) for information on how we develop.","src/content/docs/about/overview.mdx","4b954ae8fb0dbc70","about/overview.mdx","content/figures",{"id":174,"data":176,"body":179,"filePath":180,"digest":181,"legacyId":182,"deferredRender":139},{"description":177,"title":178,"toc":139},"Documentation and examples for displaying related images and text with the figure component in Bootstrap.","Figures","Anytime you need to display a piece of content—like an image with an optional caption, consider using a `\u003Cfigure>`.\n\nUse the included `.figure`, `.figure-img` and `.figure-caption` classes to provide some baseline styles for the HTML5 `\u003Cfigure>` and `\u003Cfigcaption>` elements. Images in figures have no explicit size, so be sure to add the `.img-fluid` class to your `\u003Cimg>` to make it responsive.\n\n\u003CExample code={`\u003Cfigure class=\"figure\">\n \u003CPlaceholder width=\"400\" height=\"300\" class=\"figure-img img-fluid rounded\" />\n \u003Cfigcaption class=\"figure-caption\">A caption for the above image.\u003C/figcaption>\n\u003C/figure>`} />\n\nAligning the figure's caption is easy with our [text utilities]([[docsref:/utilities/text#text-alignment]]).\n\n\u003CExample code={`\u003Cfigure class=\"figure\">\n \u003CPlaceholder width=\"400\" height=\"300\" class=\"figure-img img-fluid rounded\" />\n \u003Cfigcaption class=\"figure-caption text-end\">A caption for the above image.\u003C/figcaption>\n\u003C/figure>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"figure-variables\" file=\"scss/_variables.scss\" />","src/content/docs/content/figures.mdx","8e9e02b0609a0ea1","content/figures.mdx","about/translations",{"id":183,"data":185,"body":188,"filePath":189,"digest":190,"legacyId":191,"deferredRender":139},{"description":186,"title":187},"Links to community-translated Bootstrap documentation sites.","Translations","import { getData } from '@libs/data'\n\nCommunity members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up-to-date.\n\n\u003Cul>\n {getData('translations').map((translation) => {\n return (\n \u003Cli>\u003Ca href={translation.url} hreflang={translation.code} lang={translation.code} >{translation.description} ({translation.name})\u003C/a>\u003C/li>\n )\n })}\n\u003C/ul>\n\n**We don't help organize or host translations, we just link to them.**\n\nFinished a new or better translation? Open a pull request to add it to our list.","src/content/docs/about/translations.mdx","d263fcb790208710","about/translations.mdx","about/team",{"id":192,"data":194,"body":197,"filePath":198,"digest":199,"legacyId":200,"deferredRender":139},{"description":195,"title":196},"An overview of the founding team and core contributors to Bootstrap.","Team","import { getData } from '@libs/data'\n\nBootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community.\n\n\u003Cdiv class=\"list-group mb-3\">\n {getData('core-team').map((member) => {\n return (\n \u003Ca class=\"list-group-item list-group-item-action d-flex align-items-center\" href={`https://github.com/${member.user}`}>\n \u003Cimg src={`https://github.com/${member.user}.png`} alt={`@${member.user}`} width=\"32\" height=\"32\" class=\"rounded me-2\" loading=\"lazy\"/>\n \u003Cspan>\n \u003Cstrong>{member.name}\u003C/strong> @{member.user}\n \u003C/span>\n \u003C/a>\n )\n })}\n\u003C/div>\n\nGet involved with Bootstrap development by [opening an issue]([[config:repo]]/issues/new/choose) or submitting a pull request. Read our [contributing guidelines]([[config:repo]]/blob/v[[config:current_version]]/.github/CONTRIBUTING.md) for information on how we develop.","src/content/docs/about/team.mdx","83c42af188b202dd","about/team.mdx","content/images",{"id":201,"data":203,"body":206,"filePath":207,"digest":208,"legacyId":209,"deferredRender":139},{"description":204,"title":205,"toc":139},"Documentation and examples for opting images into responsive behavior (so they never become wider than their parent) and add lightweight styles to them—all via classes.","Images","## Responsive images\n\nImages in Bootstrap are made responsive with `.img-fluid`. This applies `max-width: 100%;` and `height: auto;` to the image so that it scales with the parent width.\n\n\u003CExample code={`\u003CPlaceholder width=\"100%\" height=\"250\" class=\"bd-placeholder-img-lg img-fluid\" text=\"Responsive image\" />`} />\n\n## Image thumbnails\n\nIn addition to our [border-radius utilities]([[docsref:/utilities/borders]]), you can use `.img-thumbnail` to give an image a rounded 1px border appearance.\n\n\u003CExample code={`\u003CPlaceholder width=\"200\" height=\"200\" class=\"img-thumbnail\" title=\"A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera\" />`} />\n\n## Aligning images\n\nAlign images with the [helper float classes]([[docsref:/utilities/float]]) or [text alignment classes]([[docsref:/utilities/text#text-alignment]]). `block`-level images can be centered using [the `.mx-auto` margin utility class]([[docsref:/utilities/spacing#horizontal-centering]]).\n\n\u003CExample code={`\u003CPlaceholder width=\"200\" height=\"200\" class=\"rounded float-start\" />\n\u003CPlaceholder width=\"200\" height=\"200\" class=\"rounded float-end\" />`} />\n\n\n\u003CExample code={`\u003CPlaceholder width=\"200\" height=\"200\" class=\"rounded mx-auto d-block\" />`} />\n\n\u003CExample code={`\u003Cdiv class=\"text-center\">\n \u003CPlaceholder width=\"200\" height=\"200\" class=\"rounded\" />\n\u003C/div>`} />\n\n\n## Picture\n\nIf you are using the `\u003Cpicture>` element to specify multiple `\u003Csource>` elements for a specific `\u003Cimg>`, make sure to add the `.img-*` classes to the `\u003Cimg>` and not to the `\u003Cpicture>` tag.\n\n```html\n\u003Cpicture>\n \u003Csource srcset=\"...\" type=\"image/svg+xml\">\n \u003Cimg src=\"...\" class=\"img-fluid img-thumbnail\" alt=\"...\">\n\u003C/picture>\n```\n\n## CSS\n\n### Sass variables\n\nVariables are available for image thumbnails.\n\n\u003CScssDocs name=\"thumbnail-variables\" file=\"scss/_variables.scss\" />","src/content/docs/content/images.mdx","fc8e095236d90181","content/images.mdx","migration",{"id":210,"data":212,"body":216,"filePath":217,"digest":218,"legacyId":219,"deferredRender":139},{"aliases":213,"description":214,"title":215,"toc":139},"/migration/","Track and review changes to the Bootstrap source files, documentation, and components to help you migrate from v4 to v5.","Migrating to v5","## v5.3.4\n\n### Dependencies\n\n- Migrated from Hugo to Astro for building our documentation\n\n## v5.3.0\n\nIf you're migrating from our previous alpha releases of v5.3.0, please review their changes in addition to this section.\n\n### Helpers\n\n- [Colored links]([[docsref:/helpers/colored-links]]) once again have `!important` so they work better with our newly added link utilities.\n\n### Utilities\n\n- Added new `.d-inline-grid` [display utility]([[docsref:/utilities/display]]).\n\n## v5.3.0-alpha2\n\nIf you're migrating from our previous alpha release of v5.3.0, please review the changes listed below.\n\n### CSS variables\n\n- Removed several duplicate and unused root CSS variables.\n\n### Color modes\n\n- Dark mode colors are now derived from our theme colors (e.g., `$primary`) in Sass, rather than color specific tints or shades (e.g., `$blue-300`). This allows for a more automated dark mode when customizing the default theme colors.\n\n- Added Sass maps for generating theme colors for dark mode text, subtle background, and subtle border.\n\n- [Snippet examples]([[docsref:/examples/#snippets]]) are now ready for dark mode with updated markup and reduced custom styles.\n\n- Added `color-scheme: dark` to dark mode CSS to change OS level controls like scrollbars\n\n- Form validation `border-color` and text `color` states now respond to dark mode, thanks to new Sass and CSS variables.\n\n- Dropped recently added form control background CSS variables and reassigned the Sass variables to use CSS variables instead. This simplifies the styling across color modes and avoids an issue where form controls in dark mode wouldn't update properly.\n\n- Our `box-shadow`s will once again always stay dark instead of inverting to white when in dark mode.\n\n- Improved HTML and JavaScript for our color mode toggle script. The selector for changing the active SVG has been improved, and the markup made more accessible with ARIA attributes.\n\n- Improved docs code syntax colors and more across light and dark modes.\n\n### Typography\n\n- We no longer set a color for `$headings-color-dark` or `--bs-heading-color` for dark mode. To avoid several problems of headings within components appearing the wrong color, we've set the Sass variable to `null` and added a `null` check like we use on the default light mode.\n\n### Components\n\n- Cards now have a `color` set on them to improve rendering across color modes.\n\n- Added new `.nav-underline` variant for our navigation with a simpler bottom border under the active nav link. [See the docs for an example.]([[docsref:/components/navs-tabs#underline]])\n\n- Navs now have new `:focus-visible` styles that better match our custom button focus styles.\n\n### Helpers\n\n- Added new `.icon-link` helper to quickly place and align Bootstrap Icons alongside a textual link. Icon links support our new link utilities, too.\n\n- Added new focus ring helper for removing the default `outline` and setting a custom `box-shadow` focus ring.\n\n### Utilities\n\n- Renamed Sass and CSS variables `${color}-text` to `${color}-text-emphasis` to match their associated utilities.\n\n- Added new `.link-body-emphasis` helper alongside our [colored links]([[docsref:/helpers/colored-links]]). This creates a colored link using our color mode responsive emphasis color.\n\n- Added new link utilities for link color opacity, underline offset, underline color, and underline opacity. [Explore the new links utilities.]([[docsref:/utilities/link]])\n\n- CSS variable based `border-width` utilities have been reverted to set their property directly (as was done prior to v5.2.0). This avoids inheritance issues across nested elements, including tables.\n\n- Added new `.border-black` utility to match our `.text-black` and `.bg-black` utilities.\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> Deprecated the `.text-muted` utility and `$text-muted` Sass variable. It's been replaced by `.text-body-secondary` and `$body-secondary-color`.\n\n### Docs\n\n- Examples are now displayed with the appropriate light or dark color mode as dictated by the setting in our docs. Each example has an individual color mode picker.\n\n- Improved included JavaScript for live Toast demo.\n\n- Added `twbs/examples` repo contents to the top of the Examples page.\n\n### Tooling\n\n- Added SCSS testing via True to help test our utilities API and other customizations.\n\n- Replaced instances of our bootstrap-npm-starter project with the newer and more complete [twbs/examples repo](https://github.com/twbs/examples).\n\n\u003Chr class=\"mb-4\"/>\n\nFor a complete list of changes, [see the v5.3.0-alpha2 project on GitHub](https://github.com/orgs/twbs/projects/13).\n\n## v5.3.0-alpha1\n\n\u003Chr class=\"mb-4\"/>\n\n### Color modes!\n\nLearn more by reading the new [color modes documentation]([[docsref:/customize/color-modes]]).\n\n- **Global support for light (default) and dark color modes.** Set color mode globally on the `:root` element, on groups of elements and components with a wrapper class, or directly on components, with `data-bs-theme=\"light|dark\"`. Also included is a new `color-mode()` mixin that can output a ruleset with the `data-bs-theme` selector or a media query, depending on your preference.\n\n \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> Color modes replace dark variants for components, so `.btn-close-white`, `.carousel-dark`, `.dropdown-menu-dark`, and `.navbar-dark` are deprecated.\n\n- **New extended color system.** We've added new theme colors (but not in `$theme-colors`) for a more nuanced, system-wide color palette with new secondary, tertiary, and emphasis colors for `color` and `background-color`. These new colors are available as Sass variables, CSS variables, and utilities.\n\n- We've also expanded our theme color Sass variables, CSS variables, and utilities to include text emphasis, subtle background colors, and subtle border colors. These are available as Sass variables, CSS variables, and utilities.\n\n- Adds new `_variables-dark.scss` stylesheet to house dark-mode specific overrides. This stylesheet should be imported immediately after the existing `_variables.scss` file in your import stack.\n\n ```diff\n diff --git a/scss/bootstrap.scss b/scss/bootstrap.scss\n index 8f8296def..449d70487 100644\n --- a/scss/bootstrap.scss\n +++ b/scss/bootstrap.scss\n @@ -6,6 +6,7 @@\n // Configuration\n @import \"functions\";\n @import \"variables\";\n +@import \"variables-dark\";\n @import \"maps\";\n @import \"mixins\";\n @import \"utilities\";\n ```\n\n### CSS variables\n\n- Restores CSS variables for breakpoints, though we don't use them in our media queries as they're not supported. However, these can be useful in JS-specific contexts.\n\n- Per the color modes update, we've added new utilities for new Sass CSS variables `secondary` and `tertiary` text and background colors, plus `{color}-bg-subtle`, `{color}-border-subtle`, and `{color}-text-emphasis` for our theme colors. These new colors are available through Sass and CSS variables (but not our color maps) with the express goal of making it easier to customize across multiple colors modes like light and dark.\n\n- Adds additional variables for alerts, `.btn-close`, and `.offcanvas`.\n\n- The `--bs-heading-color` variable is back with an update and dark mode support. First, we now check for a `null` value on the associated Sass variable, `$headings-color`, before trying to output the CSS variable, so by default it's not present in our compiled CSS. Second, we use the CSS variable with a fallback value, `inherit`, allowing the original behavior to persist, but also allowing for overrides.\n\n- Converts links to use CSS variables for styling `color`, but not `text-decoration`. Colors are now set with `--bs-link-color-rgb` and `--bs-link-opacity` as `rgba()` color, allowing you to customize the translucency with ease. The `a:hover` pseudo-class now overrides `--bs-link-color-rgb` instead of explicitly setting the `color` property.\n\n- `--bs-border-width` is now being used in more components for greater control over default global styling.\n\n- Adds new root CSS variables for our `box-shadow`s, including `--bs-box-shadow`, `--bs-box-shadow-sm`, `--bs-box-shadow-lg`, and `--bs-box-shadow-inset`.\n\n### Components\n\n#### Alert\n\n- Alert variants are now styled via CSS variables.\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `alert-variant()` mixin is now deprecated. We now [use a Sass loop]([[docsref:/components/alerts#sass-loops]]) directly to modify the component's default CSS variables for each variant.\n\n#### List group\n\n- List group item variants are now styled via CSS variables.\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `list-group-item-variant()` mixin is now deprecated. We now [use a Sass loop]([[docsref:/components/list-group#sass-loops]]) directly to modify the component's default CSS variables for each variant.\n\n#### Dropdowns\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `.dropdown-menu-dark` class has been deprecated and replaced with `data-bs-theme=\"dark\"` on the dropdown or any parent element. [See the docs for an example.]([[docsref:/components/dropdowns#dark-dropdowns]])\n\n#### Close button\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `.btn-close-white` class has been deprecated and replaced with `data-bs-theme=\"dark\"` on the close button or any parent element. [See the docs for an example.]([[docsref:/components/close-button#dark-variant]])\n\n#### Navbar\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> The `.navbar-dark` class has been deprecated and replaced with `data-bs-theme=\"dark\"` on the navbar or any parent element. [See the docs for updated examples.]([[docsref:/components/navbar#color-schemes]])\n\n### Progress bars\n\nThe markup for [progress bars]([[docsref:/components/progress]]) has been updated in v5.3.0. Due to the placement of `role` and various `aria-` attributes on the inner `.progress-bar` element, **some screen readers were not announcing zero value progress bars**. Now, `role=\"progressbar\"` and the relevant `aria-*` attributes are on the outer `.progress` element, leaving the `.progress-bar` purely for the visual presentation of the bar and optional label.\n\nWhile we recommend adopting the new markup for improved compatibility with all screen readers, note that the legacy progress bar structure will continue to work as before.\n\n```html\n\u003C!-- Previous markup -->\n\u003Cdiv class=\"progress\">\n \u003Cdiv class=\"progress-bar\" role=\"progressbar\" aria-label=\"Basic example\" style=\"width: 25%\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\u003C/div>\n\u003C/div>\n\n\u003C!-- New markup -->\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n```\n\nWe've also introduced a new `.progress-stacked` class to more logically wrap [multiple progress bars]([[docsref:/components/progress#multiple-bars]]) into a single stacked progress bar.\n\n```html\n\u003C!-- Previous markup -->\n\u003Cdiv class=\"progress\">\n \u003Cdiv class=\"progress-bar\" role=\"progressbar\" aria-label=\"Segment one\" style=\"width: 15%\" aria-valuenow=\"15\" aria-valuemin=\"0\" aria-valuemax=\"100\">\u003C/div>\n \u003Cdiv class=\"progress-bar bg-success\" role=\"progressbar\" aria-label=\"Segment two\" style=\"width: 30%\" aria-valuenow=\"30\" aria-valuemin=\"0\" aria-valuemax=\"100\">\u003C/div>\n \u003Cdiv class=\"progress-bar bg-info\" role=\"progressbar\" aria-label=\"Segment three\" style=\"width: 20%\" aria-valuenow=\"20\" aria-valuemin=\"0\" aria-valuemax=\"100\">\u003C/div>\n\u003C/div>\n\n\u003C!-- New markup -->\n\u003Cdiv class=\"progress-stacked\">\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment one\" aria-valuenow=\"15\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 15%\">\n \u003Cdiv class=\"progress-bar\">\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment two\" aria-valuenow=\"30\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 30%\">\n \u003Cdiv class=\"progress-bar bg-success\">\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment three\" aria-valuenow=\"20\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 20%\">\n \u003Cdiv class=\"progress-bar bg-info\">\u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Forms\n\n- `.form-control` is now styled with CSS variables to support color modes. This includes the addition of two new root CSS variables for the default and disabled form control backgrounds.\n\n- `.form-check` and `.form-switch` components are now built with CSS variables for setting the `background-image`. The usage here differs from other components in that the various focus, active, etc states for each component aren't set on the base class. Instead, the states override one variable (e.g., `--bs-form-switch-bg`).\n\n- Floating form labels now have a `background-color` to fix support for `\u003Ctextarea>` elements. Additional changes have been made to also support disabled states and more.\n\n- Fixed display of date and time inputs in WebKit based browsers.\n\n### Utilities\n\n- \u003Cspan class=\"badge text-warning-emphasis bg-warning-subtle\">Deprecated\u003C/span> `.text-muted` will be replaced by `.text-body-secondary` in v6.\n\n With the addition of the expanded theme colors and variables, the `.text-muted` variables and utility have been deprecated with v5.3.0. Its default value has also been reassigned to the new `--bs-secondary-color` CSS variable to better support color modes. It will be removed in v6.0.0.\n\n- Adds new `.overflow-x`, `.overflow-y`, and several `.object-fit-*` utilities. _The object-fit property is used to specify how an `\u003Cimg>` or `\u003Cvideo>` should be resized to fit its container, giving us a responsive alternative to using `background-image` for a resizable fill/fit image._\n\n- Adds new `.fw-medium` utility.\n\n- Added new [`.z-*` utilities]([[docsref:/utilities/z-index]]) for `z-index`.\n\n- [Box shadow utilities]([[docsref:/utilities/shadows]]) (and Sass variables) have been updated for dark mode. They now use `--bs-body-color-rgb` to generate the `rgba()` color values, allowing them to easily adapt to color modes based on the specified foreground color.\n\nFor a complete list of changes, [see the v5.3.0 project on GitHub](https://github.com/twbs/bootstrap/projects/).\n\n## v5.2.0\n\n\u003Chr class=\"mb-4\"/>\n\n### Refreshed design\n\nBootstrap v5.2.0 features a subtle design update for a handful of components and properties across the project, **most notably through refined `border-radius` values on buttons and form controls**. Our documentation also has been updated with a new homepage, simpler docs layout that no longer collapses sections of the sidebar, and more prominent examples of [Bootstrap Icons](https://icons.getbootstrap.com).\n\n### More CSS variables\n\n**We've updated all our components to use CSS variables.** While Sass still underpins everything, each component has been updated to include CSS variables on the component base classes (e.g., `.btn`), allowing for more real-time customization of Bootstrap. In subsequent releases, we'll continue to expand our use of CSS variables into our layout, forms, helpers, and utilities. Read more about CSS variables in each component on their respective documentation pages.\n\nOur CSS variable usage will be somewhat incomplete until Bootstrap 6. While we'd love to fully implement these across the board, they do run the risk of causing breaking changes. For example, setting `$alert-border-width: var(--bs-border-width)` in our source code breaks potential Sass in your own code if you were doing `$alert-border-width * 2` for some reason.\n\nAs such, wherever possible, we will continue to push towards more CSS variables, but please recognize our implementation may be slightly limited in v5.\n\n### New `_maps.scss`\n\n**Bootstrap v5.2.0 introduced a new Sass file with `_maps.scss`.** It pulls out several Sass maps from `_variables.scss` to fix an issue where updates to an original map were not applied to secondary maps that extend them. For example, updates to `$theme-colors` were not being applied to other theme maps that relied on `$theme-colors`, breaking key customization workflows. In short, Sass has a limitation where once a default variable or map has been _used_, it cannot be updated. _There's a similar shortcoming with CSS variables when they're used to compose other CSS variables._\n\nThis is why variable customizations in Bootstrap have to come after `@import \"functions\"`, but before `@import \"variables\"` and the rest of our import stack. The same applies to Sass maps—you must override the defaults before they get used. The following maps have been moved to the new `_maps.scss`:\n\n- `$theme-colors-rgb`\n- `$utilities-colors`\n- `$utilities-text`\n- `$utilities-text-colors`\n- `$utilities-bg`\n- `$utilities-bg-colors`\n- `$negative-spacers`\n- `$gutters`\n\nYour custom Bootstrap CSS builds should now look something like this with a separate maps import.\n\n```diff\n // Functions come first\n @import \"functions\";\n\n // Optional variable overrides here\n+ $custom-color: #df711b;\n+ $custom-theme-colors: (\n+ \"custom\": $custom-color\n+ );\n\n // Variables come next\n @import \"variables\";\n\n+ // Optional Sass map overrides here\n+ $theme-colors: map-merge($theme-colors, $custom-theme-colors);\n+\n+ // Followed by our default maps\n+ @import \"maps\";\n+\n // Rest of our imports\n @import \"mixins\";\n @import \"utilities\";\n @import \"root\";\n @import \"reboot\";\n // etc\n```\n\n### New utilities\n\n- Expanded [`font-weight` utilities]([[docsref:/utilities/text#font-weight-and-italics]]) to include `.fw-semibold` for semibold fonts.\n- Expanded [`border-radius` utilities]([[docsref:/utilities/borders#sizes]]) to include two new sizes, `.rounded-4` and `.rounded-5`, for more options.\n\n### Additional changes\n\n- **Introduced new `$enable-container-classes` option. —** Now when opting into the experimental CSS Grid layout, `.container-*` classes will still be compiled, unless this option is set to `false`. Containers also now keep their gutter values.\n\n- **Offcanvas component now has [responsive variations]([[docsref:/components/offcanvas#responsive]]).** The original `.offcanvas` class remains unchanged—it hides content across all viewports. To make it responsive, change that `.offcanvas` class to any `.offcanvas-{sm|md|lg|xl|xxl}` class.\n\n- **Thicker table dividers are now opt-in. —** We've removed the thicker and more difficult to override border between table groups and moved it to an optional class you can apply, `.table-group-divider`. [See the table docs for an example.]([[docsref:/content/tables#table-group-dividers]])\n\n- **[Scrollspy has been rewritten](https://github.com/twbs/bootstrap/pull/33421) to use the Intersection Observer API**, which means you no longer need relative parent wrappers, deprecates `offset` config, and more. Look for your Scrollspy implementations to be more accurate and consistent in their nav highlighting.\n\n- **Popovers and tooltips now use CSS variables.** Some CSS variables have been updated from their Sass counterparts to reduce the number of variables. As a result, three variables have been deprecated in this release: `$popover-arrow-color`, `$popover-arrow-outer-color`, and `$tooltip-arrow-color`.\n\n- **Added new `.text-bg-{color}` helpers.** Instead of setting individual `.text-*` and `.bg-*` utilities, you can now use [the `.text-bg-*` helpers]([[docsref:helpers/color-background]]) to set a `background-color` with contrasting foreground `color`.\n\n- Added `.form-check-reverse` modifier to flip the order of labels and associated checkboxes/radios.\n\n- Added [striped columns]([[docsref:/content/tables#striped-columns]]) support to tables via the new `.table-striped-columns` class.\n\nFor a complete list of changes, [see the v5.2.0 project on GitHub](https://github.com/twbs/bootstrap/projects/32).\n\n## v5.1.0\n\n\u003Chr class=\"mb-4\"/>\n\n- **Added experimental support for [CSS Grid layout]([[docsref:/layout/css-grid]]). —** This is a work in progress, and is not yet ready for production use, but you can opt into the new feature via Sass. To enable it, disable the default grid, by setting `$enable-grid-classes: false` and enable the CSS Grid by setting `$enable-cssgrid: true`.\n\n- **Updated navbars to support offcanvas. —** Add [offcanvas drawers in any navbar]([[docsref:/components/navbar#offcanvas]]) with the responsive `.navbar-expand-*` classes and some offcanvas markup.\n\n- **Added new [placeholder component]([[docsref:/components/placeholders/]]). —** Our newest component, a way to provide temporary blocks in lieu of real content to help indicate that something is still loading in your site or app.\n\n- **Collapse plugin now supports [horizontal collapsing]([[docsref:/components/collapse#horizontal]]). —** Add `.collapse-horizontal` to your `.collapse` to collapse the `width` instead of the `height`. Avoid browser repainting by setting a `min-height` or `height`.\n\n- **Added new stack and vertical rule helpers. —** Quickly apply multiple flexbox properties to quickly create custom layouts with [stacks]([[docsref:/helpers/stacks/]]). Choose from horizontal (`.hstack`) and vertical (`.vstack`) stacks. Add vertical dividers similar to `\u003Chr>` elements with the [new `.vr` helpers]([[docsref:/helpers/vertical-rule/]]).\n\n- **Added new global `:root` CSS variables. —** Added several new CSS variables to the `:root` level for controlling `\u003Cbody>` styles. More are in the works, including across our utilities and components, but for now read up [CSS variables in the Customize section]([[docsref:/customize/css-variables/]]).\n\n- **Overhauled color and background utilities to use CSS variables, and added new [text opacity]([[docsref:/utilities/text#opacity]]) and [background opacity]([[docsref:/utilities/background#opacity]]) utilities. —** `.text-*` and `.bg-*` utilities are now built with CSS variables and `rgba()` color values, allowing you to easily customize any utility with new opacity utilities.\n\n- **Added new snippet examples based to show how to customize our components. —** Pull ready to use customized components and other common design patterns with our new [Snippets examples]([[docsref:/examples/#snippets]]). Includes [footers]([[docsref:/examples/footers/]]), [dropdowns]([[docsref:/examples/dropdowns/]]), [list groups]([[docsref:/examples/list-groups/]]), and [modals]([[docsref:/examples/modals/]]).\n\n- **Removed unused positioning styles from popovers and tooltips** as these are handled solely by Popper. `$tooltip-margin` has been deprecated and set to `null` in the process.\n\nWant more information? [Read the v5.1.0 blog post.](https://blog.getbootstrap.com/2021/08/04/bootstrap-5-1-0/)\n\n## v5.0.0\n\n\u003Chr class=\"mb-4\"/>\n\n\u003CCallout>\n**Hey there!** Changes to our first major release of Bootstrap 5, v5.0.0, are documented below. They don't reflect the additional changes shown above.\n\u003C/Callout>\n\n### Dependencies\n\n- Dropped jQuery.\n- Upgraded from Popper v1.x to Popper v2.x.\n- Replaced Libsass with Dart Sass as our Sass compiler given Libsass was deprecated.\n- Migrated from Jekyll to Hugo for building our documentation\n\n### Browser support\n\n- Dropped Internet Explorer 10 and 11\n- Dropped Microsoft Edge \u003C 16 (Legacy Edge)\n- Dropped Firefox \u003C 60\n- Dropped Safari \u003C 12\n- Dropped iOS Safari \u003C 12\n- Dropped Chrome \u003C 60\n\n\u003Chr class=\"my-5\"/>\n\n### Documentation changes\n\n- Redesigned homepage, docs layout, and footer.\n- Added [new Parcel guide]([[docsref:/getting-started/parcel]]).\n- Added [new Customize section]([[docsref:/customize/overview]]), replacing [v4's Theming page](https://getbootstrap.com/docs/4.6/getting-started/theming/), with new details on Sass, global configuration options, color schemes, CSS variables, and more.\n- Reorganized all form documentation into [new Forms section]([[docsref:/forms/overview]]), breaking apart the content into more focused pages.\n- Similarly, updated [the Layout section]([[docsref:/layout/breakpoints]]), to flesh out grid content more clearly.\n- Renamed \"Navs\" component page to \"Navs & Tabs\".\n- Renamed \"Checks\" page to \"Checks & radios\".\n- Redesigned the navbar and added a new subnav to make it easier to get around our sites and docs versions.\n- Added new keyboard shortcut for the search field: \u003Ckbd>\u003Ckbd>Ctrl\u003C/kbd> + \u003Ckbd>/\u003C/kbd>\u003C/kbd>.\n\n### Sass\n\n- We've ditched the default Sass map merges to make it easier to remove redundant values. Keep in mind you now have to define all values in the Sass maps like `$theme-colors`. Check out how to deal with [Sass maps]([[docsref:/customize/sass#maps-and-loops]]).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `color-yiq()` function and related variables to `color-contrast()` as it's no longer related to YIQ color space. [See #30168.](https://github.com/twbs/bootstrap/pull/30168/)\n - `$yiq-contrasted-threshold` is renamed to `$min-contrast-ratio`.\n - `$yiq-text-dark` and `$yiq-text-light` are respectively renamed to `$color-contrast-dark` and `$color-contrast-light`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Media query mixins parameters have changed for a more logical approach.\n - `media-breakpoint-down()` uses the breakpoint itself instead of the next breakpoint (e.g., `media-breakpoint-down(lg)` instead of `media-breakpoint-down(md)` targets viewports smaller than `lg`).\n - Similarly, the second parameter in `media-breakpoint-between()` also uses the breakpoint itself instead of the next breakpoint (e.g., `media-breakpoint-between(sm, lg)` instead of `media-breakpoint-between(sm, md)` targets viewports between `sm` and `lg`).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed print styles and `$enable-print-styles` variable. Print display classes are still around. [See #28339](https://github.com/twbs/bootstrap/pull/28339).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `color()`, `theme-color()`, and `gray()` functions in favor of variables. [See #29083](https://github.com/twbs/bootstrap/pull/29083).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `theme-color-level()` function to `color-level()` and now accepts any color you want instead of only `$theme-color` colors. [See #29083](https://github.com/twbs/bootstrap/pull/29083) **Watch out:** `color-level()` was later on dropped in `v5.0.0-alpha3`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `$enable-prefers-reduced-motion-media-query` and `$enable-pointer-cursor-for-buttons` to `$enable-reduced-motion` and `$enable-button-pointers` for brevity.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed the `bg-gradient-variant()` mixin. Use the `.bg-gradient` class to add gradients to elements instead of the generated `.bg-gradient-*` classes.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Removed previously deprecated mixins:**\n - `hover`, `hover-focus`, `plain-hover-focus`, and `hover-focus-active`\n - `float()`\n - `form-control-mixin()`\n - `nav-divider()`\n - `retina-img()`\n - `text-hide()` (also dropped the associated utility class, `.text-hide`)\n - `visibility()`\n - `form-control-focus()`\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `scale-color()` function to `shift-color()` to avoid collision with Sass's own color scaling function.\n\n- `box-shadow` mixins now allow `null` values and drop `none` from multiple arguments. [See #30394](https://github.com/twbs/bootstrap/pull/30394).\n\n- The `border-radius()` mixin now has a default value.\n\n### Color system\n\n- The color system which worked with `color-level()` and `$theme-color-interval` was removed in favor of a new color system. All `lighten()` and `darken()` functions in our codebase are replaced by `tint-color()` and `shade-color()`. These functions will mix the color with either white or black instead of changing its lightness by a fixed amount. The `shift-color()` will either tint or shade a color depending on whether its weight parameter is positive or negative. [See #30622](https://github.com/twbs/bootstrap/pull/30622) for more details.\n\n- Added new tints and shades for every color, providing nine separate colors for each base color, as new Sass variables.\n\n- Improved color contrast. Bumped color contrast ratio from 3:1 to 4.5:1 and updated blue, green, cyan, and pink colors to ensure WCAG 2.2 AA contrast. Also changed our color contrast color from `$gray-900` to `$black`.\n\n- To support our color system, we've added new custom `tint-color()` and `shade-color()` functions to mix our colors appropriately.\n\n### Grid updates\n\n- **New breakpoint!** Added new `xxl` breakpoint for `1400px` and up. No changes to all other breakpoints.\n\n- **Improved gutters.** Gutters are now set in rems, and are narrower than v4 (`1.5rem`, or about `24px`, down from `30px`). This aligns our grid system's gutters with our spacing utilities.\n - Added new [gutter class]([[docsref:/layout/gutters]]) (`.g-*`, `.gx-*`, and `.gy-*`) to control horizontal/vertical gutters, horizontal gutters, and vertical gutters.\n - \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.no-gutters` to `.g-0` to match new gutter utilities.\n\n- Columns no longer have `position: relative` applied, so you may have to add `.position-relative` to some elements to restore that behavior.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped several `.order-*` classes that often went unused. We now only provide `.order-0` to `.order-5` out of the box.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped the `.media` component as it can be easily replicated with utilities. [See #28265](https://github.com/twbs/bootstrap/pull/28265) and the [flex utilities page for an example]([[docsref:/utilities/flex#media-object]]).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> `bootstrap-grid.css` now only applies `box-sizing: border-box` to the column instead of resetting the global box-sizing. This way, our grid styles can be used in more places without interference.\n\n- `$enable-grid-classes` no longer disables the generation of container classes anymore. [See #29146.](https://github.com/twbs/bootstrap/pull/29146)\n\n- Updated the `make-col` mixin to default to equal columns without a specified size.\n\n### Content, Reboot, etc\n\n- **[RFS]([[docsref:/getting-started/rfs]]) is now enabled by default.** Headings using the `font-size()` mixin will automatically adjust their `font-size` to scale with the viewport. _This feature was previously opt-in with v4._\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Overhauled our display typography to replace our `$display-*` variables and with a `$display-font-sizes` Sass map. Also removed the individual `$display-*-weight` variables for a single `$display-font-weight` and adjusted `font-size`s.\n\n- Added two new `.display-*` heading sizes, `.display-5` and `.display-6`.\n\n- **Links are underlined by default** (not just on hover), unless they're part of specific components.\n\n- **Redesigned tables** to refresh their styles and rebuild them with CSS variables for more control over styling.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Nested tables do not inherit styles anymore.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> `.thead-light` and `.thead-dark` are dropped in favor of the `.table-*` variant classes which can be used for all table elements (`thead`, `tbody`, `tfoot`, `tr`, `th` and `td`).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> The `table-row-variant()` mixin is renamed to `table-variant()` and accepts only 2 parameters: `$color` (color name) and `$value` (color code). The border color and accent colors are automatically calculated based on the table factor variables.\n\n- Split table cell padding variables into `-y` and `-x`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.pre-scrollable` class. [See #29135](https://github.com/twbs/bootstrap/pull/29135)\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> `.text-*` utilities do not add hover and focus states to links anymore. `.link-*` helper classes can be used instead. [See #29267](https://github.com/twbs/bootstrap/pull/29267)\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.text-justify` class. [See #29793](https://github.com/twbs/bootstrap/pull/29793)\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> ~~`\u003Chr>` elements now use `height` instead of `border` to better support the `size` attribute. This also enables use of padding utilities to create thicker dividers (e.g., `\u003Chr class=\"py-1\">`).~~\n\n- Reset default horizontal `padding-left` on `\u003Cul>` and `\u003Col>` elements from browser default `40px` to `2rem`.\n\n- Added `$enable-smooth-scroll`, which applies `scroll-behavior: smooth` globally—except for users asking for reduced motion through `prefers-reduced-motion` media query. [See #31877](https://github.com/twbs/bootstrap/pull/31877)\n\n### RTL\n\n- Horizontal direction specific variables, utilities, and mixins have all been renamed to use logical properties like those found in flexbox layouts—e.g., `start` and `end` in lieu of `left` and `right`.\n\n### Forms\n\n- **Added new floating forms!** We've promoted the Floating labels example to fully supported form components. [See the new Floating labels page.]([[docsref:/forms/floating-labels]])\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Consolidated native and custom form elements.** Checkboxes, radios, selects, and other inputs that had native and custom classes in v4 have been consolidated. Now nearly all our form elements are entirely custom, most without the need for custom HTML.\n - `.custom-control.custom-checkbox` is now `.form-check`.\n - `.custom-control.custom-radio` is now `.form-check`.\n - `.custom-control.custom-switch` is now `.form-check.form-switch`.\n - `.custom-select` is now `.form-select`.\n - `.custom-file` and `.form-control-file` have been replaced by custom styles on top of `.form-control`.\n - `.custom-range` is now `.form-range`.\n - Dropped native `.form-control-file` and `.form-control-range`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.input-group-append` and `.input-group-prepend`. You can now just add buttons and `.input-group-text` as direct children of the input groups.\n\n- The longstanding [Missing border radius on input group with validation feedback bug](https://github.com/twbs/bootstrap/issues/25110) is finally fixed by adding an additional `.has-validation` class to input groups with validation.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Dropped form-specific layout classes for our grid system.** Use our grid and utilities instead of `.form-group`, `.form-row`, or `.form-inline`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Form labels now require `.form-label`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> `.form-text` no longer sets `display`, allowing you to create inline or block help text as you wish just by changing the HTML element.\n\n- Form controls no longer used fixed `height` when possible, instead deferring to `min-height` to improve customization and compatibility with other components.\n\n- Validation icons are no longer applied to `\u003Cselect>`s with `multiple`.\n\n- Rearranged source Sass files under `scss/forms/`, including input group styles.\n\n\u003Chr class=\"my-5\"/>\n\n### Components\n\n- Unified `padding` values for alerts, breadcrumbs, cards, dropdowns, list groups, modals, popovers, and tooltips to be based on our `$spacer` variable. [See #30564](https://github.com/twbs/bootstrap/pull/30564).\n\n#### Accordion\n\n- Added [new accordion component]([[docsref:/components/accordion]]).\n\n#### Alerts\n\n- Alerts now have [examples with icons]([[docsref:/components/alerts#icons]]).\n\n- Removed custom styles for `\u003Chr>`s in each alert since they already use `currentColor`.\n\n#### Badges\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped all `.badge-*` color classes for background utilities (e.g., use `.bg-primary` instead of `.badge-primary`).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.badge-pill`—use the `.rounded-pill` utility instead.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed hover and focus styles for `\u003Ca>` and `\u003Cbutton>` elements.\n\n- Increased default padding for badges from `.25em`/`.5em` to `.35em`/`.65em`.\n\n#### Breadcrumbs\n\n- Simplified the default appearance of breadcrumbs by removing `padding`, `background-color`, and `border-radius`.\n\n- Added new CSS custom property `--bs-breadcrumb-divider` for easy customization without needing to recompile CSS.\n\n#### Buttons\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **[Toggle buttons]([[docsref:/forms/checks-radios#toggle-buttons]]), with checkboxes or radios, no longer require JavaScript and have new markup.** We no longer require a wrapping element, add `.btn-check` to the `\u003Cinput>`, and pair it with any `.btn` classes on the `\u003Clabel>`. [See #30650](https://github.com/twbs/bootstrap/pull/30650). _The docs for this has moved from our Buttons page to the new Forms section._\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Dropped `.btn-block` for utilities.** Instead of using `.btn-block` on the `.btn`, wrap your buttons with `.d-grid` and a `.gap-*` utility to space them as needed. Switch to responsive classes for even more control over them. [Read the docs for some examples.]([[docsref:/components/buttons#block-buttons]])\n\n- Updated our `button-variant()` and `button-outline-variant()` mixins to support additional parameters.\n\n- Updated buttons to ensure increased contrast on hover and active states.\n\n- Disabled buttons now have `pointer-events: none;`.\n\n#### Card\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.card-deck` in favor of our grid. Wrap your cards in column classes and add a parent `.row-cols-*` container to recreate card decks (but with more control over responsive alignment).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `.card-columns` in favor of Masonry. [See #28922](https://github.com/twbs/bootstrap/pull/28922).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Replaced the `.card` based accordion with a [new Accordion component]([[docsref:/components/accordion]]).\n\n#### Carousel\n\n- Added new [`.carousel-dark` variant]([[docsref:/components/carousel#dark-variant]]) for dark text, controls, and indicators (great for lighter backgrounds).\n\n- Replaced chevron icons for carousel controls with new SVGs from [Bootstrap Icons]([[config:icons]]).\n\n#### Close button\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.close` to `.btn-close` for a less generic name.\n\n- Close buttons now use a `background-image` (embedded SVG) instead of a `×` in the HTML, allowing for easier customization without the need to touch your markup.\n\n- Added new `.btn-close-white` variant that uses `filter: invert(1)` to enable higher contrast dismiss icons against darker backgrounds.\n\n#### Collapse\n\n- Removed scroll anchoring for accordions.\n\n#### Dropdowns\n\n- Added new `.dropdown-menu-dark` variant and associated variables for on-demand dark dropdowns.\n\n- Added new variable for `$dropdown-padding-x`.\n\n- Darkened the dropdown divider for improved contrast.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> All the events for the dropdown are now triggered on the dropdown toggle button and then bubbled up to the parent element.\n\n- Dropdown menus now have a `data-bs-popper=\"static\"` attribute set when the positioning of the dropdown is static, or dropdown is in the navbar. This is added by our JavaScript and helps us use custom position styles without interfering with Popper's positioning.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped `flip` option for dropdown plugin in favor of native Popper configuration. You can now disable the flipping behavior by passing an empty array for [`fallbackPlacements`](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) option in [flip](https://popper.js.org/docs/v2/modifiers/flip/) modifier.\n\n- Dropdown menus can now be clickable with a new `autoClose` option to handle the [auto close behavior]([[docsref:/components/dropdowns#auto-close-behavior]]). You can use this option to accept the click inside or outside the dropdown menu to make it interactive.\n\n- Dropdowns now support `.dropdown-item`s wrapped in `\u003Cli>`s.\n\n#### Jumbotron\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Dropped the jumbotron component as it can be replicated with utilities. [See our new Jumbotron example for a demo.]([[docsref:/examples/jumbotron]])\n\n#### List group\n\n- Added new [`.list-group-numbered` modifier]([[docsref:/components/list-group#numbered]]) to list groups.\n\n#### Navs and tabs\n\n- Added new `null` variables for `font-size`, `font-weight`, `color`, and `:hover` `color` to the `.nav-link` class.\n\n#### Navbars\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Navbars now require a container within (to drastically simplify spacing requirements and CSS required).\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> The `.active` class can no longer be applied to `.nav-item`s, it must be applied directly on `.nav-link`s.\n\n#### Offcanvas\n\n- Added the new [offcanvas component]([[docsref:/components/offcanvas]]).\n\n#### Pagination\n\n- Pagination links now have customizable `margin-left` that are dynamically rounded on all corners when separated from one another.\n\n- Added `transition`s to pagination links.\n\n#### Popovers\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.arrow` to `.popover-arrow` in our default popover template.\n\n- Renamed `whiteList` option to `allowList`.\n\n#### Spinners\n\n- Spinners now honor `prefers-reduced-motion: reduce` by slowing down animations. [See #31882](https://github.com/twbs/bootstrap/pull/31882).\n\n- Improved spinner vertical alignment.\n\n#### Toasts\n\n- Toasts can now be [positioned]([[docsref:/components/toasts#placement]]) in a `.toast-container` with the help of [positioning utilities]([[docsref:/utilities/position]]).\n\n- Changed default toast duration to 5 seconds.\n\n- Removed `overflow: hidden` from toasts and replaced with proper `border-radius`s with `calc()` functions.\n\n#### Tooltips\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.arrow` to `.tooltip-arrow` in our default tooltip template.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> The default value for the `fallbackPlacements` is changed to `['top', 'right', 'bottom', 'left']` for better placement of popper elements.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `whiteList` option to `allowList`.\n\n### Utilities\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed several utilities to use logical property names instead of directional names with the addition of RTL support:\n - Renamed `.float-left` and `.float-right` to `.float-start` and `.float-end`.\n - Renamed `.border-left` and `.border-right` to `.border-start` and `.border-end`.\n - Renamed `.rounded-left` and `.rounded-right` to `.rounded-start` and `.rounded-end`.\n - Renamed `.ml-*` and `.mr-*` to `.ms-*` and `.me-*`.\n - Renamed `.pl-*` and `.pr-*` to `.ps-*` and `.pe-*`.\n - Renamed `.text-*-left` and `.text-*-right` to `.text-*-start` and `.text-*-end`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Disabled negative margins by default.\n\n- Added new `.bg-body` class for quickly setting the `\u003Cbody>`'s background to additional elements.\n\n- Added new [position utilities]([[docsref:/utilities/position#arrange-elements]]) for `top`, `right`, `bottom`, and `left`. Values include `0`, `50%`, and `100%` for each property.\n\n- Added new `.translate-middle-x` & `.translate-middle-y` utilities to horizontally or vertically center absolute/fixed positioned elements.\n\n- Added new [`border-width` utilities]([[docsref:/utilities/borders#border-width]]).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.text-monospace` to `.font-monospace`.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed `.text-hide` as it's an antiquated method for hiding text that shouldn't be used anymore.\n\n- Added `.fs-*` utilities for `font-size` utilities (with RFS enabled). These use the same scale as HTML's default headings (1-6, large to small), and can be modified via Sass map.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.font-weight-*` utilities as `.fw-*` for brevity and consistency.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Renamed `.font-italic` utility to `.fst-italic` for brevity and consistency with new `.fst-normal` utility.\n\n- Added `.d-grid` to display utilities and new `gap` utilities (`.gap`) for CSS Grid and flexbox layouts.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Removed `.rounded-sm` and `rounded-lg`, and introduced a new scale of classes, `.rounded-0` to `.rounded-3`. [See #31687](https://github.com/twbs/bootstrap/pull/31687).\n\n- Added new `line-height` utilities: `.lh-1`, `.lh-sm`, `.lh-base` and `.lh-lg`. See [here]([[docsref:/utilities/text#line-height]]).\n\n- Moved the `.d-none` utility in our CSS to give it more weight over other display utilities.\n\n- Extended the `.visually-hidden-focusable` helper to also work on containers, using `:focus-within`.\n\n### Helpers\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **Responsive embed helpers have been renamed to [ratio helpers]([[docsref:/helpers/ratio]])** with new class names and improved behaviors, as well as a helpful CSS variable.\n - Classes have been renamed to change `by` to `x` in the aspect ratio. For example, `.ratio-16by9` is now `.ratio-16x9`.\n - We've dropped the `.embed-responsive-item` and element group selector in favor of a simpler `.ratio > *` selector. No more class is needed, and the ratio helper now works with any HTML element.\n - The `$embed-responsive-aspect-ratios` Sass map has been renamed to `$aspect-ratios` and its values have been simplified to include the class name and the percentage as the `key: value` pair.\n - CSS variables are now generated and included for each value in the Sass map. Modify the `--bs-aspect-ratio` variable on the `.ratio` to create any [custom aspect ratio]([[docsref:/helpers/ratio#custom-ratios]]).\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> **\"Screen reader\" classes are now [\"visually hidden\" classes]([[docsref:/helpers/visually-hidden]]).**\n - Changed the Sass file from `scss/helpers/_screenreaders.scss` to `scss/helpers/_visually-hidden.scss`\n - Renamed `.sr-only` and `.sr-only-focusable` to `.visually-hidden` and `.visually-hidden-focusable`\n - Renamed `sr-only()` and `sr-only-focusable()` mixins to `visually-hidden()` and `visually-hidden-focusable()`.\n\n- `bootstrap-utilities.css` now also includes our helpers. Helpers don't need to be imported in custom builds anymore.\n\n### JavaScript\n\n- **Dropped jQuery dependency** and rewrote plugins to be in regular JavaScript.\n\n- \u003Cspan class=\"badge text-bg-danger\">Breaking\u003C/span> Data attributes for all JavaScript plugins are now namespaced to help distinguish Bootstrap functionality from third parties and your own code. For example, we use `data-bs-toggle` instead of `data-toggle`.\n\n- **All plugins can now accept a CSS selector as the first argument.** You can either pass a DOM element or any valid CSS selector to create a new instance of the plugin:\n\n ```js\n const modal = new bootstrap.Modal('#myModal')\n const dropdown = new bootstrap.Dropdown('[data-bs-toggle=\"dropdown\"]')\n ```\n\n- `popperConfig` can be passed as a function that accepts the Bootstrap's default Popper config as an argument, so that you can merge this default configuration in your way. **Applies to dropdowns, popovers, and tooltips.**\n\n- The default value for the `fallbackPlacements` is changed to `['top', 'right', 'bottom', 'left']` for better placement of Popper elements. **Applies to dropdowns, popovers, and tooltips.**\n\n- Removed underscore from public static methods like `_getInstance()` → `getInstance()`.\n\n- Removed `util.js`, with its functionality now integrated into individual plugins. If you previously included `util.js` manually, you can safely remove it, as it is no longer needed. Each plugin now contains only the utilities it requires, enhancing modularity and reducing dependencies.","src/content/docs/migration.mdx","589eb82f3b85ceaf","migration.mdx","content/reboot",{"id":220,"data":222,"body":226,"filePath":227,"digest":228,"legacyId":229,"deferredRender":139},{"aliases":223,"description":224,"title":225,"toc":139},"/docs/[[config:docs_version]]/content/","Reboot, a collection of element-specific CSS changes in a single file, kickstart Bootstrap to provide an elegant, consistent, and simple baseline to build upon.","Reboot","## Approach\n\nReboot builds upon Normalize, providing many HTML elements with somewhat opinionated styles using only element selectors. Additional styling is done only with classes. For example, we reboot some `\u003Ctable>` styles for a simpler baseline and later provide `.table`, `.table-bordered`, and more.\n\nHere are our guidelines and reasons for choosing what to override in Reboot:\n\n- Update some browser default values to use `rem`s instead of `em`s for scalable component spacing.\n- Avoid `margin-top`. Vertical margins can collapse, yielding unexpected results. More importantly though, a single direction of `margin` is a simpler mental model.\n- For easier scaling across device sizes, block elements should use `rem`s for `margin`s.\n- Keep declarations of `font`-related properties to a minimum, using `inherit` whenever possible.\n\n## CSS variables\n\n\u003CAddedIn version=\"5.2.0\"/>\n\nWith v5.1.1, we standardized our required `@import`s across all our CSS bundles (including `bootstrap.css`, `bootstrap-reboot.css`, and `bootstrap-grid.css`) to include `_root.scss`. This adds `:root` level CSS variables to all bundles, regardless of how many of them are used in that bundle. Ultimately Bootstrap 5 will continue to see more [CSS variables]([[docsref:/customize/css-variables]]) added over time, in order to provide more real-time customization without the need to always recompile Sass. Our approach is to take our source Sass variables and transform them into CSS variables. That way, even if you don't use CSS variables, you still have all the power of Sass. **This is still in-progress and will take time to fully implement.**\n\nFor example, consider these `:root` CSS variables for common `\u003Cbody>` styles:\n\n\u003CScssDocs name=\"root-body-variables\" file=\"scss/_root.scss\" />\n\nIn practice, those variables are then applied in Reboot like so:\n\n\u003CScssDocs name=\"reboot-body-rules\" file=\"scss/_reboot.scss\" />\n\nWhich allows you to make real-time customizations however you like:\n\n```html\n\u003Cbody style=\"--bs-body-color: #333;\">\n \u003C!-- ... -->\n\u003C/body>\n```\n\n## Page defaults\n\nThe `\u003Chtml>` and `\u003Cbody>` elements are updated to provide better page-wide defaults. More specifically:\n\n- The `box-sizing` is globally set on every element—including `*::before` and `*::after`, to `border-box`. This ensures that the declared width of element is never exceeded due to padding or border.\n - No base `font-size` is declared on the `\u003Chtml>`, but `16px` is assumed (the browser default). `font-size: 1rem` is applied on the `\u003Cbody>` for easy responsive type-scaling via media queries while respecting user preferences and ensuring a more accessible approach. This browser default can be overridden by modifying the `$font-size-root` variable.\n- The `\u003Cbody>` also sets a global `font-family`, `font-weight`, `line-height`, and `color`. This is inherited later by some form elements to prevent font inconsistencies.\n- For safety, the `\u003Cbody>` has a declared `background-color`, defaulting to `#fff`.\n\n## Native font stack\n\nBootstrap utilizes a \"native font stack\" or \"system font stack\" for optimum text rendering on every device and OS. These system fonts have been designed specifically with today's devices in mind, with improved rendering on screens, variable font support, and more. Read more about [native font stacks in this *Smashing Magazine* article](https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/).\n\n```scss\n$font-family-sans-serif:\n // Cross-platform generic font family (default user interface font)\n system-ui,\n // Safari for macOS and iOS (San Francisco)\n -apple-system,\n // Windows\n \"Segoe UI\",\n // Android\n Roboto,\n // older macOS and iOS\n \"Helvetica Neue\",\n // Linux\n \"Noto Sans\",\n \"Liberation Sans\",\n // Basic web fallback\n Arial,\n // Sans serif fallback\n sans-serif,\n // Emoji fonts\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n```\n\nNote that because the font stack includes emoji fonts, many common symbol/dingbat Unicode characters will be rendered as multicolored pictographs. Their appearance will vary, depending on the style used in the browser/platform's native emoji font, and they won't be affected by any CSS `color` styles.\n\nThis `font-family` is applied to the `\u003Cbody>` and automatically inherited globally throughout Bootstrap. To switch the global `font-family`, update `$font-family-base` and recompile Bootstrap.\n\n## Headings\n\nAll heading elements—`\u003Ch1>`—`\u003Ch6>` have their `margin-top` removed, `margin-bottom: .5rem` set, and `line-height` tightened. While headings inherit their `color` by default, you can also override it via optional CSS variable, `--bs-heading-color`.\n\n\u003CBsTable>\n| Heading | Example |\n| --- | --- |\n| `\u003Ch1>\u003C/h1>` | \u003Cspan class=\"h1\">h1. Bootstrap heading\u003C/span> |\n| `\u003Ch2>\u003C/h2>` | \u003Cspan class=\"h2\">h2. Bootstrap heading\u003C/span> |\n| `\u003Ch3>\u003C/h3>` | \u003Cspan class=\"h3\">h3. Bootstrap heading\u003C/span> |\n| `\u003Ch4>\u003C/h4>` | \u003Cspan class=\"h4\">h4. Bootstrap heading\u003C/span> |\n| `\u003Ch5>\u003C/h5>` | \u003Cspan class=\"h5\">h5. Bootstrap heading\u003C/span> |\n| `\u003Ch6>\u003C/h6>` | \u003Cspan class=\"h6\">h6. Bootstrap heading\u003C/span> |\n\u003C/BsTable>\n\n## Paragraphs\n\nAll `\u003Cp>` elements have their `margin-top` removed and `margin-bottom: 1rem` set for easy spacing.\n\n\u003CExample code={`\u003Cp>This is an example paragraph.\u003C/p>`} />\n\n## Links\n\nLinks have a default `color` and underline applied. While links change on `:hover`, they don't change based on whether someone `:visited` the link. They also receive no special `:focus` styles.\n\n\u003CExample code={`\u003Ca href=\"#\">This is an example link\u003C/a>`} />\n\nAs of v5.3.x, link `color` is set using `rgba()` and new `-rgb` CSS variables, allowing for easy customization of link color opacity. Change the link color opacity with the `--bs-link-opacity` CSS variable:\n\n\u003CExample code={`\u003Ca href=\"#\" style=\"--bs-link-opacity: .5\">This is an example link\u003C/a>`} />\n\n\nPlaceholder links—those without an `href`—are targeted with a more specific selector and have their `color` and `text-decoration` reset to their default values.\n\n\u003CExample code={`\u003Ca>This is a placeholder link\u003C/a>`} />\n\n## Horizontal rules\n\nThe `\u003Chr>` element has been simplified. Similar to browser defaults, `\u003Chr>`s are styled via `border-top`, have a default `opacity: .25`, and automatically inherit their `border-color` via `color`, including when `color` is set via the parent. They can be modified with text, border, and opacity utilities.\n\n\u003CExample code={`\u003Chr>\n\n\u003Cdiv class=\"text-success\">\n \u003Chr>\n\u003C/div>\n\n\u003Chr class=\"border border-danger border-2 opacity-50\">\n\u003Chr class=\"border border-primary border-3 opacity-75\">`} />\n\n## Lists\n\nAll lists—`\u003Cul>`, `\u003Col>`, and `\u003Cdl>`—have their `margin-top` removed and a `margin-bottom: 1rem`. Nested lists have no `margin-bottom`. We've also reset the `padding-left` on `\u003Cul>` and `\u003Col>` elements.\n\n\u003Cdiv class=\"bd-example\">\n* All lists have their top margin removed\n* And their bottom margin normalized\n* Nested lists have no bottom margin\n * This way they have a more even appearance\n * Particularly when followed by more list items\n* The left padding has also been reset\n\n1. Here's an ordered list\n2. With a few list items\n3. It has the same overall look\n4. As the previous unordered list\n\u003C/div>\n\nFor simpler styling, clear hierarchy, and better spacing, description lists have updated `margin`s. `\u003Cdd>`s reset `margin-left` to `0` and add `margin-bottom: .5rem`. `\u003Cdt>`s are **bolded**.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdl>\n \u003Cdt>Description lists\u003C/dt>\n \u003Cdd>A description list is perfect for defining terms.\u003C/dd>\n \u003Cdt>Term\u003C/dt>\n \u003Cdd>Definition for the term.\u003C/dd>\n \u003Cdd>A second definition for the same term.\u003C/dd>\n \u003Cdt>Another term\u003C/dt>\n \u003Cdd>Definition for this other term.\u003C/dd>\n \u003C/dl>\n\u003C/div>\n\n## Inline code\n\nWrap inline snippets of code with `\u003Ccode>`. Be sure to escape HTML angle brackets.\n\n\u003CExample code={`For example, \u003Ccode><section>\u003C/code> should be wrapped as inline.`} />\n\n## Code blocks\n\nUse `\u003Cpre>`s for multiple lines of code. Once again, be sure to escape any angle brackets in the code for proper rendering. The `\u003Cpre>` element is reset to remove its `margin-top` and use `rem` units for its `margin-bottom`.\n\n\u003CExample code={`\u003Cpre>\u003Ccode><p>Sample text here...</p>\n<p>And another line of sample text here...</p>\n\u003C/code>\u003C/pre>`} />\n\n## Variables\n\nFor indicating variables use the `\u003Cvar>` tag.\n\n\u003CExample code={`\u003Cvar>y\u003C/var> = \u003Cvar>m\u003C/var>\u003Cvar>x\u003C/var> + \u003Cvar>b\u003C/var>`} />\n\n## User input\n\nUse the `\u003Ckbd>` to indicate input that is typically entered via keyboard.\n\n\u003CExample code={`To switch directories, type \u003Ckbd>cd\u003C/kbd> followed by the name of the directory.\u003Cbr/>\nTo edit settings, press \u003Ckbd>\u003Ckbd>Ctrl\u003C/kbd> + \u003Ckbd>,\u003C/kbd>\u003C/kbd>`} />\n\n## Sample output\n\nFor indicating sample output from a program use the `\u003Csamp>` tag.\n\n\u003CExample code={`\u003Csamp>This text is meant to be treated as sample output from a computer program.\u003C/samp>`} />\n\n## Tables\n\nTables are slightly adjusted to style `\u003Ccaption>`s, collapse borders, and ensure consistent `text-align` throughout. Additional changes for borders, padding, and more come with [the `.table` class]([[docsref:/content/tables]]).\n\n\u003CExample code={`\u003Ctable>\n \u003Ccaption>\n This is an example table, and this is its caption to describe the contents.\n \u003C/caption>\n \u003Cthead>\n \u003Ctr>\n \u003Cth>Table heading\u003C/th>\n \u003Cth>Table heading\u003C/th>\n \u003Cth>Table heading\u003C/th>\n \u003Cth>Table heading\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003Ctd>Table cell\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>`} />\n\n## Forms\n\nVarious form elements have been rebooted for simpler base styles. Here are some of the most notable changes:\n\n- `\u003Cfieldset>`s have no borders, padding, or margin so they can be easily used as wrappers for individual inputs or groups of inputs.\n- `\u003Clegend>`s, like fieldsets, have also been restyled to be displayed as a heading of sorts.\n- `\u003Clabel>`s are set to `display: inline-block` to allow `margin` to be applied.\n- `\u003Cinput>`s, `\u003Cselect>`s, `\u003Ctextarea>`s, and `\u003Cbutton>`s are mostly addressed by Normalize, but Reboot removes their `margin` and sets `line-height: inherit`, too.\n- `\u003Ctextarea>`s are modified to only be resizable vertically as horizontal resizing often \"breaks\" page layout.\n- `\u003Cbutton>`s and `\u003Cinput>` button elements have `cursor: pointer` when `:not(:disabled)`.\n\nThese changes, and more, are demonstrated below.\n\n\u003CCallout name=\"warning-input-support\" type=\"warning\" />\n\n\u003Cform class=\"bd-example\">\n \u003Cfieldset>\n \u003Clegend>Example legend\u003C/legend>\n \u003Cp>\n \u003Clabel for=\"input\">Example input\u003C/label>\n \u003Cinput type=\"text\" id=\"input\" placeholder=\"Example input\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"email\">Example email\u003C/label>\n \u003Cinput type=\"email\" id=\"email\" placeholder=\"test@example.com\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"tel\">Example telephone\u003C/label>\n \u003Cinput type=\"tel\" id=\"tel\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"url\">Example url\u003C/label>\n \u003Cinput type=\"url\" id=\"url\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"number\">Example number\u003C/label>\n \u003Cinput type=\"number\" id=\"number\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"search\">Example search\u003C/label>\n \u003Cinput type=\"search\" id=\"search\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"range\">Example range\u003C/label>\n \u003Cinput type=\"range\" id=\"range\" min=\"0\" max=\"10\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"file\">Example file input\u003C/label>\n \u003Cinput type=\"file\" id=\"file\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"select\">Example select\u003C/label>\n \u003Cselect id=\"select\">\n \u003Coption value=\"\">Choose...\u003C/option>\n \u003Coptgroup label=\"Option group 1\">\n \u003Coption value=\"\">Option 1\u003C/option>\n \u003Coption value=\"\">Option 2\u003C/option>\n \u003Coption value=\"\">Option 3\u003C/option>\n \u003C/optgroup>\n \u003Coptgroup label=\"Option group 2\">\n \u003Coption value=\"\">Option 4\u003C/option>\n \u003Coption value=\"\">Option 5\u003C/option>\n \u003Coption value=\"\">Option 6\u003C/option>\n \u003C/optgroup>\n \u003C/select>\n \u003C/p>\n \u003Cp>\n \u003Clabel>\n \u003Cinput type=\"checkbox\" value=\"\"/>\n Check this checkbox\n \u003C/label>\n \u003C/p>\n \u003Cp>\n \u003Clabel>\n \u003Cinput type=\"radio\" name=\"optionsRadios\" id=\"optionsRadios1\" value=\"option1\" checked/>\n Option one is this and that\n \u003C/label>\n \u003Clabel>\n \u003Cinput type=\"radio\" name=\"optionsRadios\" id=\"optionsRadios2\" value=\"option2\"/>\n Option two is something else that's also super long to demonstrate the wrapping of these fancy form controls.\n \u003C/label>\n \u003Clabel>\n \u003Cinput type=\"radio\" name=\"optionsRadios\" id=\"optionsRadios3\" value=\"option3\" disabled/>\n Option three is disabled\n \u003C/label>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"textarea\">Example textarea\u003C/label>\n \u003Ctextarea id=\"textarea\" rows=\"3\">\u003C/textarea>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"date\">Example date\u003C/label>\n \u003Cinput type=\"date\" id=\"date\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"time\">Example time\u003C/label>\n \u003Cinput type=\"time\" id=\"time\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"password\">Example password\u003C/label>\n \u003Cinput type=\"password\" id=\"password\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"datetime-local\">Example datetime-local\u003C/label>\n \u003Cinput type=\"datetime-local\" id=\"datetime-local\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"week\">Example week\u003C/label>\n \u003Cinput type=\"week\" id=\"week\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"month\">Example month\u003C/label>\n \u003Cinput type=\"month\" id=\"month\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"color\">Example color\u003C/label>\n \u003Cinput type=\"color\" id=\"color\"/>\n \u003C/p>\n \u003Cp>\n \u003Clabel for=\"output\">Example output\u003C/label>\n \u003Coutput name=\"result\" id=\"output\">100\u003C/output>\n \u003C/p>\n \u003Cp>\n \u003Cbutton type=\"submit\">Button submit\u003C/button>\n \u003Cinput type=\"submit\" value=\"Input submit button\"/>\n \u003Cinput type=\"reset\" value=\"Input reset button\"/>\n \u003Cinput type=\"button\" value=\"Input button\"/>\n \u003C/p>\n \u003Cp>\n \u003Cbutton type=\"submit\" disabled>Button submit\u003C/button>\n \u003Cinput type=\"submit\" value=\"Input submit button\" disabled/>\n \u003Cinput type=\"reset\" value=\"Input reset button\" disabled/>\n \u003Cinput type=\"button\" value=\"Input button\" disabled/>\n \u003C/p>\n \u003C/fieldset>\n\u003C/form>\n\n### Pointers on buttons\n\nReboot includes an enhancement for `role=\"button\"` to change the default cursor to `pointer`. Add this attribute to elements to help indicate elements are interactive. This role isn't necessary for `\u003Cbutton>` elements, which get their own `cursor` change.\n\n\u003CExample code={`\u003Cspan role=\"button\" tabindex=\"0\">Non-button element button\u003C/span>`} />\n\n## Misc elements\n\n### Address\n\nThe `\u003Caddress>` element is updated to reset the browser default `font-style` from `italic` to `normal`. `line-height` is also now inherited, and `margin-bottom: 1rem` has been added. `\u003Caddress>`s are for presenting contact information for the nearest ancestor (or an entire body of work). Preserve formatting by ending lines with `\u003Cbr/>`.\n\n\u003Cdiv class=\"bd-example\">\n \u003Caddress>\n \u003Cstrong>ACME Corporation\u003C/strong>\u003Cbr/>\n 1123 Fictional St,\u003Cbr/>\n San Francisco, CA 94103\u003Cbr/>\n \u003Cabbr title=\"Phone\">P:\u003C/abbr> (123) 456-7890\n \u003C/address>\n\n \u003Caddress>\n \u003Cstrong>Full Name\u003C/strong>\u003Cbr/>\n \u003Ca href=\"mailto:first.last@example.com\">first.last@example.com\u003C/a>\n \u003C/address>\n\u003C/div>\n\n### Blockquote\n\nThe default `margin` on blockquotes is `1em 40px`, so we reset that to `0 0 1rem` for something more consistent with other elements.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003C/blockquote>\n \u003Cp>Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\u003C/p>\n\u003C/div>\n\n### Inline elements\n\nThe `\u003Cabbr>` element receives basic styling to make it stand out amongst paragraph text.\n\n\u003Cdiv class=\"bd-example\">\n The \u003Cabbr title=\"HyperText Markup Language\">HTML\u003C/abbr> abbreviation element.\n\u003C/div>\n\n### Summary\n\nThe default `cursor` on summary is `text`, so we reset that to `pointer` to convey that the element can be interacted with by clicking on it.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdetails>\n \u003Csummary>Some details\u003C/summary>\n \u003Cp>More info about the details.\u003C/p>\n \u003C/details>\n\n \u003Cdetails open>\n \u003Csummary>Even more details\u003C/summary>\n \u003Cp>Here are even more details about the details.\u003C/p>\n \u003C/details>\n\u003C/div>\n\n## HTML5 `[hidden]` attribute\n\nHTML5 adds [a new global attribute named `[hidden]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden), which is styled as `display: none` by default. Borrowing an idea from [PureCSS](https://purecss.io/), we improve upon this default by making `[hidden] { display: none !important; }` to help prevent its `display` from getting accidentally overridden.\n\n```html\n\u003Cinput type=\"text\" hidden/>\n```\n\n\u003CCallout>\nSince `[hidden]` is not compatible with jQuery's `$(...).hide()` and `$(...).show()` methods, we don't specifically endorse `[hidden]` over other techniques for managing the `display` of elements.\n\u003C/Callout>\n\nTo merely toggle the visibility of an element, meaning its `display` is not modified and the element can still affect the flow of the document, use [the `.invisible` class]([[docsref:/utilities/visibility]]) instead.","src/content/docs/content/reboot.mdx","93ee6fd27784eb6f","content/reboot.mdx","content/typography",{"id":230,"data":232,"body":235,"filePath":236,"digest":237,"legacyId":238,"deferredRender":139},{"description":233,"title":234,"toc":139},"Documentation and examples for Bootstrap typography, including global settings, headings, body text, lists, and more.","Typography","## Global settings\n\nBootstrap sets basic global display, typography, and link styles. When more control is needed, check out the [textual utility classes]([[docsref:/utilities/text]]).\n\n- Use a [native font stack]([[docsref:/content/reboot#native-font-stack]]) that selects the best `font-family` for each OS and device.\n- For a more inclusive and accessible type scale, we use the browser's default root `font-size` (typically 16px) so visitors can customize their browser defaults as needed.\n- Use the `$font-family-base`, `$font-size-base`, and `$line-height-base` attributes as our typographic base applied to the `\u003Cbody>`.\n- Set the global link color via `$link-color`.\n- Use `$body-bg` to set a `background-color` on the `\u003Cbody>` (`#fff` by default).\n\nThese styles can be found within `_reboot.scss`, and the global variables are defined in `_variables.scss`. Make sure to set `$font-size-base` in `rem`.\n\n## Headings\n\nAll HTML headings, `\u003Ch1>` through `\u003Ch6>`, are available.\n\n\u003CBsTable>\n| Heading | Example |\n| --- | --- |\n| `\u003Ch1>\u003C/h1>` | \u003Cspan class=\"h1\">h1. Bootstrap heading\u003C/span> |\n| `\u003Ch2>\u003C/h2>` | \u003Cspan class=\"h2\">h2. Bootstrap heading\u003C/span> |\n| `\u003Ch3>\u003C/h3>` | \u003Cspan class=\"h3\">h3. Bootstrap heading\u003C/span> |\n| `\u003Ch4>\u003C/h4>` | \u003Cspan class=\"h4\">h4. Bootstrap heading\u003C/span> |\n| `\u003Ch5>\u003C/h5>` | \u003Cspan class=\"h5\">h5. Bootstrap heading\u003C/span> |\n| `\u003Ch6>\u003C/h6>` | \u003Cspan class=\"h6\">h6. Bootstrap heading\u003C/span> |\n\u003C/BsTable>\n\n```html\n\u003Ch1>h1. Bootstrap heading\u003C/h1>\n\u003Ch2>h2. Bootstrap heading\u003C/h2>\n\u003Ch3>h3. Bootstrap heading\u003C/h3>\n\u003Ch4>h4. Bootstrap heading\u003C/h4>\n\u003Ch5>h5. Bootstrap heading\u003C/h5>\n\u003Ch6>h6. Bootstrap heading\u003C/h6>\n```\n\n`.h1` through `.h6` classes are also available, for when you want to match the font styling of a heading but cannot use the associated HTML element.\n\n\u003CExample code={`\u003Cp class=\"h1\">h1. Bootstrap heading\u003C/p>\n\u003Cp class=\"h2\">h2. Bootstrap heading\u003C/p>\n\u003Cp class=\"h3\">h3. Bootstrap heading\u003C/p>\n\u003Cp class=\"h4\">h4. Bootstrap heading\u003C/p>\n\u003Cp class=\"h5\">h5. Bootstrap heading\u003C/p>\n\u003Cp class=\"h6\">h6. Bootstrap heading\u003C/p>`} />\n\n### Customizing headings\n\nUse the included utility classes to recreate the small secondary heading text from Bootstrap 3.\n\n\u003CExample code={`\u003Ch3>\n Fancy display heading\n \u003Csmall class=\"text-body-secondary\">With faded secondary text\u003C/small>\n\u003C/h3>`} />\n\n## Display headings\n\nTraditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading**—a larger, slightly more opinionated heading style.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"display-1 pb-3 mb-3 border-bottom\">Display 1\u003C/div>\n \u003Cdiv class=\"display-2 pb-3 mb-3 border-bottom\">Display 2\u003C/div>\n \u003Cdiv class=\"display-3 pb-3 mb-3 border-bottom\">Display 3\u003C/div>\n \u003Cdiv class=\"display-4 pb-3 mb-3 border-bottom\">Display 4\u003C/div>\n \u003Cdiv class=\"display-5 pb-3 mb-3 border-bottom\">Display 5\u003C/div>\n \u003Cdiv class=\"display-6\">Display 6\u003C/div>\n\u003C/div>\n\n```html\n\u003Ch1 class=\"display-1\">Display 1\u003C/h1>\n\u003Ch1 class=\"display-2\">Display 2\u003C/h1>\n\u003Ch1 class=\"display-3\">Display 3\u003C/h1>\n\u003Ch1 class=\"display-4\">Display 4\u003C/h1>\n\u003Ch1 class=\"display-5\">Display 5\u003C/h1>\n\u003Ch1 class=\"display-6\">Display 6\u003C/h1>\n```\n\nDisplay headings are configured via the `$display-font-sizes` Sass map and two variables, `$display-font-weight` and `$display-line-height`.\n\nDisplay headings are customizable via two variables, `$display-font-family` and `$display-font-style`.\n\n\u003CScssDocs name=\"display-headings\" file=\"scss/_variables.scss\" />\n\n## Lead\n\nMake a paragraph stand out by adding `.lead`.\n\n\u003CExample code={`\u003Cp class=\"lead\">\n This is a lead paragraph. It stands out from regular paragraphs.\n\u003C/p>`} />\n\n## Inline text elements\n\nStyling for common inline HTML5 elements.\n\n\u003CExample code={`\u003Cp>You can use the mark tag to \u003Cmark>highlight\u003C/mark> text.\u003C/p>\n\u003Cp>\u003Cdel>This line of text is meant to be treated as deleted text.\u003C/del>\u003C/p>\n\u003Cp>\u003Cs>This line of text is meant to be treated as no longer accurate.\u003C/s>\u003C/p>\n\u003Cp>\u003Cins>This line of text is meant to be treated as an addition to the document.\u003C/ins>\u003C/p>\n\u003Cp>\u003Cu>This line of text will render as underlined.\u003C/u>\u003C/p>\n\u003Cp>\u003Csmall>This line of text is meant to be treated as fine print.\u003C/small>\u003C/p>\n\u003Cp>\u003Cstrong>This line rendered as bold text.\u003C/strong>\u003C/p>\n\u003Cp>\u003Cem>This line rendered as italicized text.\u003C/em>\u003C/p>`} />\n\nBeware that those tags should be used for semantic purpose:\n\n- `\u003Cmark>` represents text which is marked or highlighted for reference or notation purposes.\n- `\u003Csmall>` represents side-comments and small print, like copyright and legal text.\n- `\u003Cs>` represents element that are no longer relevant or no longer accurate.\n- `\u003Cu>` represents a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation.\n\nIf you want to style your text, you should use the following classes instead:\n\n- `.mark` will apply the same styles as `\u003Cmark>`.\n- `.small` will apply the same styles as `\u003Csmall>`.\n- `.text-decoration-underline` will apply the same styles as `\u003Cu>`.\n- `.text-decoration-line-through` will apply the same styles as `\u003Cs>`.\n\nWhile not shown above, feel free to use `\u003Cb>` and `\u003Ci>` in HTML5. `\u003Cb>` is meant to highlight words or phrases without conveying additional importance, while `\u003Ci>` is mostly for voice, technical terms, etc.\n\n## Text utilities\n\nChange text alignment, transform, style, weight, line-height, decoration and color with our [text utilities]([[docsref:/utilities/text]]) and [color utilities]([[docsref:/utilities/colors]]).\n\n## Abbreviations\n\nStylized implementation of HTML's `\u003Cabbr>` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations have a default underline and gain a help cursor to provide additional context on hover and to users of assistive technologies.\n\nAdd `.initialism` to an abbreviation for a slightly smaller font-size.\n\n\u003CExample code={`\u003Cp>\u003Cabbr title=\"attribute\">attr\u003C/abbr>\u003C/p>\n\u003Cp>\u003Cabbr title=\"HyperText Markup Language\" class=\"initialism\">HTML\u003C/abbr>\u003C/p>`} />\n\n## Blockquotes\n\nFor quoting blocks of content from another source within your document. Wrap `\u003Cblockquote class=\"blockquote\">` around any HTML as the quote.\n\n\u003CExample code={`\u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n\u003C/blockquote>`} />\n\n### Naming a source\n\nThe HTML spec requires that blockquote attribution be placed outside the `\u003Cblockquote>`. When providing attribution, wrap your `\u003Cblockquote>` in a `\u003Cfigure>` and use a `\u003Cfigcaption>` or a block level element (e.g., `\u003Cp>`) with the `.blockquote-footer` class. Be sure to wrap the name of the source work in `\u003Ccite>` as well.\n\n\u003CExample code={`\u003Cfigure>\n \u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003C/blockquote>\n \u003Cfigcaption class=\"blockquote-footer\">\n Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\n \u003C/figcaption>\n\u003C/figure>`} />\n\n### Alignment\n\nUse text utilities as needed to change the alignment of your blockquote.\n\n\u003CExample code={`\u003Cfigure class=\"text-center\">\n \u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003C/blockquote>\n \u003Cfigcaption class=\"blockquote-footer\">\n Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\n \u003C/figcaption>\n\u003C/figure>`} />\n\n\u003CExample code={`\u003Cfigure class=\"text-end\">\n \u003Cblockquote class=\"blockquote\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003C/blockquote>\n \u003Cfigcaption class=\"blockquote-footer\">\n Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\n \u003C/figcaption>\n\u003C/figure>`} />\n\n## Lists\n\n### Unstyled\n\nRemove the default `list-style` and left margin on list items (immediate children only). **This only applies to immediate children list items**, meaning you will need to add the class for any nested lists as well.\n\n\u003CExample code={`\u003Cul class=\"list-unstyled\">\n \u003Cli>This is a list.\u003C/li>\n \u003Cli>It appears completely unstyled.\u003C/li>\n \u003Cli>Structurally, it's still a list.\u003C/li>\n \u003Cli>However, this style only applies to immediate child elements.\u003C/li>\n \u003Cli>Nested lists:\n \u003Cul>\n \u003Cli>are unaffected by this style\u003C/li>\n \u003Cli>will still show a bullet\u003C/li>\n \u003Cli>and have appropriate left margin\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli>This may still come in handy in some situations.\u003C/li>\n\u003C/ul>`} />\n\n### Inline\n\nRemove a list's bullets and apply some light `margin` with a combination of two classes, `.list-inline` and `.list-inline-item`.\n\n\u003CExample code={`\u003Cul class=\"list-inline\">\n \u003Cli class=\"list-inline-item\">This is a list item.\u003C/li>\n \u003Cli class=\"list-inline-item\">And another one.\u003C/li>\n \u003Cli class=\"list-inline-item\">But they're displayed inline.\u003C/li>\n\u003C/ul>`} />\n\n### Description list alignment\n\nAlign terms and descriptions horizontally by using our grid system's predefined classes (or semantic mixins). For longer terms, you can optionally add a `.text-truncate` class to truncate the text with an ellipsis.\n\n\u003CExample code={`\u003Cdl class=\"row\">\n \u003Cdt class=\"col-sm-3\">Description lists\u003C/dt>\n \u003Cdd class=\"col-sm-9\">A description list is perfect for defining terms.\u003C/dd>\n\n \u003Cdt class=\"col-sm-3\">Term\u003C/dt>\n \u003Cdd class=\"col-sm-9\">\n \u003Cp>Definition for the term.\u003C/p>\n \u003Cp>And some more placeholder definition text.\u003C/p>\n \u003C/dd>\n\n \u003Cdt class=\"col-sm-3\">Another term\u003C/dt>\n \u003Cdd class=\"col-sm-9\">This definition is short, so no extra paragraphs or anything.\u003C/dd>\n\n \u003Cdt class=\"col-sm-3 text-truncate\">Truncated term is truncated\u003C/dt>\n \u003Cdd class=\"col-sm-9\">This can be useful when space is tight. Adds an ellipsis at the end.\u003C/dd>\n\n \u003Cdt class=\"col-sm-3\">Nesting\u003C/dt>\n \u003Cdd class=\"col-sm-9\">\n \u003Cdl class=\"row\">\n \u003Cdt class=\"col-sm-4\">Nested definition list\u003C/dt>\n \u003Cdd class=\"col-sm-8\">I heard you like definition lists. Let me put a definition list inside your definition list.\u003C/dd>\n \u003C/dl>\n \u003C/dd>\n\u003C/dl>`} />\n\n## Responsive font sizes\n\nIn Bootstrap 5, we've enabled responsive font sizes by default, allowing text to scale more naturally across device and viewport sizes. Have a look at the [RFS page]([[docsref:/getting-started/rfs]]) to find out how this works.\n\n## CSS\n\n### Sass variables\n\nHeadings have some dedicated variables for sizing and spacing.\n\n\u003CScssDocs name=\"headings-variables\" file=\"scss/_variables.scss\" />\n\nMiscellaneous typography elements covered here and in [Reboot]([[docsref:/content/reboot]]) also have dedicated variables.\n\n\u003CScssDocs name=\"type-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\nThere are no dedicated mixins for typography, but Bootstrap does use [Responsive Font Sizing (RFS)]([[docsref:/getting-started/rfs]]).","src/content/docs/content/typography.mdx","b2c265f7bf9965fc","content/typography.mdx","customize/color",{"id":239,"data":241,"body":244,"filePath":245,"digest":246,"legacyId":247,"deferredRender":139},{"description":242,"title":243,"toc":139},"Bootstrap is supported by an extensive color system that themes our styles and components. This enables more comprehensive customization and extension for any project.","Color","import { getData } from '@libs/data'\nimport { getSequence } from '@libs/utils'\n\n## Colors\n\n\u003CAddedIn version=\"5.3.0\" />\n\nBootstrap's color palette has continued to expand and become more nuanced in v5.3.0. We've added new variables for `secondary` and `tertiary` text and background colors, plus `{color}-bg-subtle`, `{color}-border-subtle`, and `{color}-text-emphasis` for our theme colors. These new colors are available through Sass and CSS variables (but not our color maps or utility classes) with the express goal of making it easier to customize across multiple colors modes like light and dark. These new variables are globally set on `:root` and are adapted for our new dark color mode while our original theme colors remain unchanged.\n\nColors ending in `-rgb` provide the `red, green, blue` values for use in `rgb()` and `rgba()` color modes. For example, `rgba(var(--bs-secondary-bg-rgb), .5)`.\n\n\u003CCallout type=\"warning\">\n**Heads up!** There's some potential confusion with our new secondary and tertiary colors, and our existing secondary theme color, as well as our light and dark theme colors. Expect this to be ironed out in v6.\n\u003C/Callout>\n\n\u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table table-swatches\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth style=\"width: 340px;\">Description\u003C/th>\n \u003Cth style=\"width: 200px;\" class=\"ps-0\">Swatch\u003C/th>\n \u003Cth>Variables\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Ctd rowspan=\"2\">\n **Body —** Default foreground (color) and background, including components.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-body-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-body-color`\u003Cbr/>`--bs-body-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2 border\" style=\"background-color: var(--bs-body-bg);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-body-bg`\u003Cbr/>`--bs-body-bg-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"2\">\n **Secondary —** Use the `color` option for lighter text. Use the `bg` option for dividers and to indicate disabled component states.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-secondary-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-secondary-color`\u003Cbr/>`--bs-secondary-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2 border\" style=\"background-color: var(--bs-secondary-bg);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-secondary-bg`\u003Cbr/>`--bs-secondary-bg-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"2\">\n **Tertiary —** Use the `color` option for even lighter text. Use the `bg` option to style backgrounds for hover states, accents, and wells.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-tertiary-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-tertiary-color`\u003Cbr/>`--bs-tertiary-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2 border\" style=\"background-color: var(--bs-tertiary-bg);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-tertiary-bg`\u003Cbr/>`--bs-tertiary-bg-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n **Emphasis —** For higher contrast text. Not applicable for backgrounds.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-emphasis-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-emphasis-color`\u003Cbr/>`--bs-emphasis-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n **Border —** For component borders, dividers, and rules. Use `--bs-border-color-translucent` to blend with backgrounds with an `rgba()` value.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-border-color);\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-border-color`\u003Cbr/>`--bs-border-color-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Primary —** Main theme color, used for hyperlinks, focus styles, and component and form active states.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-primary\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-primary`\u003Cbr/>`--bs-primary-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-primary-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-primary-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-primary-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-primary-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-primary-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-primary-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Success —** Theme color used for positive or successful actions and information.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-success\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-success`\u003Cbr/>`--bs-success-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-success-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-success-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-success-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-success-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-success-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-success-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Danger —** Theme color used for errors and dangerous actions.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-danger\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-danger`\u003Cbr/>`--bs-danger-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-danger-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-danger-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-danger-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-danger-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-danger-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-danger-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Warning —** Theme color used for non-destructive warning messages.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-warning\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-warning`\u003Cbr/>`--bs-warning-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-warning-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-warning-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-warning-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-warning-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-warning-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-warning-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Info —** Theme color used for neutral and informative content.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-info\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-info`\u003Cbr/>`--bs-info-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-info-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-info-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-info-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-info-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-info-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-info-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Light —** Additional theme option for less contrasting colors.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-light\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-light`\u003Cbr/>`--bs-light-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-light-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-light-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-light-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-light-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-light-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-light-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd rowspan=\"4\">\n **Dark —** Additional theme option for higher contrasting colors.\n \u003C/td>\n \u003Ctd class=\"ps-0\">\n \u003Cdiv class=\"p-3 rounded-2 bg-dark\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-dark`\u003Cbr/>`--bs-dark-rgb`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"background-color: var(--bs-dark-bg-subtle)\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-dark-bg-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"p-3 rounded-2\" style=\"border: 5px var(--bs-dark-border-subtle) solid\"> \u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-dark-border-subtle`\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>\n \u003Cdiv class=\"py-3 fw-bold h5\" style=\"color: var(--bs-dark-text-emphasis)\">Text\u003C/div>\n \u003C/td>\n \u003Ctd>\n `--bs-dark-text-emphasis`\n \u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n### Using the new colors\n\nThese new colors are accessible via CSS variables and utility classes—like `--bs-primary-bg-subtle` and `.bg-primary-subtle`—allowing you to compose your own CSS rules with the variables, or to quickly apply styles via classes. The utilities are built with the color's associated CSS variables, and since we customize those CSS variables for dark mode, they are also adaptive to color mode by default.\n\n\u003CExample code={`\u003Cdiv class=\"p-3 text-primary-emphasis bg-primary-subtle border border-primary-subtle rounded-3\">\n Example element with utilities\n\u003C/div>`} />\n\n### Theme colors\n\nWe use a subset of all colors to create a smaller color palette for generating color schemes, also available as Sass variables and a Sass map in Bootstrap's `scss/_variables.scss` file.\n\n\u003Cdiv class=\"row\">\n {getData('theme-colors').map((themeColor) => {\n return (\n \u003Cdiv class=\"col-md-4\">\n \u003Cdiv class={`p-3 mb-3 text-bg-${themeColor.name} rounded-3`}>{themeColor.title}\u003C/div>\n \u003C/div>\n )\n })}\n\u003C/div>\n\nAll these colors are available as a Sass map, `$theme-colors`.\n\n\u003CScssDocs name=\"theme-colors-map\" file=\"scss/_variables.scss\" />\n\nCheck out [our Sass maps and loops docs]([[docsref:/customize/sass#maps-and-loops]]) for how to modify these colors.\n\n### All colors\n\nAll Bootstrap colors are available as Sass variables and a Sass map in `scss/_variables.scss` file. To avoid increased file sizes, we don't create text or background color classes for each of these variables. Instead, we choose a subset of these colors for a [theme palette](#theme-colors).\n\nBe sure to monitor contrast ratios as you customize colors. As shown below, we've added three contrast ratios to each of the main colors—one for the swatch's current colors, one for against white, and one for against black.\n\n\u003Cdiv class=\"row font-monospace\">\n {getData('colors').map((color) => {\n if ((color.name !== \"white\") && (color.name !== \"gray\") && (color.name !== \"gray-dark\")) {\n return (\n \u003Cdiv class=\"col-md-4 mb-3\">\n \u003Cdiv class={`p-3 mb-2 position-relative swatch-${color.name}`}>\n \u003Cstrong class=\"d-block\">${color.name}\u003C/strong>\n {color.hex}\n \u003C/div>\n\n {getSequence(100, 900, 100).map((value) => {\n return (\n \u003Cdiv class={`p-3 bd-${color.name}-${value}`}>${color.name}-{value}\u003C/div>\n )\n })}\n \u003C/div>\n )\n }\n })}\n\n \u003Cdiv class=\"col-md-4 mb-3\">\n \u003Cdiv class=\"p-3 mb-2 position-relative swatch-gray-500\">\u003Cstrong class=\"d-block\">$gray-500\u003C/strong>#adb5bd\u003C/div>\n {getData('grays').map((gray) => {\n return (\n \u003Cdiv class={`p-3 bd-gray-${gray.name}`}>$gray-{gray.name}\u003C/div>\n )\n })}\n \u003C/div>\n\n \u003Cdiv class=\"col-md-4 mb-3\">\n \u003Cdiv class=\"p-3 mb-2 bd-black text-white\">\n \u003Cstrong class=\"d-block\">$black\u003C/strong>\n #000\n \u003C/div>\n \u003Cdiv class=\"p-3 mb-2 bd-white border\">\n \u003Cstrong class=\"d-block\">$white\u003C/strong>\n #fff\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n### Notes on Sass\n\nSass cannot programmatically generate variables, so we manually created variables for every tint and shade ourselves. We specify the midpoint value (e.g., `$blue-500`) and use custom color functions to tint (lighten) or shade (darken) our colors via Sass's `mix()` color function.\n\nUsing `mix()` is not the same as `lighten()` and `darken()`—the former blends the specified color with white or black, while the latter only adjusts the lightness value of each color. The result is a much more complete suite of colors, as [shown in this CodePen demo](https://codepen.io/emdeoh/pen/zYOQOPB).\n\nOur `tint-color()` and `shade-color()` functions use `mix()` alongside our `$theme-color-interval` variable, which specifies a stepped percentage value for each mixed color we produce. See the `scss/_functions.scss` and `scss/_variables.scss` files for the full source code.\n\n## Color Sass maps\n\nBootstrap's source Sass files include three maps to help you quickly and easily loop over a list of colors and their hex values.\n\n- `$colors` lists all our available base (`500`) colors\n- `$theme-colors` lists all semantically named theme colors (shown below)\n- `$grays` lists all tints and shades of gray\n\nWithin `scss/_variables.scss`, you'll find Bootstrap's color variables and Sass map. Here's an example of the `$colors` Sass map:\n\n\u003CScssDocs name=\"colors-map\" file=\"scss/_variables.scss\" />\n\nAdd, remove, or modify values within the map to update how they're used in many other components. Unfortunately at this time, not _every_ component utilizes this Sass map. Future updates will strive to improve upon this. Until then, plan on making use of the `${color}` variables and this Sass map.\n\n### Example\n\nHere's how you can use these in your Sass:\n\n```scss\n.alpha { color: $purple; }\n.beta {\n color: $yellow-300;\n background-color: $indigo-900;\n}\n```\n\n[Color]([[docsref:/utilities/colors]]) and [background]([[docsref:/utilities/background]]) utility classes are also available for setting `color` and `background-color` using the `500` color values.\n\n## Generating utilities\n\n\u003CAddedIn version=\"5.1.0\"/>\n\nBootstrap doesn't include `color` and `background-color` utilities for every color variable, but you can generate these yourself with our [utility API]([[docsref:/utilities/api]]) and our extended Sass maps added in v5.1.0.\n\n1. To start, make sure you've imported our functions, variables, mixins, and utilities.\n2. Use our `map-merge-multiple()` function to quickly merge multiple Sass maps together in a new map.\n3. Merge this new combined map to extend any utility with a `{color}-{level}` class name.\n\nHere's an example that generates text color utilities (e.g., `.text-purple-500`) using the above steps.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$all-colors: map-merge-multiple($blues, $indigos, $purples, $pinks, $reds, $oranges, $yellows, $greens, $teals, $cyans);\n\n$utilities: map-merge(\n $utilities,\n (\n \"color\": map-merge(\n map-get($utilities, \"color\"),\n (\n values: map-merge(\n map-get(map-get($utilities, \"color\"), \"values\"),\n (\n $all-colors\n ),\n ),\n ),\n ),\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\nThis will generate new `.text-{color}-{level}` utilities for every color and level. You can do the same for any other utility and property as well.","src/content/docs/customize/color.mdx","ee7e14b66b69aada","customize/color.mdx","customize/color-modes",{"id":248,"data":250,"body":255,"filePath":256,"digest":257,"legacyId":258,"deferredRender":139},{"added":251,"description":253,"title":254,"toc":139},{"version":252},"5.3","Bootstrap now supports color modes, or themes, as of v5.3.0. Explore our default light color mode and the new dark mode, or create your own using our styles as your template.","Color modes","import { getDocsRelativePath } from '@libs/path'\n\n\u003CCallout>\n**Try it yourself!** Download the source code and working demo for using Bootstrap with Stylelint, and the color modes from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/color-modes). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/color-modes?file=index.html).\n\u003C/Callout>\n\n## Dark mode\n\n**Bootstrap now supports color modes, starting with dark mode!** With v5.3.0 you can implement your own color mode toggler (see below for an example from Bootstrap's docs) and apply the different color modes as you see fit. We support a light mode (default) and now dark mode. Color modes can be toggled globally on the `\u003Chtml>` element, or on specific components and elements, thanks to the `data-bs-theme` attribute.\n\nAlternatively, you can also switch to a media query implementation thanks to our color mode mixin—see [the usage section for details](#building-with-sass). Heads up though—this eliminates your ability to change themes on a per-component basis as shown below.\n\n## Example\n\nFor example, to change the color mode of a dropdown menu, add `data-bs-theme=\"light\"` or `data-bs-theme=\"dark\"` to the parent `.dropdown`. Now, no matter the global color mode, these dropdowns will display with the specified theme value.\n\n\u003CExample class=\"d-flex justify-content-between\" code={`\u003Cdiv class=\"dropdown\" data-bs-theme=\"light\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButtonLight\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Default dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButtonLight\">\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"dropdown\" data-bs-theme=\"dark\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButtonDark\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dark dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButtonDark\">\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## How it works\n\n- As shown above, color mode styles are controlled by the `data-bs-theme` attribute. This attribute can be applied to the `\u003Chtml>` element, or to any other element or Bootstrap component. If applied to the `\u003Chtml>` element, it will apply to everything. If applied to a component or element, it will be scoped to that specific component or element.\n\n- For each color mode you wish to support, you'll need to add new overrides for the shared global CSS variables. We do this already in our `_root.scss` stylesheet for dark mode, with light mode being the default values. In writing color mode specific styles, use the mixin:\n\n ```scss\n // Color mode variables in _root.scss\n @include color-mode(dark) {\n // CSS variable overrides here...\n }\n ```\n\n- We use a custom `_variables-dark.scss` to power those shared global CSS variable overrides for dark mode. This file isn't required for your own custom color modes, but it's required for our dark mode for two reasons. First, it's better to have a single place to reset global colors. Second, some Sass variables had to be overridden for background images embedded in our CSS for accordions, form components, and more.\n\n## Usage\n\n### Enable dark mode\n\nEnable the built in dark color mode across your entire project by adding the `data-bs-theme=\"dark\"` attribute to the `\u003Chtml>` element. This will apply the dark color mode to all components and elements, other than those with a specific `data-bs-theme` attribute applied. Building on the [quick start template]([[docsref:/getting-started/introduction#quick-start]]):\n\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"en\" data-bs-theme=\"dark\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap demo\u003C/title>\n \u003Clink href=\"[[config:cdn.css]]\" rel=\"stylesheet\" integrity=\"[[config:cdn.css_hash]]\" crossorigin=\"anonymous\">\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, world!\u003C/h1>\n \u003Cscript src=\"[[config:cdn.js_bundle]]\" integrity=\"[[config:cdn.js_bundle_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n \u003C/body>\n\u003C/html>\n```\n\nBootstrap does not yet ship with a built-in color mode picker, but you can use the one from our own documentation if you like. [Learn more in the JavaScript section.](#javascript)\n\n### Building with Sass\n\nOur new dark mode option is available to use for all users of Bootstrap, but it's controlled via data attributes instead of media queries and does not automatically toggle your project's color mode. You can disable our dark mode entirely via Sass by changing `$enable-dark-mode` to `false`.\n\nWe use a custom Sass mixin, `color-mode()`, to help you control _how_ color modes are applied. By default, we use a `data` attribute approach, allowing you to create more user-friendly experiences where your visitors can choose to have an automatic dark mode or control their preference (like in our own docs here). This is also an easy and scalable way to add different themes and more custom color modes beyond light and dark.\n\nIn case you want to use media queries and only make color modes automatic, you can change the mixin's default type via Sass variable. Consider the following snippet and its compiled CSS output.\n\n```scss\n$color-mode-type: data;\n\n@include color-mode(dark) {\n .element {\n color: var(--bs-primary-text-emphasis);\n background-color: var(--bs-primary-bg-subtle);\n }\n}\n```\n\nOutputs to:\n\n```css\n[data-bs-theme=dark] .element {\n color: var(--bs-primary-text-emphasis);\n background-color: var(--bs-primary-bg-subtle);\n}\n```\n\nAnd when setting to `media-query`:\n\n```scss\n$color-mode-type: media-query;\n\n@include color-mode(dark) {\n .element {\n color: var(--bs-primary-text-emphasis);\n background-color: var(--bs-primary-bg-subtle);\n }\n}\n```\n\nOutputs to:\n\n```css\n@media (prefers-color-scheme: dark) {\n .element {\n color: var(--bs-primary-text-emphasis);\n background-color: var(--bs-primary-bg-subtle);\n }\n}\n```\n\n## Custom color modes\n\nWhile the primary use case for color modes is light and dark mode, custom color modes are also possible. Create your own `data-bs-theme` selector with a custom value as the name of your color mode, then modify our Sass and CSS variables as needed. We opted to create a separate `_variables-dark.scss` stylesheet to house Bootstrap's dark mode specific Sass variables, but that's not required for you.\n\nFor example, you can create a \"blue theme\" with the selector `data-bs-theme=\"blue\"`. In your custom Sass or CSS file, add the new selector and override any global or component CSS variables as needed. If you're using Sass, you can also use Sass's functions within your CSS variable overrides.\n\n\u003CScssDocs name=\"custom-color-mode\" file=\"site/src/scss/_content.scss\" />\n\n\u003Cdiv class=\"bd-example text-body bg-body\" data-bs-theme=\"blue\">\n \u003Cdiv class=\"h4\">Example blue theme\u003C/div>\n \u003Cp>Some paragraph text to show how the blue theme might look with written copy.\u003C/p>\n\n \u003Chr class=\"my-4\"/>\n\n \u003Cdiv class=\"dropdown\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"dropdownMenuButtonCustom\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButtonCustom\">\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv data-bs-theme=\"blue\">\n ...\n\u003C/div>\n```\n\n## JavaScript\n\nTo allow visitors or users to toggle color modes, you'll need to create a toggle element to control the `data-bs-theme` attribute on the root element, `\u003Chtml>`. We've built a toggler in our documentation that initially defers to a user's current system color mode, but provides an option to override that and pick a specific color mode.\n\nHere's a look at the JavaScript that powers it. Feel free to inspect our own documentation navbar to see how it's implemented using HTML and CSS from our own components. It is suggested to include the JavaScript at the top of your page to reduce potential screen flickering during reloading of your site. Note that if you decide to use media queries for your color modes, your JavaScript may need to be modified or removed if you prefer an implicit control.\n\n\u003CCode containerClass=\"bd-example-snippet\" lang=\"js\" filePath={getDocsRelativePath('/static/docs/[version]/assets/js/color-modes.js')} />\n\n## Adding theme colors\n\nAdding a new color in `$theme-colors` is not enough for some of our components like [alerts]([[docsref:/components/alerts]]) and [list groups]([[docsref:/components/list-group]]). New colors must also be defined in `$theme-colors-text`, `$theme-colors-bg-subtle`, and `$theme-colors-border-subtle` for light theme; but also in `$theme-colors-text-dark`, `$theme-colors-bg-subtle-dark`, and `$theme-colors-border-subtle-dark` for dark theme.\n\nThis is a manual process because Sass cannot generate its own Sass variables from an existing variable or map. In future versions of Bootstrap, we'll revisit this setup to reduce the duplication.\n\n```scss\n// Required\n@import \"functions\";\n@import \"variables\";\n@import \"variables-dark\";\n\n// Add a custom color to $theme-colors\n$custom-colors: (\n \"custom-color\": #712cf9\n);\n$theme-colors: map-merge($theme-colors, $custom-colors);\n\n@import \"maps\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Add a custom color to new theme maps\n\n// Light mode\n$custom-colors-text: (\"custom-color\": #712cf9);\n$custom-colors-bg-subtle: (\"custom-color\": #e1d2fe);\n$custom-colors-border-subtle: (\"custom-color\": #bfa1fc);\n\n$theme-colors-text: map-merge($theme-colors-text, $custom-colors-text);\n$theme-colors-bg-subtle: map-merge($theme-colors-bg-subtle, $custom-colors-bg-subtle);\n$theme-colors-border-subtle: map-merge($theme-colors-border-subtle, $custom-colors-border-subtle);\n\n// Dark mode\n$custom-colors-text-dark: (\"custom-color\": #e1d2f2);\n$custom-colors-bg-subtle-dark: (\"custom-color\": #8951fa);\n$custom-colors-border-subtle-dark: (\"custom-color\": #e1d2f2);\n\n$theme-colors-text-dark: map-merge($theme-colors-text-dark, $custom-colors-text-dark);\n$theme-colors-bg-subtle-dark: map-merge($theme-colors-bg-subtle-dark, $custom-colors-bg-subtle-dark);\n$theme-colors-border-subtle-dark: map-merge($theme-colors-border-subtle-dark, $custom-colors-border-subtle-dark);\n\n// Remainder of Bootstrap imports\n@import \"root\";\n@import \"reboot\";\n// etc\n```\n\n## CSS\n\n### Variables\n\nDozens of root level CSS variables are repeated as overrides for dark mode. These are scoped to the color mode selector, which defaults to `data-bs-theme` but [can be configured](#building-with-sass) to use a `prefers-color-scheme` media query. Use these variables as a guideline for generating your own new color modes.\n\n\u003CScssDocs name=\"root-dark-mode-vars\" file=\"scss/_root.scss\" />\n\n### Sass variables\n\nCSS variables for our dark color mode are partially generated from dark mode specific Sass variables in `_variables-dark.scss`. This also includes some custom overrides for changing the colors of embedded SVGs used throughout our components.\n\n\u003CScssDocs name=\"sass-dark-mode-vars\" file=\"scss/_variables-dark.scss\" />\n\n### Sass mixins\n\nStyles for dark mode, and any custom color modes you create, can be scoped appropriately to the `data-bs-theme` attribute selector or media query with the customizable `color-mode()` mixin. See the [Sass usage section](#building-with-sass) for more details.\n\n\u003CScssDocs name=\"color-mode-mixin\" file=\"scss/mixins/_color-mode.scss\" />","src/content/docs/customize/color-modes.mdx","b17e4c61de6235f1","customize/color-modes.mdx","content/tables",{"id":259,"data":261,"body":264,"filePath":265,"digest":266,"legacyId":267,"deferredRender":139},{"description":262,"title":263,"toc":139},"Documentation and examples for opt-in styling of tables (given their prevalent use in JavaScript plugins) with Bootstrap.","Tables","import { getData } from '@libs/data'\n\n## Overview\n\nDue to the widespread use of `\u003Ctable>` elements across third-party widgets like calendars and date pickers, Bootstrap's tables are **opt-in**. Add the base class `.table` to any `\u003Ctable>`, then extend with our optional modifier classes or custom styles. All table styles are not inherited in Bootstrap, meaning any nested tables can be styled independent from the parent.\n\nUsing the most basic table markup, here's how `.table`-based tables look in Bootstrap.\n\n\u003CTable class=\"table\" simplified={false} />\n\n## Variants\n\nUse contextual classes to color tables, table rows or individual cells.\n\n\u003CCallout>\n**Heads up!** Because of the more complicated CSS used to generate our table variants, they most likely won't see color mode adaptive styling until v6.\n\u003C/Callout>\n\n\u003Cdiv class=\"bd-example\">\n \u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">Class\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">Default\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n {getData('theme-colors').map((themeColor) => {\n return (\n \u003Ctr class={`table-${themeColor.name}`}>\n \u003Cth scope=\"row\">{themeColor.title}\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n )\n })}\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n\u003CCode code={[\n `\u003C!-- On tables -->`,\n ...getData('theme-colors').map((themeColor) => `\u003Ctable class=\"table-${themeColor.name}\">...\u003C/table>`),\n `\n\u003C!-- On rows -->`,\n ...getData('theme-colors').map((themeColor) => `\u003Ctr class=\"table-${themeColor.name}\">...\u003C/tr>`),\n `\n\u003C!-- On cells (\\`td\\` or \\`th\\`) -->\n\u003Ctr>`,\n ...getData('theme-colors').map((themeColor) => ` \u003Ctd class=\"table-${themeColor.name}\">...\u003C/td>`),\n `\u003C/tr>`\n]} lang=\"html\" />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Accented tables\n\n### Striped rows\n\nUse `.table-striped` to add zebra-striping to any table row within the `\u003Ctbody>`.\n\n\u003CTable class=\"table table-striped\" />\n\n### Striped columns\n\nUse `.table-striped-columns` to add zebra-striping to any table column.\n\n\u003CTable class=\"table table-striped-columns\" />\n\nThese classes can also be added to table variants:\n\n\u003CTable class=\"table table-dark table-striped\" />\n\n\u003CTable class=\"table table-dark table-striped-columns\" />\n\n\u003CTable class=\"table table-success table-striped\" />\n\n\u003CTable class=\"table table-success table-striped-columns\" />\n\n### Hoverable rows\n\nAdd `.table-hover` to enable a hover state on table rows within a `\u003Ctbody>`.\n\n\u003CTable class=\"table table-hover\" />\n\n\u003CTable class=\"table table-dark table-hover\" />\n\nThese hoverable rows can also be combined with the striped rows variant:\n\n\u003CTable class=\"table table-striped table-hover\" />\n\n### Active tables\n\nHighlight a table row or cell by adding a `.table-active` class.\n\n\u003Cdiv class=\"bd-example\">\n \u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr class=\"table-active\">\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\" class=\"table-active\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table\">\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr class=\"table-active\">\n ...\n \u003C/tr>\n \u003Ctr>\n ...\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\" class=\"table-active\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n```\n\n\u003Cdiv class=\"bd-example\">\n \u003Ctable class=\"table table-dark\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr class=\"table-active\">\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\" class=\"table-active\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table table-dark\">\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr class=\"table-active\">\n ...\n \u003C/tr>\n \u003Ctr>\n ...\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\" class=\"table-active\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n```\n\n## How do the variants and accented tables work?\n\nFor the accented tables ([striped rows](#striped-rows), [striped columns](#striped-columns), [hoverable rows](#hoverable-rows), and [active tables](#active-tables)), we used some techniques to make these effects work for all our [table variants](#variants):\n\n- We start by setting the background of a table cell with the `--bs-table-bg` custom property. All table variants then set that custom property to colorize the table cells. This way, we don't get into trouble if semi-transparent colors are used as table backgrounds.\n- Then we add an inset box shadow on the table cells with `box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));` to layer on top of any specified `background-color`. It uses custom cascade to override the `box-shadow`, regardless the CSS specificity. Because we use a huge spread and no blur, the color will be monotone. Since `--bs-table-accent-bg` is set to `transparent` by default, we don't have a default box shadow.\n- When either `.table-striped`, `.table-striped-columns`, `.table-hover` or `.table-active` classes are added, either `--bs-table-bg-type` or `--bs-table-bg-state` (by default set to `initial`) are set to a semitransparent color (`--bs-table-striped-bg`, `--bs-table-active-bg` or `--bs-table-hover-bg`) to colorize the background and override default `--bs-table-accent-bg`.\n- For each table variant, we generate a `--bs-table-accent-bg` color with the highest contrast depending on that color. For example, the accent color for `.table-primary` is darker while `.table-dark` has a lighter accent color.\n- Text and border colors are generated the same way, and their colors are inherited by default.\n\nBehind the scenes it looks like this:\n\n\u003CScssDocs name=\"table-variant\" file=\"scss/mixins/_table-variants.scss\" />\n\n## Table borders\n\n### Bordered tables\n\nAdd `.table-bordered` for borders on all sides of the table and cells.\n\n\u003CTable class=\"table table-bordered\" />\n\n[Border color utilities]([[docsref:/utilities/borders#border-color]]) can be added to change colors:\n\n\u003CTable class=\"table table-bordered border-primary\" />\n\n### Tables without borders\n\nAdd `.table-borderless` for a table without borders.\n\n\u003CTable class=\"table table-borderless\" />\n\n\u003CTable class=\"table table-dark table-borderless\" />\n\n## Small tables\n\nAdd `.table-sm` to make any `.table` more compact by cutting all cell `padding` in half.\n\n\u003CTable class=\"table table-sm\" />\n\n\u003CTable class=\"table table-dark table-sm\" />\n\n## Table group dividers\n\nAdd a thicker border, darker between table groups—`\u003Cthead>`, `\u003Ctbody>`, and `\u003Ctfoot>`—with `.table-group-divider`. Customize the color by changing the `border-top-color` (which we don't currently provide a utility class for at this time).\n\n\u003CExample code={`\u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody class=\"table-group-divider\">\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd colspan=\"2\">Larry the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>`} />\n\n## Vertical alignment\n\nTable cells of `\u003Cthead>` are always vertical aligned to the bottom. Table cells in `\u003Ctbody>` inherit their alignment from `\u003Ctable>` and are aligned to the top by default. Use the [vertical align]([[docsref:/utilities/vertical-align]]) classes to re-align where needed.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table align-middle\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\" class=\"w-25\">Heading 1\u003C/th>\n \u003Cth scope=\"col\" class=\"w-25\">Heading 2\u003C/th>\n \u003Cth scope=\"col\" class=\"w-25\">Heading 3\u003C/th>\n \u003Cth scope=\"col\" class=\"w-25\">Heading 4\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd>This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.\u003C/td>\n \u003C/tr>\n \u003Ctr class=\"align-bottom\">\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: bottom;\u003C/code> from the table row\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: bottom;\u003C/code> from the table row\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: bottom;\u003C/code> from the table row\u003C/td>\n \u003Ctd>This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd>This cell inherits \u003Ccode>vertical-align: middle;\u003C/code> from the table\u003C/td>\n \u003Ctd class=\"align-top\">This cell is aligned to the top.\u003C/td>\n \u003Ctd>This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table align-middle\">\n \u003Cthead>\n \u003Ctr>\n ...\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n ...\n \u003C/tr>\n \u003Ctr class=\"align-bottom\">\n ...\n \u003C/tr>\n \u003Ctr>\n \u003Ctd>...\u003C/td>\n \u003Ctd>...\u003C/td>\n \u003Ctd class=\"align-top\">This cell is aligned to the top.\u003C/td>\n \u003Ctd>...\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n```\n\n## Nesting\n\nBorder styles, active styles, and table variants are not inherited by nested tables.\n\n\u003Cdiv class=\"bd-example\">\n\u003Ctable class=\"table table-striped table-bordered\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Ctd colspan=\"4\">\n \u003Ctable class=\"table mb-0\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">Header\u003C/th>\n \u003Cth scope=\"col\">Header\u003C/th>\n \u003Cth scope=\"col\">Header\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">A\u003C/th>\n \u003Ctd>First\u003C/td>\n \u003Ctd>Last\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">B\u003C/th>\n \u003Ctd>First\u003C/td>\n \u003Ctd>Last\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">C\u003C/th>\n \u003Ctd>First\u003C/td>\n \u003Ctd>Last\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n \u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table table-striped table-bordered\">\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003Ctr>\n \u003Ctd colspan=\"4\">\n \u003Ctable class=\"table mb-0\">\n ...\n \u003C/table>\n \u003C/td>\n \u003C/tr>\n ...\n \u003C/tbody>\n\u003C/table>\n```\n\n## How nesting works\n\nTo prevent _any_ styles from leaking to nested tables, we use the child combinator (`>`) selector in our CSS. Since we need to target all the `td`s and `th`s in the `thead`, `tbody`, and `tfoot`, our selector would look pretty long without it. As such, we use the rather odd looking `.table > :not(caption) > * > *` selector to target all `td`s and `th`s of the `.table`, but none of any potential nested tables.\n\nNote that if you add `\u003Ctr>`s as direct children of a table, those `\u003Ctr>` will be wrapped in a `\u003Ctbody>` by default, thus making our selectors work as intended.\n\n## Anatomy\n\n### Table head\n\nSimilar to tables and dark tables, use the modifier classes `.table-light` or `.table-dark` to make `\u003Cthead>`s appear light or dark gray.\n\n\u003Cdiv class=\"bd-example\">\n\u003Ctable class=\"table\">\n \u003Cthead class=\"table-light\">\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table\">\n \u003Cthead class=\"table-light\">\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003C/tbody>\n\u003C/table>\n```\n\n\u003Cdiv class=\"bd-example\">\n\u003Ctable class=\"table\">\n \u003Cthead class=\"table-dark\">\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table\">\n \u003Cthead class=\"table-dark\">\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003C/tbody>\n\u003C/table>\n```\n\n### Table foot\n\n\u003Cdiv class=\"bd-example\">\n\u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003Ctfoot>\n \u003Ctr>\n \u003Ctd>Footer\u003C/td>\n \u003Ctd>Footer\u003C/td>\n \u003Ctd>Footer\u003C/td>\n \u003Ctd>Footer\u003C/td>\n \u003C/tr>\n \u003C/tfoot>\n\u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table\">\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003C/tbody>\n \u003Ctfoot>\n ...\n \u003C/tfoot>\n\u003C/table>\n```\n\n### Captions\n\nA `\u003Ccaption>` functions like a heading for a table. It helps users with screen readers to find a table and understand what it's about and decide if they want to read it.\n\n\u003Cdiv class=\"bd-example\">\n \u003Ctable class=\"table\">\n \u003Ccaption>List of users\u003C/caption>\n \u003CTableContent />\n \u003C/table>\n\u003C/div>\n\n```html\n\u003Ctable class=\"table table-sm\">\n \u003Ccaption>List of users\u003C/caption>\n \u003Cthead>\n ...\n \u003C/thead>\n \u003Ctbody>\n ...\n \u003C/tbody>\n\u003C/table>\n```\n\nYou can also put the `\u003Ccaption>` on the top of the table with `.caption-top`.\n\n\u003CExample code={`\u003Ctable class=\"table caption-top\">\n \u003Ccaption>List of users\u003C/caption>\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">First\u003C/th>\n \u003Cth scope=\"col\">Last\u003C/th>\n \u003Cth scope=\"col\">Handle\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Mark\u003C/td>\n \u003Ctd>Otto\u003C/td>\n \u003Ctd>@mdo\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Jacob\u003C/td>\n \u003Ctd>Thornton\u003C/td>\n \u003Ctd>@fat\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Larry\u003C/td>\n \u003Ctd>the Bird\u003C/td>\n \u003Ctd>@twitter\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>`} />\n\n## Responsive tables\n\nResponsive tables allow tables to be scrolled horizontally with ease. Make any table responsive across all viewports by wrapping a `.table` with `.table-responsive`. Or, pick a maximum breakpoint with which to have a responsive table up to by using `.table-responsive{-sm|-md|-lg|-xl|-xxl}`.\n\n\u003CCallout type=\"warning\">\n##### Vertical clipping/truncation\n\nResponsive tables make use of `overflow-y: hidden`, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.\n\u003C/Callout>\n\n### Always responsive\n\nAcross every breakpoint, use `.table-responsive` for horizontally scrolling tables.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table\">\n ...\n \u003C/table>\n\u003C/div>\n```\n\n### Breakpoint specific\n\nUse `.table-responsive{-sm|-md|-lg|-xl|-xxl}` as needed to create responsive tables up to a particular breakpoint. From that breakpoint and up, the table will behave normally and not scroll horizontally.\n\n**These tables may appear broken until their responsive styles apply at specific viewport widths.**\n\n{getData('breakpoints').map((breakpoint) => {\n if (breakpoint.breakpoint === 'xs') {\n return \u003CFragment />\n }\n\n return (\n \u003Cdiv class=\"bd-example\">\n \u003Cdiv class={`table-responsive${breakpoint.abbr}`}>\n \u003Ctable class=\"table\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">#\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003Cth scope=\"col\">Heading\u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth scope=\"row\">1\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">2\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth scope=\"row\">3\u003C/th>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003Ctd>Cell\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n \u003C/div>\n \u003C/div>\n )\n})}\n\n\u003CCode code={getData('breakpoints').map((breakpoint) => `\u003Cdiv class=\"table-responsive${breakpoint.abbr}\">\n \u003Ctable class=\"table\">\n ...\n \u003C/table>\n\u003C/div>\n`)} lang=\"html\" />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"table-variables\" file=\"scss/_variables.scss\" />\n\n### Sass loops\n\n\u003CScssDocs name=\"table-loop\" file=\"scss/_variables.scss\" />\n\n### Customizing\n\n- The factor variables (`$table-striped-bg-factor`, `$table-active-bg-factor` & `$table-hover-bg-factor`) are used to determine the contrast in table variants.\n- Apart from the light & dark table variants, theme colors are lightened by the `$table-bg-scale` variable.","src/content/docs/content/tables.mdx","8e3511c00f6f34f8","content/tables.mdx","customize/components",{"id":268,"data":270,"body":273,"filePath":274,"digest":275,"legacyId":276,"deferredRender":139},{"description":271,"title":272,"toc":139},"Learn how and why we build nearly all our components responsively and with base and modifier classes.","Components","## Base classes\n\nBootstrap's components are largely built with a base-modifier nomenclature. We group as many shared properties as possible into a base class, like `.btn`, and then group individual styles for each variant into modifier classes, like `.btn-primary` or `.btn-success`.\n\nTo build our modifier classes, we use Sass's `@each` loops to iterate over a Sass map. This is especially helpful for generating variants of a component by our `$theme-colors` and creating responsive variants for each breakpoint. As you customize these Sass maps and recompile, you'll automatically see your changes reflected in these loops.\n\nCheck out [our Sass maps and loops docs]([[docsref:/customize/sass#maps-and-loops]]) for how to customize these loops and extend Bootstrap's base-modifier approach to your own code.\n\n## Modifiers\n\nMany of Bootstrap's components are built with a base-modifier class approach. This means the bulk of the styling is contained to a base class (e.g., `.btn`) while style variations are confined to modifier classes (e.g., `.btn-danger`). These modifier classes are built from the `$theme-colors` map to make customizing the number and name of our modifier classes.\n\nHere are two examples of how we loop over the `$theme-colors` map to generate modifiers to the `.alert` and `.list-group` components.\n\n\u003CScssDocs name=\"alert-modifiers\" file=\"scss/_alert.scss\" />\n\n\u003CScssDocs name=\"list-group-modifiers\" file=\"scss/_list-group.scss\" />\n\n## Responsive\n\nThese Sass loops aren't limited to color maps, either. You can also generate responsive variations of your components. Take for example our responsive alignment of the dropdowns where we mix an `@each` loop for the `$grid-breakpoints` Sass map with a media query include.\n\n\u003CScssDocs name=\"responsive-breakpoints\" file=\"scss/_dropdown.scss\" />\n\nShould you modify your `$grid-breakpoints`, your changes will apply to all the loops iterating over that map.\n\n\u003CScssDocs name=\"grid-breakpoints\" file=\"scss/_variables.scss\" />\n\nFor more information and examples on how to modify our Sass maps and variables, please refer to [the CSS section of the Grid documentation]([[docsref:/layout/grid#css]]).\n\n## Creating your own\n\nWe encourage you to adopt these guidelines when building with Bootstrap to create your own components. We've extended this approach ourselves to the custom components in our documentation and examples. Components like our callouts are built just like our provided components with base and modifier classes.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"bd-callout my-0\">\n \u003Cstrong>This is a callout.\u003C/strong> We built it custom for our docs so our messages to you stand out. It has three variants via modifier classes.\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"callout\">...\u003C/div>\n```\n\nIn your CSS, you'd have something like the following where the bulk of the styling is done via `.callout`. Then, the unique styles between each variant is controlled via modifier class.\n\n```scss\n// Base class\n.callout {}\n\n// Modifier classes\n.callout-info {}\n.callout-warning {}\n.callout-danger {}\n```\n\nFor the callouts, that unique styling is just a `border-left-color`. When you combine that base class with one of those modifier classes, you get your complete component family:\n\n\u003CCallout>\n**This is an info callout.** Example text to show it in action.\n\u003C/Callout>\n\n\u003CCallout type=\"warning\">\n**This is a warning callout.** Example text to show it in action.\n\u003C/Callout>\n\n\u003CCallout type=\"danger\">\n**This is a danger callout.** Example text to show it in action.\n\u003C/Callout>","src/content/docs/customize/components.mdx","657efb0c87e1c280","customize/components.mdx","customize/css-variables",{"id":277,"data":279,"body":282,"filePath":283,"digest":284,"legacyId":285,"deferredRender":139},{"description":280,"title":281,"toc":139},"Use Bootstrap's CSS custom properties for fast and forward-looking design and development.","CSS variables","Bootstrap includes many [CSS custom properties (variables)](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) in its compiled CSS for real-time customization without the need to recompile Sass. These provide easy access to commonly used values like our theme colors, breakpoints, and primary font stacks when working in your browser's inspector, a code sandbox, or general prototyping.\n\n**All our custom properties are prefixed with `bs-`** to avoid conflicts with third party CSS.\n\n## Root variables\n\nHere are the variables we include (note that the `:root` is required) that can be accessed anywhere Bootstrap's CSS is loaded. They're located in our `_root.scss` file and included in our compiled dist files.\n\n### Default\n\nThese CSS variables are available everywhere, regardless of color mode.\n\n\u003CCode lang=\"css\" filePath=\"dist/css/bootstrap.css\" fileMatch=\":(root,\\n\\[data-bs-theme=light\\] {[^}]*})\" />\n\n### Dark mode\n\nThese variables are scoped to our built-in dark mode.\n\n\u003CCode lang=\"css\" filePath=\"dist/css/bootstrap.css\" fileMatch=\"(\\[data-bs-theme=dark\\] {[^}]*})\" />\n\n## Component variables\n\nBootstrap 5 is increasingly making use of custom properties as local variables for various components. This way we reduce our compiled CSS, ensure styles aren't inherited in places like nested tables, and allow some basic restyling and extending of Bootstrap components after Sass compilation.\n\nHave a look at our table documentation for some [insight into how we're using CSS variables]([[docsref:/content/tables#how-do-the-variants-and-accented-tables-work]]). Our [navbars also use CSS variables]([[docsref:/components/navbar#css]]) as of v5.2.0. We're also using CSS variables across our grids—primarily for gutters the [new opt-in CSS grid]([[docsref:/layout/css-grid]])—with more component usage coming in the future.\n\nWhenever possible, we'll assign CSS variables at the base component level (e.g., `.navbar` for navbar and its sub-components). This reduces guessing on where and how to customize, and allows for easy modifications by our team in future updates.\n\n## Prefix\n\nMost CSS variables use a prefix to avoid collisions with your own codebase. This prefix is in addition to the `--` that's required on every CSS variable.\n\nCustomize the prefix via the `$prefix` Sass variable. By default, it's set to `bs-` (note the trailing dash).\n\n## Examples\n\nCSS variables offer similar flexibility to Sass's variables, but without the need for compilation before being served to the browser. For example, here we're resetting our page's font and link styles with CSS variables.\n\n```css\nbody {\n font: 1rem/1.5 var(--bs-font-sans-serif);\n}\na {\n color: var(--bs-blue);\n}\n```\n\n## Focus variables\n\n\u003CAddedIn version=\"5.3.0\"/>\n\nBootstrap provides custom `:focus` styles using a combination of Sass and CSS variables that can be optionally added to specific components and elements. We do not yet globally override all `:focus` styles.\n\nIn our Sass, we set default values that can be customized before compiling.\n\n\u003CScssDocs name=\"focus-ring-variables\" file=\"scss/_variables.scss\" />\n\nThose variables are then reassigned to `:root` level CSS variables that can be customized in real-time, including with options for `x` and `y` offsets (which default to their fallback value of `0`).\n\n\u003CScssDocs name=\"root-focus-variables\" file=\"scss/_root.scss\" />\n\n## Grid breakpoints\n\nWhile we include our grid breakpoints as CSS variables (except for `xs`), be aware that **CSS variables do not work in media queries**. This is by design in the CSS spec for variables, but may change in coming years with support for `env()` variables. Check out [this Stack Overflow answer](https://stackoverflow.com/a/47212942) for some helpful links. In the meantime, you can use these variables in other CSS situations, as well as in your JavaScript.","src/content/docs/customize/css-variables.mdx","6823245e65e2f4cf","customize/css-variables.mdx","customize/options",{"id":286,"data":288,"body":291,"filePath":292,"digest":293,"legacyId":294,"deferredRender":139},{"description":289,"title":290},"Quickly customize Bootstrap with built-in variables to easily toggle global CSS preferences for controlling style and behavior.","Options","Customize Bootstrap with our built-in custom variables file and easily toggle global CSS preferences with new `$enable-*` Sass variables. Override a variable's value and recompile with `npm run test` as needed.\n\nYou can find and customize these variables for key global options in Bootstrap's `scss/_variables.scss` file.\n\n\u003CBsTable class=\"table table-options\">\n| Variable | Values | Description |\n| ------------------------------ | ---------------------------------- | -------------------------------------------------------------------------------------- |\n| `$spacer` | `1rem` (default), or any value > 0 | Specifies the default spacer value to programmatically generate our [spacer utilities]([[docsref:/utilities/spacing]]). |\n| `$enable-dark-mode` | `true` (default) or `false` | Enables built-in [dark mode support]([[docsref:/customize/color-modes#dark-mode]]) across the project and its components. |\n| `$enable-rounded` | `true` (default) or `false` | Enables predefined `border-radius` styles on various components. |\n| `$enable-shadows` | `true` or `false` (default) | Enables predefined decorative `box-shadow` styles on various components. Does not affect `box-shadow`s used for focus states. |\n| `$enable-gradients` | `true` or `false` (default) | Enables predefined gradients via `background-image` styles on various components. |\n| `$enable-transitions` | `true` (default) or `false` | Enables predefined `transition`s on various components. |\n| `$enable-reduced-motion` | `true` (default) or `false` | Enables the [`prefers-reduced-motion` media query]([[docsref:/getting-started/accessibility#reduced-motion]]), which suppresses certain animations/transitions based on the users' browser/operating system preferences. |\n| `$enable-grid-classes` | `true` (default) or `false` | Enables the generation of CSS classes for the grid system (e.g. `.row`, `.col-md-1`, etc.). |\n| `$enable-cssgrid` | `true` or `false` (default) | Enables the experimental CSS Grid system (e.g. `.grid`, `.g-col-md-1`, etc.). |\n| `$enable-container-classes` | `true` (default) or `false` | Enables the generation of CSS classes for layout containers. (New in v5.2.0) |\n| `$enable-caret` | `true` (default) or `false` | Enables pseudo element caret on `.dropdown-toggle`. |\n| `$enable-button-pointers` | `true` (default) or `false` | Add \"hand\" cursor to non-disabled button elements. |\n| `$enable-rfs` | `true` (default) or `false` | Globally enables [RFS]([[docsref:/getting-started/rfs]]). |\n| `$enable-validation-icons` | `true` (default) or `false` | Enables `background-image` icons within textual inputs and some custom forms for validation states. |\n| `$enable-negative-margins` | `true` or `false` (default) | Enables the generation of [negative margin utilities]([[docsref:/utilities/spacing#negative-margin]]). |\n| `$enable-deprecation-messages` | `true` (default) or `false` | Set to `false` to hide warnings when using any of the deprecated mixins and functions that are planned to be removed in `v6`. |\n| `$enable-important-utilities` | `true` (default) or `false` | Enables the `!important` suffix in utility classes. |\n| `$enable-smooth-scroll` | `true` (default) or `false` | Applies `scroll-behavior: smooth` globally, except for users asking for reduced motion through [`prefers-reduced-motion` media query]([[docsref:/getting-started/accessibility#reduced-motion]]) |\n\u003C/BsTable>","src/content/docs/customize/options.mdx","afd90d6916d4e702","customize/options.mdx","customize/optimize",{"id":295,"data":297,"body":300,"filePath":301,"digest":302,"legacyId":303,"deferredRender":139},{"description":298,"title":299,"toc":139},"Keep your projects lean, responsive, and maintainable so you can deliver the best experience and focus on more important jobs.","Optimize","## Lean Sass imports\n\nWhen using Sass in your asset pipeline, make sure you optimize Bootstrap by only `@import`ing the components you need. Your largest optimizations will likely come from the `Layout & Components` section of our `bootstrap.scss`.\n\n\u003CScssDocs name=\"import-stack\" file=\"scss/bootstrap.scss\" />\n\n\nIf you're not using a component, comment it out or delete it entirely. For example, if you're not using the carousel, remove that import to save some file size in your compiled CSS. Keep in mind there are some dependencies across Sass imports that may make it more difficult to omit a file.\n\n## Lean JavaScript\n\nBootstrap's JavaScript includes every component in our primary dist files (`bootstrap.js` and `bootstrap.min.js`), and even our primary dependency (Popper) with our bundle files (`bootstrap.bundle.js` and `bootstrap.bundle.min.js`). While you're customizing via Sass, be sure to remove related JavaScript.\n\nFor instance, assuming you're using your own JavaScript bundler like Webpack, Parcel, or Vite, you'd only import the JavaScript you plan on using. In the example below, we show how to just include our modal JavaScript:\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```js\n// Import just what we need\n\n// import 'bootstrap/js/dist/alert';\n// import 'bootstrap/js/dist/button';\n// import 'bootstrap/js/dist/carousel';\n// import 'bootstrap/js/dist/collapse';\n// import 'bootstrap/js/dist/dropdown';\nimport 'bootstrap/js/dist/modal';\n// import 'bootstrap/js/dist/offcanvas';\n// import 'bootstrap/js/dist/popover';\n// import 'bootstrap/js/dist/scrollspy';\n// import 'bootstrap/js/dist/tab';\n// import 'bootstrap/js/dist/toast';\n// import 'bootstrap/js/dist/tooltip';\n```\n\nThis way, you're not including any JavaScript you don't intend to use for components like buttons, carousels, and tooltips. If you're importing dropdowns, tooltips or popovers, be sure to list the Popper dependency in your `package.json` file.\n\n\u003CCallout>\n**Heads up!** Files in `bootstrap/js/dist` use the **default export**. To use them, do the following:\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```js\nimport Modal from 'bootstrap/js/dist/modal'\nconst modal = new Modal(document.getElementById('myModal'))\n```\n\u003C/Callout>\n\n## Autoprefixer .browserslistrc\n\nBootstrap depends on Autoprefixer to automatically add browser prefixes to certain CSS properties. Prefixes are dictated by our `.browserslistrc` file, found in the root of the Bootstrap repo. Customizing this list of browsers and recompiling the Sass will automatically remove some CSS from your compiled CSS, if there are vendor prefixes unique to that browser or version.\n\n## Unused CSS\n\n_Help wanted with this section, please consider opening a PR. Thanks!_\n\nWhile we don't have a prebuilt example for using [PurgeCSS](https://github.com/FullHuman/purgecss) with Bootstrap, there are some helpful articles and walkthroughs that the community has written. Here are some options:\n\n- https://medium.com/dwarves-foundation/remove-unused-css-styles-from-bootstrap-using-purgecss-88395a2c5772\n- https://lukelowrey.com/automatically-removeunused-css-from-bootstrap-or-other-frameworks\n\nLastly, this [CSS Tricks article on unused CSS](https://css-tricks.com/how-do-you-remove-unused-css-from-a-site/) shows how to use PurgeCSS and other similar tools.\n\n## Minify and gzip\n\nWhenever possible, be sure to compress all the code you serve to your visitors. If you're using Bootstrap dist files, try to stick to the minified versions (indicated by the `.min.css` and `.min.js` extensions). If you're building Bootstrap from the source with your own build system, be sure to implement your own minifiers for HTML, CSS, and JS.\n\n## Non-blocking files\n\nWhile minifying and using compression might seem like enough, making your files non-blocking ones is also a big step in making your site well-optimized and fast enough.\n\nIf you are using a [Lighthouse](https://developer.chrome.com/docs/lighthouse/overview/) plugin in Google Chrome, you may have stumbled over FCP. [The First Contentful Paint](https://web.dev/articles/fcp) metric measures the time from when the page starts loading to when any part of the page's content is rendered on the screen.\n\nYou can improve FCP by deferring non-critical JavaScript or CSS. What does that mean? Simply, JavaScript or stylesheets that don't need to be present on the first paint of your page should be marked with `async` or `defer` attributes.\n\nThis ensures that the less important resources are loaded later and not blocking the first paint. On the other hand, critical resources can be included as inline scripts or styles.\n\nIf you want to learn more about this, there are already a lot of great articles about it:\n\n- https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/\n- https://web.dev/articles/defer-non-critical-css\n\n## Always use HTTPS\n\nYour website should only be available over HTTPS connections in production. HTTPS improves the security, privacy, and availability of all sites, and [there is no such thing as non-sensitive web traffic](https://https.cio.gov/everything/). The steps to configure your website to be served exclusively over HTTPS vary widely depending on your architecture and web hosting provider, and thus are beyond the scope of these docs.\n\nSites served over HTTPS should also access all stylesheets, scripts, and other assets over HTTPS connections. Otherwise, you'll be sending users [mixed active content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content), leading to potential vulnerabilities where a site can be compromised by altering a dependency. This can lead to security issues and in-browser warnings displayed to users. Whether you're getting Bootstrap from a CDN or serving it yourself, ensure that you only access it over HTTPS connections.","src/content/docs/customize/optimize.mdx","254b0925b45ba2b8","customize/optimize.mdx","customize/overview",{"id":304,"data":306,"body":326,"filePath":327,"digest":328,"legacyId":329,"deferredRender":139},{"aliases":307,"description":308,"sections":309,"title":324,"toc":325},"/docs/[[config:docs_version]]/customize/","Learn how to theme, customize, and extend Bootstrap with Sass, a boatload of global options, an expansive color system, and more.",[310,313,315,317,319,321,322],{"description":311,"title":312},"Utilize our source Sass files to take advantage of variables, maps, mixins, and functions.","Sass",{"description":314,"title":290},"Customize Bootstrap with built-in variables to easily toggle global CSS preferences.",{"description":316,"title":243},"Learn about and customize the color systems that support the entire toolkit.",{"description":318,"title":254},"Explore our default light mode and the new dark mode, or create custom color modes yourself.",{"description":320,"title":272},"Learn how we build nearly all our components responsively and with base and modifier classes.",{"description":280,"title":281},{"description":323,"title":299},"Keep your projects lean, responsive, and maintainable so you can deliver the best experience.","Customize",false,"## Overview\n\nThere are multiple ways to customize Bootstrap. Your best path can depend on your project, the complexity of your build tools, the version of Bootstrap you're using, browser support, and more.\n\nOur two preferred methods are:\n\n1. Using Bootstrap [via package manager]([[docsref:/getting-started/download#package-managers]]) so you can use and extend our source files.\n2. Using Bootstrap's compiled distribution files or [jsDelivr]([[docsref:/getting-started/download#cdn-via-jsdelivr]]) so you can add onto or override Bootstrap's styles.\n\nWhile we cannot go into details here on how to use every package manager, we can give some guidance on [using Bootstrap with your own Sass compiler]([[docsref:/customize/sass]]).\n\nFor those who want to use the distribution files, review the [getting started page]([[docsref:/getting-started/introduction]]) for how to include those files and an example HTML page. From there, consult the docs for the layout, components, and behaviors you'd like to use.\n\nAs you familiarize yourself with Bootstrap, continue exploring this section for more details on how to utilize our global options, making use of and changing our color system, how we build our components, how to use our growing list of CSS custom properties, and how to optimize your code when building with Bootstrap.\n\n## CSPs and embedded SVGs\n\nSeveral Bootstrap components include embedded SVGs in our CSS to style components consistently and easily across browsers and devices. **For organizations with more strict \u003Cabbr title=\"Content Security Policy\">CSP\u003C/abbr> configurations**, we've documented all instances of our embedded SVGs (all of which are applied via `background-image`) so you can more thoroughly review your options.\n\n- [Accordion]([[docsref:/components/accordion]])\n- [Carousel controls]([[docsref:/components/carousel#with-controls]])\n- [Close button]([[docsref:/components/close-button]]) (used in alerts and modals)\n- [Form checkboxes and radio buttons]([[docsref:/forms/checks-radios]])\n- [Form switches]([[docsref:/forms/checks-radios#switches]])\n- [Form validation icons]([[docsref:/forms/validation#server-side]])\n- [Navbar toggle buttons]([[docsref:/components/navbar#responsive-behaviors]])\n- [Select menus]([[docsref:/forms/select]])\n\nBased on [community conversation](https://github.com/twbs/bootstrap/issues/25394), some options for addressing this in your own codebase include [replacing the URLs with locally hosted assets]([[docsref:/getting-started/webpack#extracting-svg-files]]), removing the images and using inline images (not possible in all components), and modifying your CSP. Our recommendation is to carefully review your own security policies and decide on the best path forward, if necessary.","src/content/docs/customize/overview.mdx","3bebbf56eb36be6d","customize/overview.mdx","customize/sass",{"id":330,"data":332,"body":334,"filePath":335,"digest":336,"legacyId":337,"deferredRender":139},{"description":333,"title":312,"toc":139},"Utilize our source Sass files to take advantage of variables, maps, mixins, and functions to help you build faster and customize your project.","Utilize our source Sass files to take advantage of variables, maps, mixins, and more.\n\n## File structure\n\nWhenever possible, avoid modifying Bootstrap's core files. For Sass, that means creating your own stylesheet that imports Bootstrap so you can modify and extend it. Assuming you're using a package manager like npm, you'll have a file structure that looks like this:\n\n```text\nyour-project/\n├── scss/\n│ └── custom.scss\n└── node_modules/\n│ └── bootstrap/\n│ ├── js/\n│ └── scss/\n└── index.html\n```\n\nIf you've downloaded our source files and aren't using a package manager, you'll want to manually create something similar to that structure, keeping Bootstrap's source files separate from your own.\n\n```text\nyour-project/\n├── scss/\n│ └── custom.scss\n├── bootstrap/\n│ ├── js/\n│ └── scss/\n└── index.html\n```\n\n## Importing\n\nIn your `custom.scss`, you'll import Bootstrap's source Sass files. You have two options: include all of Bootstrap, or pick the parts you need. We encourage the latter, though be aware there are some requirements and dependencies across our components. You also will need to include some JavaScript for our plugins.\n\n```scss\n// Custom.scss\n// Option A: Include all of Bootstrap\n\n// Include any default variable overrides here (though functions won't be available)\n\n@import \"../node_modules/bootstrap/scss/bootstrap\";\n\n// Then add additional custom code here\n```\n\n```scss\n// Custom.scss\n// Option B: Include parts of Bootstrap\n\n// 1. Include functions first (so you can manipulate colors, SVGs, calc, etc)\n@import \"../node_modules/bootstrap/scss/functions\";\n\n// 2. Include any default variable overrides here\n\n// 3. Include remainder of required Bootstrap stylesheets (including any separate color mode stylesheets)\n@import \"../node_modules/bootstrap/scss/variables\";\n@import \"../node_modules/bootstrap/scss/variables-dark\";\n\n// 4. Include any default map overrides here\n\n// 5. Include remainder of required parts\n@import \"../node_modules/bootstrap/scss/maps\";\n@import \"../node_modules/bootstrap/scss/mixins\";\n@import \"../node_modules/bootstrap/scss/root\";\n\n// 6. Optionally include any other parts as needed\n@import \"../node_modules/bootstrap/scss/utilities\";\n@import \"../node_modules/bootstrap/scss/reboot\";\n@import \"../node_modules/bootstrap/scss/type\";\n@import \"../node_modules/bootstrap/scss/images\";\n@import \"../node_modules/bootstrap/scss/containers\";\n@import \"../node_modules/bootstrap/scss/grid\";\n@import \"../node_modules/bootstrap/scss/helpers\";\n\n// 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`\n@import \"../node_modules/bootstrap/scss/utilities/api\";\n\n// 8. Add additional custom code here\n```\n\nWith that setup in place, you can begin to modify any of the Sass variables and maps in your `custom.scss`. You can also start to add parts of Bootstrap under the `// Optional` section as needed. We suggest using the full import stack from our `bootstrap.scss` file as your starting point.\n\n## Compiling\n\nIn order to use your custom Sass code as CSS in the browser, you need a Sass compiler. Sass ships as a CLI package, but you can also compile it with other build tools like [Gulp](https://gulpjs.com/) or [Webpack](https://webpack.js.org/), or with a GUI applications. Some IDEs also have Sass compilers built in or as downloadable extensions.\n\nWe like to use the CLI to compile our Sass, but you can use whichever method you prefer. From the command line, run the following:\n\n```shell\n# Install Sass globally\nnpm install -g sass\n\n# Watch your custom Sass for changes and compile it to CSS\nsass --watch ./scss/custom.scss ./css/custom.css\n```\n\nLearn more about your options at [sass-lang.com/install](https://sass-lang.com/install/) and [compiling with VS Code](https://code.visualstudio.com/docs/languages/css#_transpiling-sass-and-less-into-css).\n\n\u003CCallout>\n**Using Bootstrap with another build tool?** Consider reading our guides for compiling with [Webpack]([[docsref:/getting-started/webpack]]), [Parcel]([[docsref:/getting-started/parcel]]), or [Vite]([[docsref:/getting-started/vite]]). We also have production-ready demos in [our examples repository on GitHub](https://github.com/twbs/examples).\n\u003C/Callout>\n\n## Including\n\nOnce your CSS is compiled, you can include it in your HTML files. Inside your `index.html` you'll want to include your compiled CSS file. Be sure to update the path to your compiled CSS file if you've changed it.\n\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Custom Bootstrap\u003C/title>\n \u003Clink href=\"/css/custom.css\" rel=\"stylesheet\">\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, world!\u003C/h1>\n \u003C/body>\n\u003C/html>\n```\n\n## Variable defaults\n\nEvery Sass variable in Bootstrap includes the `!default` flag allowing you to override the variable's default value in your own Sass without modifying Bootstrap's source code. Copy and paste variables as needed, modify their values, and remove the `!default` flag. If a variable has already been assigned, then it won't be re-assigned by the default values in Bootstrap.\n\nYou will find the complete list of Bootstrap's variables in `scss/_variables.scss`. Some variables are set to `null`, these variables don't output the property unless they are overridden in your configuration.\n\nVariable overrides must come after our functions are imported, but before the rest of the imports.\n\nHere's an example that changes the `background-color` and `color` for the `\u003Cbody>` when importing and compiling Bootstrap via npm:\n\n```scss\n// Required\n@import \"../node_modules/bootstrap/scss/functions\";\n\n// Default variable overrides\n$body-bg: #000;\n$body-color: #111;\n\n// Required\n@import \"../node_modules/bootstrap/scss/variables\";\n@import \"../node_modules/bootstrap/scss/variables-dark\";\n@import \"../node_modules/bootstrap/scss/maps\";\n@import \"../node_modules/bootstrap/scss/mixins\";\n@import \"../node_modules/bootstrap/scss/root\";\n\n// Optional Bootstrap components here\n@import \"../node_modules/bootstrap/scss/reboot\";\n@import \"../node_modules/bootstrap/scss/type\";\n// etc\n```\n\nRepeat as necessary for any variable in Bootstrap, including the global options below.\n\n\u003CCallout name=\"info-npm-starter\" />\n\n## Maps and loops\n\nBootstrap includes a handful of Sass maps, key value pairs that make it easier to generate families of related CSS. We use Sass maps for our colors, grid breakpoints, and more. Just like Sass variables, all Sass maps include the `!default` flag and can be overridden and extended.\n\nSome of our Sass maps are merged into empty ones by default. This is done to allow easy expansion of a given Sass map, but comes at the cost of making _removing_ items from a map slightly more difficult.\n\n### Modify map\n\nAll variables in the `$theme-colors` map are defined as standalone variables. To modify an existing color in our `$theme-colors` map, add the following to your custom Sass file:\n\n```scss\n$primary: #0074d9;\n$danger: #ff4136;\n```\n\nLater on, these variables are set in Bootstrap's `$theme-colors` map:\n\n```scss\n$theme-colors: (\n \"primary\": $primary,\n \"danger\": $danger\n);\n```\n\n### Add to map\n\nAdd new colors to `$theme-colors`, or any other map, by creating a new Sass map with your custom values and merging it with the original map. In this case, we'll create a new `$custom-colors` map and merge it with `$theme-colors`.\n\n```scss\n// Create your own map\n$custom-colors: (\n \"custom-color\": #900\n);\n\n// Merge the maps\n$theme-colors: map-merge($theme-colors, $custom-colors);\n```\n\n### Remove from map\n\nTo remove colors from `$theme-colors`, or any other map, use `map-remove`. Be aware you must insert `$theme-colors` between our requirements just after its definition in `variables` and before its usage in `maps`:\n\n```scss\n// Required\n@import \"../node_modules/bootstrap/scss/functions\";\n@import \"../node_modules/bootstrap/scss/variables\";\n@import \"../node_modules/bootstrap/scss/variables-dark\";\n\n$theme-colors: map-remove($theme-colors, \"info\", \"light\", \"dark\");\n\n@import \"../node_modules/bootstrap/scss/maps\";\n@import \"../node_modules/bootstrap/scss/mixins\";\n@import \"../node_modules/bootstrap/scss/root\";\n\n// Optional\n@import \"../node_modules/bootstrap/scss/reboot\";\n@import \"../node_modules/bootstrap/scss/type\";\n// etc\n```\n\n## Required keys\n\nBootstrap assumes the presence of some specific keys within Sass maps as we used and extend these ourselves. As you customize the included maps, you may encounter errors where a specific Sass map's key is being used.\n\nFor example, we use the `primary`, `success`, and `danger` keys from `$theme-colors` for links, buttons, and form states. Replacing the values of these keys should present no issues, but removing them may cause Sass compilation issues. In these instances, you'll need to modify the Sass code that makes use of those values.\n\n## Functions\n\n### Colors\n\nNext to the [Sass maps]([[docsref:/customize/color#color-sass-maps]]) we have, theme colors can also be used as standalone variables, like `$primary`.\n\n```scss\n.custom-element {\n color: $gray-100;\n background-color: $dark;\n}\n```\n\nYou can lighten or darken colors with Bootstrap's `tint-color()` and `shade-color()` functions. These functions will mix colors with black or white, unlike Sass' native `lighten()` and `darken()` functions which will change the lightness by a fixed amount, which often doesn't lead to the desired effect.\n\n`shift-color()` combines these two functions by shading the color if the weight is positive and tinting the color if the weight is negative.\n\n\u003CScssDocs name=\"color-functions\" file=\"scss/_functions.scss\" />\n\nIn practice, you'd call the function and pass in the color and weight parameters.\n\n```scss\n.custom-element {\n color: tint-color($primary, 10%);\n}\n\n.custom-element-2 {\n color: shade-color($danger, 30%);\n}\n\n.custom-element-3 {\n color: shift-color($success, 40%);\n background-color: shift-color($success, -60%);\n}\n```\n\n### Color contrast\n\nIn order to meet the [Web Content Accessibility Guidelines (WCAG)](https://www.w3.org/TR/WCAG/) contrast requirements, authors **must** provide a minimum [text color contrast of 4.5:1](https://www.w3.org/TR/WCAG/#contrast-minimum) and a minimum [non-text color contrast of 3:1](https://www.w3.org/TR/WCAG/#non-text-contrast), with very few exceptions.\n\nTo help with this, we included the `color-contrast` function in Bootstrap. It uses the [WCAG contrast ratio algorithm](https://www.w3.org/TR/WCAG/#dfn-contrast-ratio) for calculating contrast thresholds based on [relative luminance](https://www.w3.org/TR/WCAG/#dfn-relative-luminance) in an `sRGB` color space to automatically return a light (`#fff`), dark (`#212529`) or black (`#000`) contrast color based on the specified base color. This function is especially useful for mixins or loops where you're generating multiple classes.\n\nFor example, to generate color swatches from our `$theme-colors` map:\n\n```scss\n@each $color, $value in $theme-colors {\n .swatch-#{$color} {\n color: color-contrast($value);\n }\n}\n```\n\nIt can also be used for one-off contrast needs:\n\n```scss\n.custom-element {\n color: color-contrast(#000); // returns `color: #fff`\n}\n```\n\nYou can also specify a base color with our color map functions:\n\n```scss\n.custom-element {\n color: color-contrast($dark); // returns `color: #fff`\n}\n```\n\n### Escape SVG\n\nWe use the `escape-svg` function to escape the `\u003C`, `>` and `#` characters for SVG background images. When using the `escape-svg` function, data URIs must be quoted.\n\n### Add and Subtract functions\n\nWe use the `add` and `subtract` functions to wrap the CSS `calc` function. The primary purpose of these functions is to avoid errors when a \"unitless\" `0` value is passed into a `calc` expression. Expressions like `calc(10px - 0)` will return an error in all browsers, despite being mathematically correct.\n\nExample where the calc is valid:\n\n```scss\n$border-radius: .25rem;\n$border-width: 1px;\n\n.element {\n // Output calc(.25rem - 1px) is valid\n border-radius: calc($border-radius - $border-width);\n}\n\n.element {\n // Output the same calc(.25rem - 1px) as above\n border-radius: subtract($border-radius, $border-width);\n}\n```\n\nExample where the calc is invalid:\n\n```scss\n$border-radius: .25rem;\n$border-width: 0;\n\n.element {\n // Output calc(.25rem - 0) is invalid\n border-radius: calc($border-radius - $border-width);\n}\n\n.element {\n // Output .25rem\n border-radius: subtract($border-radius, $border-width);\n}\n```\n\n## Mixins\n\nOur `scss/mixins/` directory has a ton of mixins that power parts of Bootstrap and can also be used across your own project.\n\n### Color schemes\n\nA shorthand mixin for the `prefers-color-scheme` media query is available with support for `light` and `dark` color schemes. See [the color modes documentation]([[docsref:/customize/color-modes]]) for information on our color mode mixin.\n\n\u003CScssDocs name=\"mixin-color-scheme\" file=\"scss/mixins/_color-scheme.scss\" />\n\n```scss\n.custom-element {\n @include color-scheme(light) {\n // Insert light mode styles here\n }\n\n @include color-scheme(dark) {\n // Insert dark mode styles here\n }\n}\n```","src/content/docs/customize/sass.mdx","5d4b184d3629798a","customize/sass.mdx","components/badge",{"id":338,"data":340,"body":343,"filePath":344,"digest":345,"legacyId":346,"deferredRender":139},{"description":341,"title":342,"toc":139},"Documentation and examples for badges, our small count and labeling component.","Badges","import { getData } from '@libs/data'\n\n## Examples\n\nBadges scale to match the size of the immediate parent element by using relative font sizing and `em` units. As of v5, badges no longer have focus or hover styles for links.\n\n### Headings\n\n\u003CExample code={`\u003Ch1>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h1>\n\u003Ch2>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h2>\n\u003Ch3>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h3>\n\u003Ch4>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h4>\n\u003Ch5>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h5>\n\u003Ch6>Example heading \u003Cspan class=\"badge text-bg-secondary\">New\u003C/span>\u003C/h6>`} />\n\n### Buttons\n\nBadges can be used as part of links or buttons to provide a counter.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary\">\n Notifications \u003Cspan class=\"badge text-bg-secondary\">4\u003C/span>\n\u003C/button>`} />\n\nNote that depending on how they are used, badges may be confusing for users of screen readers and similar assistive technologies. While the styling of badges provides a visual cue as to their purpose, these users will simply be presented with the content of the badge. Depending on the specific situation, these badges may seem like random additional words or numbers at the end of a sentence, link, or button.\n\nUnless the context is clear (as with the \"Notifications\" example, where it is understood that the \"4\" is the number of notifications), consider including additional context with a visually hidden piece of additional text.\n\n### Positioned\n\nUse utilities to modify a `.badge` and position it in the corner of a link or button.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary position-relative\">\n Inbox\n \u003Cspan class=\"position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger\">\n 99+\n \u003Cspan class=\"visually-hidden\">unread messages\u003C/span>\n \u003C/span>\n\u003C/button>`} />\n\nYou can also replace the `.badge` class with a few more utilities without a count for a more generic indicator.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary position-relative\">\n Profile\n \u003Cspan class=\"position-absolute top-0 start-100 translate-middle p-2 bg-danger border border-light rounded-circle\">\n \u003Cspan class=\"visually-hidden\">New alerts\u003C/span>\n \u003C/span>\n\u003C/button>`} />\n\n## Background colors\n\n\u003CAddedIn version=\"5.2.0\" />\n\nSet a `background-color` with contrasting foreground `color` with [our `.text-bg-{color}` helpers]([[docsref:helpers/color-background]]). Previously it was required to manually pair your choice of [`.text-{color}`]([[docsref:/utilities/colors]]) and [`.bg-{color}`]([[docsref:/utilities/background]]) utilities for styling, which you still may use if you prefer.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cspan class=\"badge text-bg-${themeColor.name}\">${themeColor.title}\u003C/span>`)} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Pill badges\n\nUse the `.rounded-pill` utility class to make badges more rounded with a larger `border-radius`.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cspan class=\"badge rounded-pill text-bg-${themeColor.name}\">${themeColor.title}\u003C/span>`)} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, badges now use local CSS variables on `.badge` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"badge-css-vars\" file=\"scss/_badge.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"badge-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/badge.mdx","749e5cf7de84ad9f","components/badge.mdx","components/alerts",{"id":347,"data":349,"body":352,"filePath":353,"digest":354,"legacyId":355,"deferredRender":139},{"description":350,"title":351,"toc":139},"Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.","Alerts","import { getData } from '@libs/data'\n\n## Examples\n\nAlerts are available for any length of text, as well as an optional close button. For proper styling, use one of the eight **required** contextual classes (e.g., `.alert-success`). For inline dismissal, use the [alerts JavaScript plugin](#dismissing).\n\n\u003CCallout>\n**Heads up!** As of v5.3.0, the `alert-variant()` Sass mixin is deprecated. Alert variants now have their CSS variables overridden in [a Sass loop](#sass-loops).\n\u003C/Callout>\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"alert alert-${themeColor.name}\" role=\"alert\">\n A simple ${themeColor.name} alert—check it out!\n\u003C/div>`)} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n### Live example\n\nClick the button below to show an alert (hidden with inline styles to start), then dismiss (and destroy) it with the built-in close button.\n\n\u003CExample addStackblitzJs code={`\u003Cdiv id=\"liveAlertPlaceholder\">\u003C/div>\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" id=\"liveAlertBtn\">Show live alert\u003C/button>`} />\n\nWe use the following JavaScript to trigger our live alert demo:\n\n\u003CJsDocs name=\"live-alert\" file=\"site/src/assets/partials/snippets.js\" />\n\n### Link color\n\nUse the `.alert-link` utility class to quickly provide matching colored links within any alert.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"alert alert-${themeColor.name}\" role=\"alert\">\n A simple ${themeColor.name} alert with \u003Ca href=\"#\" class=\"alert-link\">an example link\u003C/a>. Give it a click if you like.\n\u003C/div>`)} />\n\n### Additional content\n\nAlerts can also contain additional HTML elements like headings, paragraphs and dividers.\n\n\u003CExample code={`\u003Cdiv class=\"alert alert-success\" role=\"alert\">\n \u003Ch4 class=\"alert-heading\">Well done!\u003C/h4>\n \u003Cp>Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.\u003C/p>\n \u003Chr>\n \u003Cp class=\"mb-0\">Whenever you need to, be sure to use margin utilities to keep things nice and tidy.\u003C/p>\n\u003C/div>`} />\n\n### Icons\n\nSimilarly, you can use [flexbox utilities]([[docsref:/utilities/flex]]) and [Bootstrap Icons]([[config:icons]]) to create alerts with icons. Depending on your icons and content, you may want to add more utilities or custom styles.\n\n\u003CExample code={`\u003Cdiv class=\"alert alert-primary d-flex align-items-center\" role=\"alert\">\n \u003Csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"bi flex-shrink-0 me-2\" viewBox=\"0 0 16 16\" role=\"img\" aria-label=\"Warning:\">\n \u003Cpath d=\"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>\n \u003C/svg>\n \u003Cdiv>\n An example alert with an icon\n \u003C/div>\n\u003C/div>`} />\n\nNeed more than one icon for your alerts? Consider using more Bootstrap Icons and making a local SVG sprite like so to easily reference the same icons repeatedly.\n\n\u003CExample code={`\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"d-none\">\n \u003Csymbol id=\"check-circle-fill\" viewBox=\"0 0 16 16\">\n \u003Cpath d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z\"/>\n \u003C/symbol>\n \u003Csymbol id=\"info-fill\" viewBox=\"0 0 16 16\">\n \u003Cpath d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"/>\n \u003C/symbol>\n \u003Csymbol id=\"exclamation-triangle-fill\" viewBox=\"0 0 16 16\">\n \u003Cpath d=\"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"/>\n \u003C/symbol>\n\u003C/svg>\n\n\u003Cdiv class=\"alert alert-primary d-flex align-items-center\" role=\"alert\">\n \u003Csvg class=\"bi flex-shrink-0 me-2\" role=\"img\" aria-label=\"Info:\">\u003Cuse xlink:href=\"#info-fill\"/>\u003C/svg>\n \u003Cdiv>\n An example alert with an icon\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"alert alert-success d-flex align-items-center\" role=\"alert\">\n \u003Csvg class=\"bi flex-shrink-0 me-2\" role=\"img\" aria-label=\"Success:\">\u003Cuse xlink:href=\"#check-circle-fill\"/>\u003C/svg>\n \u003Cdiv>\n An example success alert with an icon\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"alert alert-warning d-flex align-items-center\" role=\"alert\">\n \u003Csvg class=\"bi flex-shrink-0 me-2\" role=\"img\" aria-label=\"Warning:\">\u003Cuse xlink:href=\"#exclamation-triangle-fill\"/>\u003C/svg>\n \u003Cdiv>\n An example warning alert with an icon\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"alert alert-danger d-flex align-items-center\" role=\"alert\">\n \u003Csvg class=\"bi flex-shrink-0 me-2\" role=\"img\" aria-label=\"Danger:\">\u003Cuse xlink:href=\"#exclamation-triangle-fill\"/>\u003C/svg>\n \u003Cdiv>\n An example danger alert with an icon\n \u003C/div>\n\u003C/div>`} />\n\n### Dismissing\n\nUsing the alert JavaScript plugin, it's possible to dismiss any alert inline. Here's how:\n\n- Be sure you've loaded the alert plugin, or the compiled Bootstrap JavaScript.\n- Add a [close button]([[docsref:/components/close-button]]) and the `.alert-dismissible` class, which adds extra padding to the right of the alert and positions the close button.\n- On the close button, add the `data-bs-dismiss=\"alert\"` attribute, which triggers the JavaScript functionality. Be sure to use the `\u003Cbutton>` element with it for proper behavior across all devices.\n- To animate alerts when dismissing them, be sure to add the `.fade` and `.show` classes.\n\nYou can see this in action with a live demo:\n\n\u003CExample code={`\u003Cdiv class=\"alert alert-warning alert-dismissible fade show\" role=\"alert\">\n \u003Cstrong>Holy guacamole!\u003C/strong> You should check in on some of those fields below.\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\">\u003C/button>\n\u003C/div>`} />\n\n\u003CCallout type=\"warning\">\nWhen an alert is dismissed, the element is completely removed from the page structure. If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. For this reason, we recommend including additional JavaScript that listens for the `closed.bs.alert` event and programmatically sets `focus()` to the most appropriate location in the page. If you're planning to move focus to a non-interactive element that normally does not receive focus, make sure to add `tabindex=\"-1\"` to the element.\n\u003C/Callout>\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, alerts now use local CSS variables on `.alert` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"alert-css-vars\" file=\"scss/_alert.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"alert-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\n\u003CScssDocs name=\"alert-variant-mixin\" file=\"scss/mixins/_alert.scss\" />\n\n### Sass loops\n\nLoop that generates the modifier classes with an overriding of CSS variables.\n\n\u003CScssDocs name=\"alert-modifiers\" file=\"scss/_alert.scss\" />\n\n## JavaScript behavior\n\n### Initialize\n\nInitialize elements as alerts\n\n```js\nconst alertList = document.querySelectorAll('.alert')\nconst alerts = [...alertList].map(element => new bootstrap.Alert(element))\n```\n\n\u003CCallout>\nFor the sole purpose of dismissing an alert, it isn't necessary to initialize the component manually via the JS API. By making use of `data-bs-dismiss=\"alert\"`, the component will be initialized automatically and properly dismissed.\n\nSee the [triggers](#triggers) section for more details.\n\u003C/Callout>\n\n### Triggers\n\n\u003CJsDismiss name=\"alert\" />\n\n**Note that closing an alert will remove it from the DOM.**\n\n### Methods\n\nYou can create an alert instance with the alert constructor, for example:\n\n```js\nconst bsAlert = new bootstrap.Alert('#myAlert')\n```\n\nThis makes an alert listen for click events on descendant elements which have the `data-bs-dismiss=\"alert\"` attribute. (Not necessary when using the data-api’s auto-initialization.)\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `close` | Closes an alert by removing it from the DOM. If the `.fade` and `.show` classes are present on the element, the alert will fade out before it is removed. |\n| `dispose` | Destroys an element's alert. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the alert instance associated to a DOM element. For example: `bootstrap.Alert.getInstance(alert)`. |\n| `getOrCreateInstance` | Static method which returns an alert instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Alert.getOrCreateInstance(element)`. |\n\u003C/BsTable>\n\nBasic usage:\n\n```js\nconst alert = bootstrap.Alert.getOrCreateInstance('#myAlert')\nalert.close()\n```\n\n### Events\n\nBootstrap's alert plugin exposes a few events for hooking into alert functionality.\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `close.bs.alert` | Fires immediately when the `close` instance method is called. |\n| `closed.bs.alert` | Fired when the alert has been closed and CSS transitions have completed. |\n\u003C/BsTable>\n\n```js\nconst myAlert = document.getElementById('myAlert')\nmyAlert.addEventListener('closed.bs.alert', event => {\n // do something, for instance, explicitly move focus to the most appropriate element,\n // so it doesn't get lost/reset to the start of the page\n // document.getElementById('...').focus()\n})\n```","src/content/docs/components/alerts.mdx","6607ff0c1f19842d","components/alerts.mdx","components/button-group",{"id":356,"data":358,"body":361,"filePath":362,"digest":363,"legacyId":364,"deferredRender":139},{"description":359,"title":360,"toc":139},"Group a series of buttons together on a single line or stack them in a vertical column.","Button group","## Basic example\n\nWrap a series of buttons with `.btn` in `.btn-group`.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Right\u003C/button>\n\u003C/div>`} />\n\n\u003CCallout>\nButton groups require an appropriate `role` attribute and explicit label to ensure assistive technologies like screen readers identify buttons as grouped and announce them. Use `role=\"group\"` for button groups or `role=\"toolbar\"` for button toolbars. Then use `aria-label` or `aria-labelledby` to label them.\n\u003C/Callout>\n\nThese classes can also be added to groups of links, as an alternative to the [`.nav` navigation components]([[docsref:/components/navs-tabs]]).\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Ca href=\"#\" class=\"btn btn-primary active\" aria-current=\"page\">Active link\u003C/a>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Link\u003C/a>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Link\u003C/a>\n\u003C/div>`} />\n\n## Mixed styles\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic mixed styles example\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-warning\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-success\">Right\u003C/button>\n\u003C/div>`} />\n\n## Outlined styles\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic outlined example\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Right\u003C/button>\n\u003C/div>`} />\n\n## Checkbox and radio button groups\n\nCombine button-like checkbox and radio [toggle buttons]([[docsref:/forms/checks-radios]]) into a seamless looking button group.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic checkbox toggle button group\">\n \u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btncheck1\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btncheck1\">Checkbox 1\u003C/label>\n\n \u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btncheck2\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btncheck2\">Checkbox 2\u003C/label>\n\n \u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btncheck3\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btncheck3\">Checkbox 3\u003C/label>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Basic radio toggle button group\">\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"btnradio\" id=\"btnradio1\" autocomplete=\"off\" checked>\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btnradio1\">Radio 1\u003C/label>\n\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"btnradio\" id=\"btnradio2\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btnradio2\">Radio 2\u003C/label>\n\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"btnradio\" id=\"btnradio3\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-primary\" for=\"btnradio3\">Radio 3\u003C/label>\n\u003C/div>`} />\n\n## Button toolbar\n\nCombine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.\n\n\u003CExample code={`\u003Cdiv class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Toolbar with button groups\">\n \u003Cdiv class=\"btn-group me-2\" role=\"group\" aria-label=\"First group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">2\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">3\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">4\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"btn-group me-2\" role=\"group\" aria-label=\"Second group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">5\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">6\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">7\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Third group\">\n \u003Cbutton type=\"button\" class=\"btn btn-info\">8\u003C/button>\n \u003C/div>\n\u003C/div>`} />\n\nFeel free to mix input groups with button groups in your toolbars. Similar to the example above, you'll likely need some utilities though to space things properly.\n\n\u003CExample code={`\u003Cdiv class=\"btn-toolbar mb-3\" role=\"toolbar\" aria-label=\"Toolbar with button groups\">\n \u003Cdiv class=\"btn-group me-2\" role=\"group\" aria-label=\"First group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">2\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">3\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">4\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\" id=\"btnGroupAddon\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Input group example\" aria-label=\"Input group example\" aria-describedby=\"btnGroupAddon\">\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"btn-toolbar justify-content-between\" role=\"toolbar\" aria-label=\"Toolbar with button groups\">\n \u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"First group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">2\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">3\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">4\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\" id=\"btnGroupAddon2\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Input group example\" aria-label=\"Input group example\" aria-describedby=\"btnGroupAddon2\">\n \u003C/div>\n\u003C/div>`} />\n\n## Sizing\n\nInstead of applying button sizing classes to every button in a group, just add `.btn-group-*` to each `.btn-group`, including each one when nesting multiple groups.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group btn-group-lg\" role=\"group\" aria-label=\"Large button group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Right\u003C/button>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Default button group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Right\u003C/button>\n\u003C/div>\n\u003Cbr>\n\u003Cdiv class=\"btn-group btn-group-sm\" role=\"group\" aria-label=\"Small button group\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Middle\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-primary\">Right\u003C/button>\n\u003C/div>`} />\n\n## Nesting\n\nPlace a `.btn-group` within another `.btn-group` when you want dropdown menus mixed with a series of buttons.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\" role=\"group\" aria-label=\"Button group with nested dropdown\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">2\u003C/button>\n\n \u003Cdiv class=\"btn-group\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>`} />\n\n## Vertical variation\n\nMake a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.**\n\n\u003CExample code={`\u003Cdiv class=\"btn-group-vertical\" role=\"group\" aria-label=\"Vertical button group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"btn-group-vertical\" role=\"group\" aria-label=\"Vertical button group\">\n \u003Cdiv class=\"btn-group\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Button\u003C/button>\n \u003Cdiv class=\"btn-group dropstart\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropend\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropup\" role=\"group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Dropdown link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"btn-group-vertical\" role=\"group\" aria-label=\"Vertical radio toggle button group\">\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"vbtn-radio\" id=\"vbtn-radio1\" autocomplete=\"off\" checked>\n \u003Clabel class=\"btn btn-outline-danger\" for=\"vbtn-radio1\">Radio 1\u003C/label>\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"vbtn-radio\" id=\"vbtn-radio2\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-danger\" for=\"vbtn-radio2\">Radio 2\u003C/label>\n \u003Cinput type=\"radio\" class=\"btn-check\" name=\"vbtn-radio\" id=\"vbtn-radio3\" autocomplete=\"off\">\n \u003Clabel class=\"btn btn-outline-danger\" for=\"vbtn-radio3\">Radio 3\u003C/label>\n\u003C/div>`} />","src/content/docs/components/button-group.mdx","6844839b1fda36ae","components/button-group.mdx","components/accordion",{"id":365,"data":367,"body":373,"filePath":374,"digest":375,"legacyId":376,"deferredRender":139},{"aliases":368,"description":371,"title":372,"toc":139},[369,370],"/components/","/docs/[[config:docs_version]]/components/","Build vertically collapsing accordions in combination with our Collapse JavaScript plugin.","Accordion","## How it works\n\nThe accordion uses [collapse]([[docsref:/components/collapse]]) internally to make it collapsible.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Example\n\nClick the accordions below to expand/collapse the accordion content.\n\nTo render an accordion that's expanded by default:\n- add the `.show` class on the `.accordion-collapse` element.\n- drop the `.collapsed` class from the `.accordion-button` element and set its `aria-expanded` attribute to `true`.\n\n\u003CExample code={`\u003Cdiv class=\"accordion\" id=\"accordionExample\">\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseOne\" aria-expanded=\"true\" aria-controls=\"collapseOne\">\n Accordion Item #1\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"collapseOne\" class=\"accordion-collapse collapse show\" data-bs-parent=\"#accordionExample\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the first item's accordion body.\u003C/strong> It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseTwo\" aria-expanded=\"false\" aria-controls=\"collapseTwo\">\n Accordion Item #2\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"collapseTwo\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionExample\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the second item's accordion body.\u003C/strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseThree\" aria-expanded=\"false\" aria-controls=\"collapseThree\">\n Accordion Item #3\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"collapseThree\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionExample\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the third item's accordion body.\u003C/strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Flush\n\nAdd `.accordion-flush` to remove some borders and rounded corners to render accordions edge-to-edge with their parent container.\n\n\u003CExample class=\"bg-body-secondary\" code={`\u003Cdiv class=\"accordion accordion-flush\" id=\"accordionFlushExample\">\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#flush-collapseOne\" aria-expanded=\"false\" aria-controls=\"flush-collapseOne\">\n Accordion Item #1\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"flush-collapseOne\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionFlushExample\">\n \u003Cdiv class=\"accordion-body\">Placeholder content for this accordion, which is intended to demonstrate the \u003Ccode>.accordion-flush\u003C/code> class. This is the first item's accordion body.\u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#flush-collapseTwo\" aria-expanded=\"false\" aria-controls=\"flush-collapseTwo\">\n Accordion Item #2\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"flush-collapseTwo\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionFlushExample\">\n \u003Cdiv class=\"accordion-body\">Placeholder content for this accordion, which is intended to demonstrate the \u003Ccode>.accordion-flush\u003C/code> class. This is the second item's accordion body. Let's imagine this being filled with some actual content.\u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#flush-collapseThree\" aria-expanded=\"false\" aria-controls=\"flush-collapseThree\">\n Accordion Item #3\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"flush-collapseThree\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionFlushExample\">\n \u003Cdiv class=\"accordion-body\">Placeholder content for this accordion, which is intended to demonstrate the \u003Ccode>.accordion-flush\u003C/code> class. This is the third item's accordion body. Nothing more exciting happening here in terms of content, but just filling up the space to make it look, at least at first glance, a bit more representative of how this would look in a real-world application.\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Always open\n\nOmit the `data-bs-parent` attribute on each `.accordion-collapse` to make accordion items stay open when another item is opened.\n\n\u003CExample code={`\u003Cdiv class=\"accordion\" id=\"accordionPanelsStayOpenExample\">\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#panelsStayOpen-collapseOne\" aria-expanded=\"true\" aria-controls=\"panelsStayOpen-collapseOne\">\n Accordion Item #1\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"panelsStayOpen-collapseOne\" class=\"accordion-collapse collapse show\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the first item's accordion body.\u003C/strong> It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#panelsStayOpen-collapseTwo\" aria-expanded=\"false\" aria-controls=\"panelsStayOpen-collapseTwo\">\n Accordion Item #2\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"panelsStayOpen-collapseTwo\" class=\"accordion-collapse collapse\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the second item's accordion body.\u003C/strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"accordion-item\">\n \u003Ch2 class=\"accordion-header\">\n \u003Cbutton class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#panelsStayOpen-collapseThree\" aria-expanded=\"false\" aria-controls=\"panelsStayOpen-collapseThree\">\n Accordion Item #3\n \u003C/button>\n \u003C/h2>\n \u003Cdiv id=\"panelsStayOpen-collapseThree\" class=\"accordion-collapse collapse\">\n \u003Cdiv class=\"accordion-body\">\n \u003Cstrong>This is the third item's accordion body.\u003C/strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the \u003Ccode>.accordion-body\u003C/code>, though the transition does limit overflow.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Accessibility\n\nPlease read the [collapse accessibility section]([[docsref:/components/collapse#accessibility]]) for more information.\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, accordions now use local CSS variables on `.accordion` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"accordion-css-vars\" file=\"scss/_accordion.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"accordion-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/accordion.mdx","d2692cb45f0d0aa5","components/accordion.mdx","components/breadcrumb",{"id":377,"data":379,"body":382,"filePath":383,"digest":384,"legacyId":385,"deferredRender":139},{"description":380,"title":381,"toc":139},"Indicate the current page's location within a navigational hierarchy that automatically adds separators via CSS.","Breadcrumb","## Example\n\nUse an ordered or unordered list with linked list items to create a minimally styled breadcrumb. Use our utilities to add additional styles as desired.\n\n\u003CExample code={`\u003Cnav aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Home\u003C/li>\n \u003C/ol>\n\u003C/nav>\n\n\u003Cnav aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Library\u003C/li>\n \u003C/ol>\n\u003C/nav>\n\n\u003Cnav aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Library\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Data\u003C/li>\n \u003C/ol>\n\u003C/nav>`} />\n\n## Dividers\n\nDividers are automatically added in CSS through [`::before`](https://developer.mozilla.org/en-US/docs/Web/CSS/::before) and [`content`](https://developer.mozilla.org/en-US/docs/Web/CSS/content). They can be changed by modifying a local CSS custom property `--bs-breadcrumb-divider`, or through the `$breadcrumb-divider` Sass variable — and `$breadcrumb-divider-flipped` for its RTL counterpart, if needed. We default to our Sass variable, which is set as a fallback to the custom property. This way, you get a global divider that you can override without recompiling CSS at any time.\n\n\u003CExample code={`\u003Cnav style=\"--bs-breadcrumb-divider: '>';\" aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Library\u003C/li>\n \u003C/ol>\n\u003C/nav>`} />\n\nWhen modifying via Sass, the [quote](https://sass-lang.com/documentation/modules/string/#quote) function is required to generate the quotes around a string. For example, using `>` as the divider, you can use this:\n\n```scss\n$breadcrumb-divider: quote(\">\");\n```\n\nIt's also possible to use an **embedded SVG icon**. Apply it via our CSS custom property, or use the Sass variable.\n\n\u003CCallout>\n**Inlined SVG requires properly escaped characters.** Some reserved characters, such as `\u003C`, `>` and `#`, must be URL-encoded or escaped. We do this with the `$breadcrumb-divider` variable using our [`escape-svg()` Sass function]([[docsref:/customize/sass#escape-svg]]). When customizing the CSS variable, you must handle this yourself. Read [Kevin Weber's explanations on CodePen](https://codepen.io/kevinweber/pen/dXWoRw ) for more info.\n\u003C/Callout>\n\n\u003CExample code={`\u003Cnav style=\"--bs-breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%236c757d'/%3E%3C/svg%3E");\" aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Library\u003C/li>\n \u003C/ol>\n\u003C/nav>`} />\n\n```scss\n$breadcrumb-divider: url(\"data:image/svg+xml,\u003Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'>\u003Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='#{$breadcrumb-divider-color}'/>\u003C/svg>\");\n```\n\nYou can also remove the divider setting `--bs-breadcrumb-divider: '';` (empty strings in CSS custom properties counts as a value), or setting the Sass variable to `$breadcrumb-divider: none;`.\n\n\u003CExample code={`\u003Cnav style=\"--bs-breadcrumb-divider: '';\" aria-label=\"breadcrumb\">\n \u003Col class=\"breadcrumb\">\n \u003Cli class=\"breadcrumb-item\">\u003Ca href=\"#\">Home\u003C/a>\u003C/li>\n \u003Cli class=\"breadcrumb-item active\" aria-current=\"page\">Library\u003C/li>\n \u003C/ol>\n\u003C/nav>`} />\n\n\n```scss\n$breadcrumb-divider: none;\n```\n\n## Accessibility\n\nSince breadcrumbs provide a navigation, it's a good idea to add a meaningful label such as `aria-label=\"breadcrumb\"` to describe the type of navigation provided in the `\u003Cnav>` element, as well as applying an `aria-current=\"page\"` to the last item of the set to indicate that it represents the current page.\n\nFor more information, see the [ARIA Authoring Practices Guide breadcrumb pattern](https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/).\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, breadcrumbs now use local CSS variables on `.breadcrumb` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"breadcrumb-css-vars\" file=\"scss/_breadcrumb.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"breadcrumb-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/breadcrumb.mdx","f74a76757713e11b","components/breadcrumb.mdx","components/close-button",{"id":386,"data":388,"body":391,"filePath":392,"digest":393,"legacyId":394,"deferredRender":139},{"description":389,"title":390,"toc":139},"A generic close button for dismissing content like modals and alerts.","Close button","## Example\n\nProvide an option to dismiss or close a component with `.btn-close`. Default styling is limited, but highly customizable. Modify the Sass variables to replace the default `background-image`. **Be sure to include text for screen readers**, as we've done with `aria-label`.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn-close\" aria-label=\"Close\">\u003C/button>`} />\n\n## Disabled state\n\nDisabled close buttons change their `opacity`. We've also applied `pointer-events: none` and `user-select: none` to preventing hover and active states from triggering.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn-close\" disabled aria-label=\"Close\">\u003C/button>`} />\n\n## Dark variant\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\n\u003CCallout type=\"warning\">\n**Heads up!** As of v5.3.0, the `.btn-close-white` class is deprecated. Instead, use `data-bs-theme=\"dark\"` to change the color mode of the close button.\n\u003C/Callout>\n\nAdd `data-bs-theme=\"dark\"` to the `.btn-close`, or to its parent element, to invert the close button. This uses the `filter` property to invert the `background-image` without overriding its value.\n\n\u003CExample class=\"bg-dark\" code={`\u003Cdiv data-bs-theme=\"dark\">\n \u003Cbutton type=\"button\" class=\"btn-close\" aria-label=\"Close\">\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn-close\" disabled aria-label=\"Close\">\u003C/button>\n\u003C/div>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.3.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, close button now uses local CSS variables on `.btn-close` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"close-css-vars\" file=\"scss/_close.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"close-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/close-button.mdx","b8e90b732d1b18d5","components/close-button.mdx","components/buttons",{"id":395,"data":397,"body":400,"filePath":401,"digest":402,"legacyId":403,"deferredRender":139},{"description":398,"title":399,"toc":139},"Use Bootstrap's custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.","Buttons","import { getData } from '@libs/data'\n\n## Base class\n\nBootstrap has a base `.btn` class that sets up basic styles such as padding and content alignment. By default, `.btn` controls have a transparent border and background color, and lack any explicit focus and hover styles.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn\">Base class\u003C/button>`} />\n\nThe `.btn` class is intended to be used in conjunction with our button variants, or to serve as a basis for your own custom styles.\n\n\u003CCallout type=\"warning\">\nIf you are using the `.btn` class on its own, remember to at least define some explicit `:focus` and/or `:focus-visible` styles.\n\u003C/Callout>\n\n## Variants\n\nBootstrap includes several button variants, each serving its own semantic purpose, with a few extras thrown in for more control.\n\n\u003CExample code={[...getData('theme-colors').map((themeColor) => `\u003Cbutton type=\"button\" class=\"btn btn-${themeColor.name}\">${themeColor.title}\u003C/button>`), `\n\u003Cbutton type=\"button\" class=\"btn btn-link\">Link\u003C/button>`]} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Disable text wrapping\n\nIf you don't want the button text to wrap, you can add the `.text-nowrap` class to the button. In Sass, you can set `$btn-white-space: nowrap` to disable text wrapping for each button.\n\n## Button tags\n\nThe `.btn` classes are designed to be used with the `\u003Cbutton>` element. However, you can also use these classes on `\u003Ca>` or `\u003Cinput>` elements (though some browsers may apply a slightly different rendering).\n\nWhen using button classes on `\u003Ca>` elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a `role=\"button\"` to appropriately convey their purpose to assistive technologies such as screen readers.\n\n\u003CExample code={`\u003Ca class=\"btn btn-primary\" href=\"#\" role=\"button\">Link\u003C/a>\n\u003Cbutton class=\"btn btn-primary\" type=\"submit\">Button\u003C/button>\n\u003Cinput class=\"btn btn-primary\" type=\"button\" value=\"Input\">\n\u003Cinput class=\"btn btn-primary\" type=\"submit\" value=\"Submit\">\n\u003Cinput class=\"btn btn-primary\" type=\"reset\" value=\"Reset\">`} />\n\n## Outline buttons\n\nIn need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the `.btn-outline-*` ones to remove all background images and colors on any button.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cbutton type=\"button\" class=\"btn btn-outline-${themeColor.name}\">${themeColor.name}\u003C/button>`)} />\n\n\u003CCallout>\nSome of the button styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast.\n\u003C/Callout>\n\n## Sizes\n\nFancy larger or smaller buttons? Add `.btn-lg` or `.btn-sm` for additional sizes.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary btn-lg\">Large button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary btn-lg\">Large button\u003C/button>`} />\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary btn-sm\">Small button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary btn-sm\">Small button\u003C/button>`} />\n\nYou can even roll your own custom sizing with CSS variables:\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary\"\n style=\"--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;\">\n Custom button\n\u003C/button>`} />\n\n## Disabled state\n\nMake buttons look inactive by adding the `disabled` boolean attribute to any `\u003Cbutton>` element. Disabled buttons have `pointer-events: none` applied to, preventing hover and active states from triggering.\n\n\u003CExample code={`\u003Cbutton type=\"button\" class=\"btn btn-primary\" disabled>Primary button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" disabled>Button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-outline-primary\" disabled>Primary button\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\" disabled>Button\u003C/button>`} />\n\nDisabled buttons using the `\u003Ca>` element behave a bit different:\n\n- `\u003Ca>`s don't support the `disabled` attribute, so you must add the `.disabled` class to make it visually appear disabled.\n- Some future-friendly styles are included to disable all `pointer-events` on anchor buttons.\n- Disabled buttons using `\u003Ca>` should include the `aria-disabled=\"true\"` attribute to indicate the state of the element to assistive technologies.\n- Disabled buttons using `\u003Ca>` *should not* include the `href` attribute.\n\n\u003CExample code={`\u003Ca class=\"btn btn-primary disabled\" role=\"button\" aria-disabled=\"true\">Primary link\u003C/a>\n\u003Ca class=\"btn btn-secondary disabled\" role=\"button\" aria-disabled=\"true\">Link\u003C/a>`} />\n\n### Link functionality caveat\n\nTo cover cases where you have to keep the `href` attribute on a disabled link, the `.disabled` class uses `pointer-events: none` to try to disable the link functionality of `\u003Ca>`s. Note that this CSS property is not yet standardized for HTML, but all modern browsers support it. In addition, even in browsers that do support `pointer-events: none`, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, in addition to `aria-disabled=\"true\"`, also include a `tabindex=\"-1\"` attribute on these links to prevent them from receiving keyboard focus, and use custom JavaScript to disable their functionality altogether.\n\n\u003CExample code={`\u003Ca href=\"#\" class=\"btn btn-primary disabled\" tabindex=\"-1\" role=\"button\" aria-disabled=\"true\">Primary link\u003C/a>\n\u003Ca href=\"#\" class=\"btn btn-secondary disabled\" tabindex=\"-1\" role=\"button\" aria-disabled=\"true\">Link\u003C/a>`} />\n\n## Block buttons\n\nCreate responsive stacks of full-width, \"block buttons\" like those in Bootstrap 4 with a mix of our display and gap utilities. By using utilities instead of button-specific classes, we have much greater control over spacing, alignment, and responsive behaviors.\n\n\u003CExample code={`\u003Cdiv class=\"d-grid gap-2\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\nHere we create a responsive variation, starting with vertically stacked buttons until the `md` breakpoint, where `.d-md-block` replaces the `.d-grid` class, thus nullifying the `gap-2` utility. Resize your browser to see them change.\n\n\u003CExample code={`\u003Cdiv class=\"d-grid gap-2 d-md-block\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\nYou can adjust the width of your block buttons with grid column width classes. For example, for a half-width \"block button\", use `.col-6`. Center it horizontally with `.mx-auto`, too.\n\n\u003CExample code={`\u003Cdiv class=\"d-grid gap-2 col-6 mx-auto\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\nAdditional utilities can be used to adjust the alignment of buttons when horizontal. Here we've taken our previous responsive example and added some flex utilities and a margin utility on the button to right-align the buttons when they're no longer stacked.\n\n\u003CExample code={`\u003Cdiv class=\"d-grid gap-2 d-md-flex justify-content-md-end\">\n \u003Cbutton class=\"btn btn-primary me-md-2\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\n## Button plugin\n\nThe button plugin allows you to create simple on/off toggle buttons.\n\n\u003CCallout>\nVisually, these toggle buttons are identical to the [checkbox toggle buttons]([[docsref:/forms/checks-radios#checkbox-toggle-buttons]]). However, they are conveyed differently by assistive technologies: the checkbox toggles will be announced by screen readers as \"checked\"/\"not checked\" (since, despite their appearance, they are fundamentally still checkboxes), whereas these toggle buttons will be announced as \"button\"/\"button pressed\". The choice between these two approaches will depend on the type of toggle you are creating, and whether or not the toggle will make sense to users when announced as a checkbox or as an actual button.\n\u003C/Callout>\n\n### Toggle states\n\nAdd `data-bs-toggle=\"button\"` to toggle a button's `active` state. If you're pre-toggling a button, you must manually add the `.active` class **and** `aria-pressed=\"true\"` to ensure that it is conveyed appropriately to assistive technologies.\n\n\u003CExample code={`\u003Cp class=\"d-inline-flex gap-1\">\n \u003Cbutton type=\"button\" class=\"btn\" data-bs-toggle=\"button\">Toggle button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn active\" data-bs-toggle=\"button\" aria-pressed=\"true\">Active toggle button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn\" disabled data-bs-toggle=\"button\">Disabled toggle button\u003C/button>\n\u003C/p>\n\u003Cp class=\"d-inline-flex gap-1\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"button\">Toggle button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary active\" data-bs-toggle=\"button\" aria-pressed=\"true\">Active toggle button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" disabled data-bs-toggle=\"button\">Disabled toggle button\u003C/button>\n\u003C/p>`} />\n\n\u003CExample code={`\u003Cp class=\"d-inline-flex gap-1\">\n \u003Ca href=\"#\" class=\"btn\" role=\"button\" data-bs-toggle=\"button\">Toggle link\u003C/a>\n \u003Ca href=\"#\" class=\"btn active\" role=\"button\" data-bs-toggle=\"button\" aria-pressed=\"true\">Active toggle link\u003C/a>\n \u003Ca class=\"btn disabled\" aria-disabled=\"true\" role=\"button\" data-bs-toggle=\"button\">Disabled toggle link\u003C/a>\n\u003C/p>\n\u003Cp class=\"d-inline-flex gap-1\">\n \u003Ca href=\"#\" class=\"btn btn-primary\" role=\"button\" data-bs-toggle=\"button\">Toggle link\u003C/a>\n \u003Ca href=\"#\" class=\"btn btn-primary active\" role=\"button\" data-bs-toggle=\"button\" aria-pressed=\"true\">Active toggle link\u003C/a>\n \u003Ca class=\"btn btn-primary disabled\" aria-disabled=\"true\" role=\"button\" data-bs-toggle=\"button\">Disabled toggle link\u003C/a>\n\u003C/p>`} />\n\n### Methods\n\nYou can create a button instance with the button constructor, for example:\n\n```js\nconst bsButton = new bootstrap.Button('#myButton')\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's button. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the button instance associated with a DOM element, you can use it like this: `bootstrap.Button.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a button instance associated with a DOM element or creates a new one in case it wasn't initialized. You can use it like this: `bootstrap.Button.getOrCreateInstance(element)`. |\n| `toggle` | Toggles push state. Gives the button the appearance that it has been activated. |\n\u003C/BsTable>\n\nFor example, to toggle all buttons\n\n```js\ndocument.querySelectorAll('.btn').forEach(buttonElement => {\n const button = bootstrap.Button.getOrCreateInstance(buttonElement)\n button.toggle()\n})\n```\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, buttons now use local CSS variables on `.btn` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"btn-css-vars\" file=\"scss/_buttons.scss\" />\n\nEach `.btn-*` modifier class updates the appropriate CSS variables to minimize additional CSS rules with our `button-variant()`, `button-outline-variant()`, and `button-size()` mixins.\n\nHere's an example of building a custom `.btn-*` modifier class as we do for the buttons unique to our docs by reassigning Bootstrap's CSS variables with a mixture of our own CSS and Sass variables.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-bd-primary\">Custom button\u003C/button>\n\u003C/div>\n\n\u003CScssDocs name=\"btn-css-vars-example\" file=\"site/src/scss/_buttons.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"btn-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\nThere are three mixins for buttons: button and button outline variant mixins (both based on `$theme-colors`), plus a button size mixin.\n\n\u003CScssDocs name=\"btn-variant-mixin\" file=\"scss/mixins/_buttons.scss\" />\n\n\u003CScssDocs name=\"btn-outline-variant-mixin\" file=\"scss/mixins/_buttons.scss\" />\n\n\u003CScssDocs name=\"btn-size-mixin\" file=\"scss/mixins/_buttons.scss\" />\n\n### Sass loops\n\nButton variants (for regular and outline buttons) use their respective mixins with our `$theme-colors` map to generate the modifier classes in `scss/_buttons.scss`.\n\n\u003CScssDocs name=\"btn-variant-loops\" file=\"scss/_buttons.scss\" />","src/content/docs/components/buttons.mdx","c617334b57f91df8","components/buttons.mdx","components/carousel",{"id":404,"data":406,"body":409,"filePath":410,"digest":411,"legacyId":412,"deferredRender":139},{"description":407,"title":408,"toc":139},"A slideshow component for cycling through elements—images or slides of text—like a carousel.","Carousel","## How it works\n\n- The carousel is a slideshow for cycling through a series of content, built with CSS 3D transforms and a bit of JavaScript. It works with a series of images, text, or custom markup. It also includes support for previous/next controls and indicators.\n\n- For performance reasons, **carousels must be manually initialized** using the [carousel constructor method](#methods). Without initialization, some of the event listeners (specifically, the events needed touch/swipe support) will not be registered until a user has explicitly activated a control or indicator.\n\n The only exception are [autoplaying carousels](#autoplaying-carousels) with the `data-bs-ride=\"carousel\"` attribute as these are initialized automatically on page load. If you're using autoplaying carousels with the data attribute, **don't explicitly initialize the same carousels with the constructor method.**\n\n- Nested carousels are not supported. You should also be aware that carousels in general can often cause usability and accessibility challenges.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Basic examples\n\nHere is a basic example of a carousel with three slides. Note the previous/next controls. We recommend using `\u003Cbutton>` elements, but you can also use `\u003Ca>` elements with `role=\"button\"`.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExample\" class=\"carousel slide\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExample\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExample\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\nCarousels don't automatically normalize slide dimensions. As such, you may need to use additional utilities or custom styles to appropriately size content. While carousels support previous/next controls and indicators, they're not explicitly required. Add and customize as you see fit.\n\n**You must add the `.active` class to one of the slides**, otherwise the carousel will not be visible. Also be sure to set a unique `id` on the `.carousel` for optional controls, especially if you're using multiple carousels on a single page. Control and indicator elements must have a `data-bs-target` attribute (or `href` for links) that matches the `id` of the `.carousel` element.\n\n### Indicators\n\nYou can add indicators to the carousel, alongside the previous/next controls. The indicators let users jump directly to a particular slide.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleIndicators\" class=\"carousel slide\">\n \u003Cdiv class=\"carousel-indicators\">\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide-to=\"0\" class=\"active\" aria-current=\"true\" aria-label=\"Slide 1\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide-to=\"1\" aria-label=\"Slide 2\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide-to=\"2\" aria-label=\"Slide 3\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleIndicators\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n### Captions\n\nYou can add captions to your slides with the `.carousel-caption` element within any `.carousel-item`. They can be easily hidden on smaller viewports, as shown below, with optional [display utilities]([[docsref:/utilities/display]]). We hide them initially with `.d-none` and bring them back on medium-sized devices with `.d-md-block`.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleCaptions\" class=\"carousel slide\">\n \u003Cdiv class=\"carousel-indicators\">\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide-to=\"0\" class=\"active\" aria-current=\"true\" aria-label=\"Slide 1\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide-to=\"1\" aria-label=\"Slide 2\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide-to=\"2\" aria-label=\"Slide 3\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>First slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the first slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>Second slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the second slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>Third slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the third slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleCaptions\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n### Crossfade\n\nAdd `.carousel-fade` to your carousel to animate slides with a fade transition instead of a slide. Depending on your carousel content (e.g., text only slides), you may want to add `.bg-body` or some custom CSS to the `.carousel-item`s for proper crossfading.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleFade\" class=\"carousel slide carousel-fade\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleFade\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleFade\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n## Autoplaying carousels\n\nYou can make your carousels autoplay on page load by setting the `ride` option to `carousel`. Autoplaying carousels automatically pause while hovered with the mouse. This behavior can be controlled with the `pause` option. In browsers that support the [Page Visibility API](https://www.w3.org/TR/page-visibility/), the carousel will stop cycling when the webpage is not visible to the user (such as when the browser tab is inactive, or when the browser window is minimized).\n\n\u003CCallout>\nFor accessibility reasons, we recommend avoiding the use of autoplaying carousels. If your page does include an autoplaying carousel, we recommend providing an additional button or control to explicitly pause/stop the carousel.\n\nSee [WCAG 2.2 Success Criterion 2.2.2 Pause, Stop, Hide](https://www.w3.org/TR/WCAG/#pause-stop-hide).\n\u003C/Callout>\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleAutoplaying\" class=\"carousel slide\" data-bs-ride=\"carousel\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleAutoplaying\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleAutoplaying\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\nWhen the `ride` option is set to `true`, rather than `carousel`, the carousel won't automatically start to cycle on page load. Instead, it will only start after the first user interaction.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleRide\" class=\"carousel slide\" data-bs-ride=\"true\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleRide\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleRide\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n### Individual `.carousel-item` interval\n\nAdd `data-bs-interval=\"\"` to a `.carousel-item` to change the amount of time to delay between automatically cycling to the next item.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleInterval\" class=\"carousel slide\" data-bs-ride=\"carousel\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\" data-bs-interval=\"10000\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\" data-bs-interval=\"2000\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleInterval\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleInterval\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n### Autoplaying carousels without controls\n\nHere's a carousel with slides only. Note the presence of the `.d-block` and `.w-100` on carousel images to prevent browser default image alignment.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleSlidesOnly\" class=\"carousel slide\" data-bs-ride=\"carousel\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Disable touch swiping\n\nCarousels support swiping left/right on touchscreen devices to move between slides. This can be disabled by setting the `touch` option to `false`.\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleControlsNoTouching\" class=\"carousel slide\" data-bs-touch=\"false\">\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#555\" background=\"#777\" text=\"First slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#444\" background=\"#666\" text=\"Second slide\" />\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#333\" background=\"#555\" text=\"Third slide\" />\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleControlsNoTouching\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleControlsNoTouching\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n## Dark variant\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\nAdd `.carousel-dark` to the `.carousel` for darker controls, indicators, and captions. Controls are inverted compared to their default white fill with the `filter` CSS property. Captions and controls have additional Sass variables that customize the `color` and `background-color`.\n\n\u003CCalloutDeprecatedDarkVariants component=\"carousel\" />\n\n\u003CExample code={`\u003Cdiv id=\"carouselExampleDark\" class=\"carousel carousel-dark slide\">\n \u003Cdiv class=\"carousel-indicators\">\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide-to=\"0\" class=\"active\" aria-current=\"true\" aria-label=\"Slide 1\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide-to=\"1\" aria-label=\"Slide 2\">\u003C/button>\n \u003Cbutton type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide-to=\"2\" aria-label=\"Slide 3\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"carousel-inner\">\n \u003Cdiv class=\"carousel-item active\" data-bs-interval=\"10000\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#aaa\" background=\"#f5f5f5\" text=\"First slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>First slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the first slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"carousel-item\" data-bs-interval=\"2000\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#bbb\" background=\"#eee\" text=\"Second slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>Second slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the second slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"carousel-item\">\n \u003CPlaceholder width=\"800\" height=\"400\" class=\"bd-placeholder-img-lg d-block w-100\" color=\"#999\" background=\"#e5e5e5\" text=\"Third slide\" />\n \u003Cdiv class=\"carousel-caption d-none d-md-block\">\n \u003Ch5>Third slide label\u003C/h5>\n \u003Cp>Some representative placeholder content for the third slide.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cbutton class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide=\"prev\">\n \u003Cspan class=\"carousel-control-prev-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Previous\u003C/span>\n \u003C/button>\n \u003Cbutton class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselExampleDark\" data-bs-slide=\"next\">\n \u003Cspan class=\"carousel-control-next-icon\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\">Next\u003C/span>\n \u003C/button>\n\u003C/div>`} />\n\n## Custom transition\n\nThe transition duration of `.carousel-item` can be changed with the `$carousel-transition-duration` Sass variable before compiling or custom styles if you're using the compiled CSS. If multiple transitions are applied, make sure the transform transition is defined first (e.g. `transition: transform 2s ease, opacity .5s ease-out`).\n\n## CSS\n\n### Sass variables\n\nVariables for all carousels:\n\n\u003CScssDocs name=\"carousel-variables\" file=\"scss/_variables.scss\" />\n\nVariables for the [dark carousel](#dark-variant):\n\n\u003CScssDocs name=\"carousel-dark-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\n### Via data attributes\n\nUse data attributes to easily control the position of the carousel. `data-bs-slide` accepts the keywords `prev` or `next`, which alters the slide position relative to its current position. Alternatively, use `data-bs-slide-to` to pass a raw slide index to the carousel `data-bs-slide-to=\"2\"`, which shifts the slide position to a particular index beginning with `0`.\n\n### Via JavaScript\n\nCall carousel manually with:\n\n```js\nconst carousel = new bootstrap.Carousel('#myCarousel')\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `interval` | number | `5000` | The amount of time to delay between automatically cycling an item. |\n| `keyboard` | boolean | `true` | Whether the carousel should react to keyboard events. |\n| `pause` | string, boolean | `\"hover\"` | If set to `\"hover\"`, pauses the cycling of the carousel on `mouseenter` and resumes the cycling of the carousel on `mouseleave`. If set to `false`, hovering over the carousel won't pause it. On touch-enabled devices, when set to `\"hover\"`, cycling will pause on `touchend` (once the user finished interacting with the carousel) for two intervals, before automatically resuming. This is in addition to the mouse behavior. |\n| `ride` | string, boolean | `false` | If set to `true`, autoplays the carousel after the user manually cycles the first item. If set to `\"carousel\"`, autoplays the carousel on load. |\n| `touch` | boolean | `true` | Whether the carousel should support left/right swipe interactions on touchscreen devices. |\n| `wrap` | boolean | `true` | Whether the carousel should cycle continuously or have hard stops. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nYou can create a carousel instance with the carousel constructor, and pass on any additional options. For example, to manually initialize an autoplaying carousel (assuming you're not using the `data-bs-ride=\"carousel\"` attribute in the markup itself) with a specific interval and with touch support disabled, you can use:\n\n```js\nconst myCarouselElement = document.querySelector('#myCarousel')\n\nconst carousel = new bootstrap.Carousel(myCarouselElement, {\n interval: 2000,\n touch: false\n})\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `cycle` | Starts cycling through the carousel items from left to right. |\n| `dispose` | Destroys an element's carousel. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the carousel instance associated to a DOM element. You can use it like this: `bootstrap.Carousel.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a carousel instance associated to a DOM element, or creates a new one in case it wasn't initialized. You can use it like this: `bootstrap.Carousel.getOrCreateInstance(element)`. |\n| `next` | Cycles to the next item. **Returns to the caller before the next item has been shown** (e.g., before the `slid.bs.carousel` event occurs). |\n| `nextWhenVisible` | Don't cycle carousel to next when the page, the carousel, or the carousel's parent aren't visible. **Returns to the caller before the target item has been shown**. |\n| `pause` | Stops the carousel from cycling through items. |\n| `prev` | Cycles to the previous item. **Returns to the caller before the previous item has been shown** (e.g., before the `slid.bs.carousel` event occurs). |\n| `to` | Cycles the carousel to a particular frame (0 based, similar to an array). **Returns to the caller before the target item has been shown** (e.g., before the `slid.bs.carousel` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nBootstrap's carousel class exposes two events for hooking into carousel functionality. Both events have the following additional properties:\n\n- `direction`: The direction in which the carousel is sliding (either `\"left\"` or `\"right\"`).\n- `relatedTarget`: The DOM element that is being slid into place as the active item.\n- `from`: The index of the current item\n- `to`: The index of the next item\n\nAll carousel events are fired at the carousel itself (i.e. at the `\u003Cdiv class=\"carousel\">`).\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `slid.bs.carousel` | Fired when the carousel has completed its slide transition. |\n| `slide.bs.carousel` | Fires immediately when the `slide` instance method is invoked. |\n\u003C/BsTable>\n\n```js\nconst myCarousel = document.getElementById('myCarousel')\n\nmyCarousel.addEventListener('slide.bs.carousel', event => {\n // do something...\n})\n```","src/content/docs/components/carousel.mdx","2873ba5c11474379","components/carousel.mdx","components/card",{"id":413,"data":415,"body":418,"filePath":419,"digest":420,"legacyId":421,"deferredRender":139},{"description":416,"title":417,"toc":139},"Bootstrap's cards provide a flexible and extensible content container with multiple variants and options.","Cards","import { getData } from '@libs/data'\n\n## About\n\nA **card** is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options. If you're familiar with Bootstrap 3, cards replace our old panels, wells, and thumbnails. Similar functionality to those components is available as modifier classes for cards.\n\n## Example\n\nCards are built with as little markup and styles as possible, but still manage to deliver a ton of control and customization. Built with flexbox, they offer easy alignment and mix well with other Bootstrap components. They have no `margin` by default, so use [spacing utilities]([[docsref:/utilities/spacing]]) as needed.\n\nBelow is an example of a basic card with mixed content and a fixed width. Cards have no fixed width to start, so they'll naturally fill the full width of its parent element. This is easily customized with our various [sizing options](#sizing).\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Content types\n\nCards support a wide variety of content, including images, text, list groups, links, and more. Below are examples of what's supported.\n\n### Body\n\nThe building block of a card is the `.card-body`. Use it whenever you need a padded section within a card.\n\n\u003CExample code={`\u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-body\">\n This is some text within a card body.\n \u003C/div>\n\u003C/div>`} />\n\n### Titles, text, and links\n\nCard titles are used by adding `.card-title` to a `\u003Ch*>` tag. In the same way, links are added and placed next to each other by adding `.card-link` to an `\u003Ca>` tag.\n\nSubtitles are used by adding a `.card-subtitle` to a `\u003Ch*>` tag. If the `.card-title` and the `.card-subtitle` items are placed in a `.card-body` item, the card title and subtitle are aligned nicely.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Ch6 class=\"card-subtitle mb-2 text-body-secondary\">Card subtitle\u003C/h6>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"card-link\">Card link\u003C/a>\n \u003Ca href=\"#\" class=\"card-link\">Another link\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n### Images\n\n`.card-img-top` and `.card-img-bottom` respectively set the top and bottom corners rounded to match the card's borders. With `.card-text`, text can be added to the card. Text within `.card-text` can also be styled with the standard HTML tags.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n### List groups\n\nCreate lists of content in a card with a flush list group.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-header\">\n Featured\n \u003C/div>\n \u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003C/ul>\n \u003Cdiv class=\"card-footer\">\n Card footer\n \u003C/div>\n\u003C/div>`} />\n\n### Kitchen sink\n\nMix and match multiple content types to create the card you need, or throw everything in there. Shown below are image styles, blocks, text styles, and a list group—all wrapped in a fixed-width card.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n \u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003C/ul>\n \u003Cdiv class=\"card-body\">\n \u003Ca href=\"#\" class=\"card-link\">Card link\u003C/a>\n \u003Ca href=\"#\" class=\"card-link\">Another link\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n### Header and footer\n\nAdd an optional header and/or footer within a card.\n\n\u003CExample code={`\u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-header\">\n Featured\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\nCard headers can be styled by adding `.card-header` to `\u003Ch*>` elements.\n\n\u003CExample code={`\u003Cdiv class=\"card\">\n \u003Ch5 class=\"card-header\">Featured\u003C/h5>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-header\">\n Quote\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Cblockquote class=\"blockquote mb-0\">\n \u003Cp>A well-known quote, contained in a blockquote element.\u003C/p>\n \u003Cfooter class=\"blockquote-footer\">Someone famous in \u003Ccite title=\"Source Title\">Source Title\u003C/cite>\u003C/footer>\n \u003C/blockquote>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card text-center\">\n \u003Cdiv class=\"card-header\">\n Featured\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n \u003Cdiv class=\"card-footer text-body-secondary\">\n 2 days ago\n \u003C/div>\n\u003C/div>`} />\n\n## Sizing\n\nCards assume no specific `width` to start, so they'll be 100% wide unless otherwise stated. You can change this as needed with custom CSS, grid classes, grid Sass mixins, or utilities.\n\n### Using grid markup\n\nUsing the grid, wrap cards in columns and rows as needed.\n\n\u003CExample code={`\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-6 mb-3 mb-sm-0\">\n \u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-sm-6\">\n \u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Using utilities\n\nUse our handful of [available sizing utilities]([[docsref:/utilities/sizing]]) to quickly set a card's width.\n\n\u003CExample code={`\u003Cdiv class=\"card w-75 mb-3\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Button\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card w-50\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Button\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n### Using custom CSS\n\nUse custom CSS in your stylesheets or as inline styles to set a width.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Text alignment\n\nYou can quickly change the text alignment of any card—in its entirety or specific parts—with our [text align classes]([[docsref:/utilities/text#text-alignment]]).\n\n\u003CExample code={`\u003Cdiv class=\"card mb-3\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card text-center mb-3\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card text-end\" style=\"width: 18rem;\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Navigation\n\nAdd some navigation to a card's header (or block) with Bootstrap's [nav components]([[docsref:/components/navs-tabs]]).\n\n\u003CExample code={`\u003Cdiv class=\"card text-center\">\n \u003Cdiv class=\"card-header\">\n \u003Cul class=\"nav nav-tabs card-header-tabs\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"true\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"card text-center\">\n \u003Cdiv class=\"card-header\">\n \u003Cul class=\"nav nav-pills card-header-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Special title treatment\u003C/h5>\n \u003Cp class=\"card-text\">With supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Images\n\nCards include a few options for working with images. Choose from appending \"image caps\" at either end of a card, overlaying images with card content, or simply embedding the image in a card.\n\n### Image caps\n\nSimilar to headers and footers, cards can include top and bottom \"image caps\"—images at the top or bottom of a card.\n\n\u003CExample code={`\u003Cdiv class=\"card mb-3\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"card\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-bottom\" text=\"Image cap\" />\n\u003C/div>`} />\n\n### Image overlays\n\nTurn an image into a card background and overlay your card's text. Depending on the image, you may or may not need additional styles or utilities.\n\n\u003CExample code={`\u003Cdiv class=\"card text-bg-dark\">\n \u003CPlaceholder width=\"100%\" height=\"270\" class=\"bd-placeholder-img-lg card-img\" text=\"Card image\" />\n \u003Cdiv class=\"card-img-overlay\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall>Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CCallout>\nNote that content should not be larger than the height of the image. If content is larger than the image the content will be displayed outside the image.\n\u003C/Callout>\n\n## Horizontal\n\nUsing a combination of grid and utility classes, cards can be made horizontal in a mobile-friendly and responsive way. In the example below, we remove the grid gutters with `.g-0` and use `.col-md-*` classes to make the card horizontal at the `md` breakpoint. Further adjustments may be needed depending on your card content.\n\n\u003CExample code={`\u003Cdiv class=\"card mb-3\" style=\"max-width: 540px;\">\n \u003Cdiv class=\"row g-0\">\n \u003Cdiv class=\"col-md-4\">\n \u003CPlaceholder width=\"100%\" height=\"250\" text=\"Image\" class=\"img-fluid rounded-start\" />\n \u003C/div>\n \u003Cdiv class=\"col-md-8\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Card styles\n\nCards include various options for customizing their backgrounds, borders, and color.\n\n### Background and color\n\n\u003CAddedIn version=\"5.2.0\" />\n\nSet a `background-color` with contrasting foreground `color` with [our `.text-bg-{color}` helpers]([[docsref:helpers/color-background]]). Previously it was required to manually pair your choice of [`.text-{color}`]([[docsref:/utilities/colors]]) and [`.bg-{color}`]([[docsref:/utilities/background]]) utilities for styling, which you still may use if you prefer.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"card text-bg-${themeColor.name} mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header\">Header\u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">${themeColor.title} card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>`)} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n### Border\n\nUse [border utilities]([[docsref:/utilities/borders]]) to change just the `border-color` of a card. Note that you can put `.text-{color}` classes on the parent `.card` or a subset of the card's contents as shown below.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"card border-${themeColor.name} mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header\">Header\u003C/div>\n \u003Cdiv class=\"card-body${themeColor.contrast_color ? '' : ` text-${themeColor.name}`}\">\n \u003Ch5 class=\"card-title\">${themeColor.title} card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>`)} />\n\n### Mixins utilities\n\nYou can also change the borders on the card header and footer as needed, and even remove their `background-color` with `.bg-transparent`.\n\n\u003CExample code={`\u003Cdiv class=\"card border-success mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header bg-transparent border-success\">Header\u003C/div>\n \u003Cdiv class=\"card-body text-success\">\n \u003Ch5 class=\"card-title\">Success card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer bg-transparent border-success\">Footer\u003C/div>\n\u003C/div>`} />\n\n## Card layout\n\nIn addition to styling the content within cards, Bootstrap includes a few options for laying out series of cards. For the time being, **these layout options are not yet responsive**.\n\n### Card groups\n\nUse card groups to render cards as a single, attached element with equal width and height columns. Card groups start off stacked and use `display: flex;` to become attached with uniform dimensions starting at the `sm` breakpoint.\n\n\u003CExample code={`\u003Cdiv class=\"card-group\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This card has supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.\u003C/p>\n \u003Cp class=\"card-text\">\u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nWhen using card groups with footers, their content will automatically line up.\n\n\u003CExample code={`\u003Cdiv class=\"card-group\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This card has supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Grid cards\n\nUse the Bootstrap grid system and its [`.row-cols` classes]([[docsref:/layout/grid#row-columns]]) to control how many grid columns (wrapped around your cards) you show per row. For example, here's `.row-cols-1` laying out the cards on one column, and `.row-cols-md-2` splitting four cards to equal width across multiple rows, from the medium breakpoint up.\n\n\u003CExample code={`\u003Cdiv class=\"row row-cols-1 row-cols-md-2 g-4\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nChange it to `.row-cols-3` and you'll see the fourth card wrap.\n\n\u003CExample code={`\u003Cdiv class=\"row row-cols-1 row-cols-md-3 g-4\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nWhen you need equal height, add `.h-100` to the cards. If you want equal heights by default, you can set `$card-height: 100%` in Sass.\n\n\u003CExample code={`\u003Cdiv class=\"row row-cols-1 row-cols-md-3 g-4\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a short card.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"140\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nJust like with card groups, card footers will automatically line up.\n\n\u003CExample code={`\u003Cdiv class=\"row row-cols-1 row-cols-md-3 g-4\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This card has supporting text below as a natural lead-in to additional content.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"card h-100\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text=\"Image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"card-footer\">\n \u003Csmall class=\"text-body-secondary\">Last updated 3 mins ago\u003C/small>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Masonry\n\nIn `v4` we used a CSS-only technique to mimic the behavior of [Masonry](https://masonry.desandro.com/)-like columns, but this technique came with lots of unpleasant [side effects](https://github.com/twbs/bootstrap/pull/28922). If you want to have this type of layout in `v5`, you can just make use of Masonry plugin. **Masonry is not included in Bootstrap**, but we've made a [demo example]([[docsref:/examples/masonry]]) to help you get started.\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, cards now use local CSS variables on `.card` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"card-css-vars\" file=\"scss/_card.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"card-variables\" file=\"scss/_variables.scss\" />","src/content/docs/components/card.mdx","7a4693fffa649103","components/card.mdx","components/collapse",{"id":422,"data":424,"body":427,"filePath":428,"digest":429,"legacyId":430,"deferredRender":139},{"description":425,"title":426,"toc":139},"Toggle the visibility of content across your project with a few classes and our JavaScript plugins.","Collapse","## How it works\n\nThe collapse JavaScript plugin is used to show and hide content. Buttons or anchors are used as triggers that are mapped to specific elements you toggle. Collapsing an element will animate the `height` from its current value to `0`. Given how CSS handles animations, you cannot use `padding` on a `.collapse` element. Instead, use the class as an independent wrapping element.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Example\n\nClick the buttons below to show and hide another element via class changes:\n\n- `.collapse` hides content\n- `.collapsing` is applied during transitions\n- `.collapse.show` shows content\n\nGenerally, we recommend using a `\u003Cbutton>` with the `data-bs-target` attribute. While not recommended from a semantic point of view, you can also use an `\u003Ca>` link with the `href` attribute (and a `role=\"button\"`). In both cases, the `data-bs-toggle=\"collapse\"` is required.\n\n\u003CExample code={`\u003Cp class=\"d-inline-flex gap-1\">\n \u003Ca class=\"btn btn-primary\" data-bs-toggle=\"collapse\" href=\"#collapseExample\" role=\"button\" aria-expanded=\"false\" aria-controls=\"collapseExample\">\n Link with href\n \u003C/a>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseExample\" aria-expanded=\"false\" aria-controls=\"collapseExample\">\n Button with data-bs-target\n \u003C/button>\n\u003C/p>\n\u003Cdiv class=\"collapse\" id=\"collapseExample\">\n \u003Cdiv class=\"card card-body\">\n Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.\n \u003C/div>\n\u003C/div>`} />\n\n## Horizontal\n\nThe collapse plugin supports horizontal collapsing. Add the `.collapse-horizontal` modifier class to transition the `width` instead of `height` and set a `width` on the immediate child element. Feel free to write your own custom Sass, use inline styles, or use our [width utilities]([[docsref:/utilities/sizing]]).\n\n\u003CCallout>\nPlease note that while the example below has a `min-height` set to avoid excessive repaints in our docs, this is not explicitly required. **Only the `width` on the child element is required.**\n\u003C/Callout>\n\n\u003CExample code={`\u003Cp>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapseWidthExample\" aria-expanded=\"false\" aria-controls=\"collapseWidthExample\">\n Toggle width collapse\n \u003C/button>\n\u003C/p>\n\u003Cdiv style=\"min-height: 120px;\">\n \u003Cdiv class=\"collapse collapse-horizontal\" id=\"collapseWidthExample\">\n \u003Cdiv class=\"card card-body\" style=\"width: 300px;\">\n This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Multiple toggles and targets\n\nA `\u003Cbutton>` or `\u003Ca>` element can show and hide multiple elements by referencing them with a selector in its `data-bs-target` or `href` attribute.\nConversely, multiple `\u003Cbutton>` or `\u003Ca>` elements can show and hide the same element if they each reference it with their `data-bs-target` or `href` attribute.\n\n\u003CExample code={`\u003Cp class=\"d-inline-flex gap-1\">\n \u003Ca class=\"btn btn-primary\" data-bs-toggle=\"collapse\" href=\"#multiCollapseExample1\" role=\"button\" aria-expanded=\"false\" aria-controls=\"multiCollapseExample1\">Toggle first element\u003C/a>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#multiCollapseExample2\" aria-expanded=\"false\" aria-controls=\"multiCollapseExample2\">Toggle second element\u003C/button>\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\".multi-collapse\" aria-expanded=\"false\" aria-controls=\"multiCollapseExample1 multiCollapseExample2\">Toggle both elements\u003C/button>\n\u003C/p>\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"collapse multi-collapse\" id=\"multiCollapseExample1\">\n \u003Cdiv class=\"card card-body\">\n Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"collapse multi-collapse\" id=\"multiCollapseExample2\">\n \u003Cdiv class=\"card card-body\">\n Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Accessibility\n\nBe sure to add `aria-expanded` to the control element. This attribute explicitly conveys the current state of the collapsible element tied to the control to screen readers and similar assistive technologies. If the collapsible element is closed by default, the attribute on the control element should have a value of `aria-expanded=\"false\"`. If you've set the collapsible element to be open by default using the `show` class, set `aria-expanded=\"true\"` on the control instead. The plugin will automatically toggle this attribute on the control based on whether or not the collapsible element has been opened or closed (via JavaScript, or because the user triggered another control element also tied to the same collapsible element). If the control element's HTML element is not a button (e.g., an `\u003Ca>` or `\u003Cdiv>`), the attribute `role=\"button\"` should be added to the element.\n\nIf your control element is targeting a single collapsible element – i.e. the `data-bs-target` attribute is pointing to an `id` selector – you should add the `aria-controls` attribute to the control element, containing the `id` of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.\n\nNote that Bootstrap's current implementation does not cover the various *optional* keyboard interactions described in the [ARIA Authoring Practices Guide accordion pattern](https://www.w3.org/WAI/ARIA/apg/patterns/accordion/) - you will need to include these yourself with custom JavaScript.\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"collapse-transition\" file=\"scss/_variables.scss\" />\n\n### Classes\n\nCollapse transition classes can be found in `scss/_transitions.scss` as these are shared across multiple components (collapse and accordion).\n\n\u003CScssDocs name=\"collapse-classes\" file=\"scss/_transitions.scss\" />\n\n## Usage\n\nThe collapse plugin utilizes a few classes to handle the heavy lifting:\n\n- `.collapse` hides the content\n- `.collapse.show` shows the content\n- `.collapsing` is added when the transition starts, and removed when it finishes\n\nThese classes can be found in `_transitions.scss`.\n\n### Via data attributes\n\nJust add `data-bs-toggle=\"collapse\"` and a `data-bs-target` to the element to automatically assign control of one or more collapsible elements. The `data-bs-target` attribute accepts a CSS selector to apply the collapse to. Be sure to add the class `collapse` to the collapsible element. If you'd like it to default open, add the additional class `show`.\n\nTo add accordion-like group management to a collapsible area, add the data attribute `data-bs-parent=\"#selector\"`. Refer to the [accordion page]([[docsref:/components/accordion]]) for more information.\n\n### Via JavaScript\n\nEnable manually with:\n\n```js\nconst collapseElementList = document.querySelectorAll('.collapse')\nconst collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n`parent` | selector, DOM element | `null` | If parent is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the `card` class). The attribute has to be set on the target collapsible area. |\n`toggle` | boolean | `true` | Toggles the collapsible element on invocation. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nActivates your content as a collapsible element. Accepts an optional options `object`.\n\nYou can create a collapse instance with the constructor, for example:\n\n```js\nconst bsCollapse = new bootstrap.Collapse('#myCollapse', {\n toggle: false\n})\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's collapse. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the collapse instance associated to a DOM element, you can use it like this: `bootstrap.Collapse.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a collapse instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Collapse.getOrCreateInstance(element)`. |\n| `hide` | Hides a collapsible element. **Returns to the caller before the collapsible element has actually been hidden** (e.g., before the `hidden.bs.collapse` event occurs). |\n| `show` | Shows a collapsible element. **Returns to the caller before the collapsible element has actually been shown** (e.g., before the `shown.bs.collapse` event occurs). |\n| `toggle` | Toggles a collapsible element to shown or hidden. **Returns to the caller before the collapsible element has actually been shown or hidden** (i.e. before the `shown.bs.collapse` or `hidden.bs.collapse` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nBootstrap's collapse class exposes a few events for hooking into collapse functionality.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.collapse` | This event is fired immediately when the `hide` method has been called. |\n| `hidden.bs.collapse` | This event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete). |\n| `show.bs.collapse` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.collapse` | This event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete). |\n\u003C/BsTable>\n\n```js\nconst myCollapsible = document.getElementById('myCollapsible')\nmyCollapsible.addEventListener('hidden.bs.collapse', event => {\n // do something...\n})\n```","src/content/docs/components/collapse.mdx","68f66325b9dcdf7b","components/collapse.mdx","components/list-group",{"id":431,"data":433,"body":436,"filePath":437,"digest":438,"legacyId":439,"deferredRender":139},{"description":434,"title":435,"toc":139},"List groups are a flexible and powerful component for displaying a series of content. Modify and extend them to support just about any content within.","List group","import { getData } from '@libs/data'\n\n## Basic example\n\nThe most basic list group is an unordered list with list items and the proper classes. Build upon it with the options that follow, or with your own CSS as needed.\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003Cli class=\"list-group-item\">A fourth item\u003C/li>\n \u003Cli class=\"list-group-item\">And a fifth one\u003C/li>\n\u003C/ul>`} />\n\n## Active items\n\nAdd `.active` to a `.list-group-item` to indicate the current active selection.\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item active\" aria-current=\"true\">An active item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003Cli class=\"list-group-item\">A fourth item\u003C/li>\n \u003Cli class=\"list-group-item\">And a fifth one\u003C/li>\n\u003C/ul>`} />\n\n## Disabled items\n\nAdd `.disabled` to a `.list-group-item` to make it _appear_ disabled. Note that some elements with `.disabled` will also require custom JavaScript to fully disable their click events (e.g., links).\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item disabled\" aria-disabled=\"true\">A disabled item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003Cli class=\"list-group-item\">A fourth item\u003C/li>\n \u003Cli class=\"list-group-item\">And a fifth one\u003C/li>\n\u003C/ul>`} />\n\n## Links and buttons\n\nUse `\u003Ca>`s or `\u003Cbutton>`s to create _actionable_ list group items with hover, disabled, and active states by adding `.list-group-item-action`. We separate these pseudo-classes to ensure list groups made of non-interactive elements (like `\u003Cli>`s or `\u003Cdiv>`s) don't provide a click or tap affordance.\n\nBe sure to **not use the standard `.btn` classes here**.\n\n\u003CExample code={`\u003Cdiv class=\"list-group\">\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action active\" aria-current=\"true\">\n The current link item\n \u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">A second link item\u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">A third link item\u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">A fourth link item\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action disabled\" aria-disabled=\"true\">A disabled link item\u003C/a>\n\u003C/div>`} />\n\nWith `\u003Cbutton>`s, you can also make use of the `disabled` attribute instead of the `.disabled` class. Sadly, `\u003Ca>`s don't support the disabled attribute.\n\n\u003CExample code={`\u003Cdiv class=\"list-group\">\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action active\" aria-current=\"true\">\n The current button\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action\">A second button item\u003C/button>\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action\">A third button item\u003C/button>\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action\">A fourth button item\u003C/button>\n \u003Cbutton type=\"button\" class=\"list-group-item list-group-item-action\" disabled>A disabled button item\u003C/button>\n\u003C/div>`} />\n\n## Flush\n\nAdd `.list-group-flush` to remove some borders and rounded corners to render list group items edge-to-edge in a parent container (e.g., cards).\n\n\u003CExample code={`\u003Cul class=\"list-group list-group-flush\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n \u003Cli class=\"list-group-item\">A fourth item\u003C/li>\n \u003Cli class=\"list-group-item\">And a fifth one\u003C/li>\n\u003C/ul>`} />\n\n## Numbered\n\nAdd the `.list-group-numbered` modifier class (and optionally use an `\u003Col>` element) to opt into numbered list group items. Numbers are generated via CSS (as opposed to a `\u003Col>`s default browser styling) for better placement inside list group items and to allow for better customization.\n\nNumbers are generated by `counter-reset` on the `\u003Col>`, and then styled and placed with a `::before` pseudo-element on the `\u003Cli>` with `counter-increment` and `content`.\n\n\u003CExample code={`\u003Col class=\"list-group list-group-numbered\">\n \u003Cli class=\"list-group-item\">A list item\u003C/li>\n \u003Cli class=\"list-group-item\">A list item\u003C/li>\n \u003Cli class=\"list-group-item\">A list item\u003C/li>\n\u003C/ol>`} />\n\nThese work great with custom content as well.\n\n\u003CExample code={`\u003Col class=\"list-group list-group-numbered\">\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-start\">\n \u003Cdiv class=\"ms-2 me-auto\">\n \u003Cdiv class=\"fw-bold\">Subheading\u003C/div>\n Content for list item\n \u003C/div>\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">14\u003C/span>\n \u003C/li>\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-start\">\n \u003Cdiv class=\"ms-2 me-auto\">\n \u003Cdiv class=\"fw-bold\">Subheading\u003C/div>\n Content for list item\n \u003C/div>\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">14\u003C/span>\n \u003C/li>\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-start\">\n \u003Cdiv class=\"ms-2 me-auto\">\n \u003Cdiv class=\"fw-bold\">Subheading\u003C/div>\n Content for list item\n \u003C/div>\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">14\u003C/span>\n \u003C/li>\n\u003C/ol>`} />\n\n## Horizontal\n\nAdd `.list-group-horizontal` to change the layout of list group items from vertical to horizontal across all breakpoints. Alternatively, choose a responsive variant `.list-group-horizontal-{sm|md|lg|xl|xxl}` to make a list group horizontal starting at that breakpoint's `min-width`. Currently **horizontal list groups cannot be combined with flush list groups.**\n\n**ProTip:** Want equal-width list group items when horizontal? Add `.flex-fill` to each list group item.\n\n\u003CExample code={getData('breakpoints').map((breakpoint) => `\u003Cul class=\"list-group list-group-horizontal${breakpoint.abbr}\">\n \u003Cli class=\"list-group-item\">An item\u003C/li>\n \u003Cli class=\"list-group-item\">A second item\u003C/li>\n \u003Cli class=\"list-group-item\">A third item\u003C/li>\n\u003C/ul>`)} />\n\n## Variants\n\n\u003CCallout>\n**Heads up!** As of v5.3.0, the `list-group-item-variant()` Sass mixin is deprecated. List group item variants now have their CSS variables overridden in [a Sass loop](#sass-loops).\n\u003C/Callout>\n\nUse contextual classes to style list items with a stateful background and color.\n\n\u003CExample code={[\n `\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">A simple default list group item\u003C/li>\n `,\n ...getData('theme-colors').map((themeColor) => ` \u003Cli class=\"list-group-item list-group-item-${themeColor.name}\">A simple ${themeColor.name} list group item\u003C/li>`),\n `\u003C/ul>`\n]} />\n\n### For links and buttons\n\nContextual classes also work with `.list-group-item-action` for `\u003Ca>` and `\u003Cbutton>` elements. Note the addition of the hover styles here not present in the previous example. Also supported is the `.active` state; apply it to indicate an active selection on a contextual list group item.\n\n\u003CExample code={[\n `\u003Cdiv class=\"list-group\">\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">A simple default list group item\u003C/a>\n `,\n ...getData('theme-colors').map((themeColor) => ` \u003Ca href=\"#\" class=\"list-group-item list-group-item-action list-group-item-${themeColor.name}\">A simple ${themeColor.name} list group item\u003C/a>`),\n `\u003C/div>`\n]} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## With badges\n\nAdd badges to any list group item to show unread counts, activity, and more with the help of some [utilities]([[docsref:/utilities/flex]]).\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-center\">\n A list item\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">14\u003C/span>\n \u003C/li>\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-center\">\n A second list item\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">2\u003C/span>\n \u003C/li>\n \u003Cli class=\"list-group-item d-flex justify-content-between align-items-center\">\n A third list item\n \u003Cspan class=\"badge text-bg-primary rounded-pill\">1\u003C/span>\n \u003C/li>\n\u003C/ul>`} />\n\n## Custom content\n\nAdd nearly any HTML within, even for linked list groups like the one below, with the help of [flexbox utilities]([[docsref:/utilities/flex]]).\n\n\u003CExample code={`\u003Cdiv class=\"list-group\">\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action active\" aria-current=\"true\">\n \u003Cdiv class=\"d-flex w-100 justify-content-between\">\n \u003Ch5 class=\"mb-1\">List group item heading\u003C/h5>\n \u003Csmall>3 days ago\u003C/small>\n \u003C/div>\n \u003Cp class=\"mb-1\">Some placeholder content in a paragraph.\u003C/p>\n \u003Csmall>And some small print.\u003C/small>\n \u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">\n \u003Cdiv class=\"d-flex w-100 justify-content-between\">\n \u003Ch5 class=\"mb-1\">List group item heading\u003C/h5>\n \u003Csmall class=\"text-body-secondary\">3 days ago\u003C/small>\n \u003C/div>\n \u003Cp class=\"mb-1\">Some placeholder content in a paragraph.\u003C/p>\n \u003Csmall class=\"text-body-secondary\">And some muted small print.\u003C/small>\n \u003C/a>\n \u003Ca href=\"#\" class=\"list-group-item list-group-item-action\">\n \u003Cdiv class=\"d-flex w-100 justify-content-between\">\n \u003Ch5 class=\"mb-1\">List group item heading\u003C/h5>\n \u003Csmall class=\"text-body-secondary\">3 days ago\u003C/small>\n \u003C/div>\n \u003Cp class=\"mb-1\">Some placeholder content in a paragraph.\u003C/p>\n \u003Csmall class=\"text-body-secondary\">And some muted small print.\u003C/small>\n \u003C/a>\n\u003C/div>`} />\n\n## Checkboxes and radios\n\nPlace Bootstrap's checkboxes and radios within list group items and customize as needed. You can use them without `\u003Clabel>`s, but please remember to include an `aria-label` attribute and value for accessibility.\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"firstCheckbox\">\n \u003Clabel class=\"form-check-label\" for=\"firstCheckbox\">First checkbox\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"secondCheckbox\">\n \u003Clabel class=\"form-check-label\" for=\"secondCheckbox\">Second checkbox\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"thirdCheckbox\">\n \u003Clabel class=\"form-check-label\" for=\"thirdCheckbox\">Third checkbox\u003C/label>\n \u003C/li>\n\u003C/ul>`} />\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"radio\" name=\"listGroupRadio\" value=\"\" id=\"firstRadio\" checked>\n \u003Clabel class=\"form-check-label\" for=\"firstRadio\">First radio\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"radio\" name=\"listGroupRadio\" value=\"\" id=\"secondRadio\">\n \u003Clabel class=\"form-check-label\" for=\"secondRadio\">Second radio\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"radio\" name=\"listGroupRadio\" value=\"\" id=\"thirdRadio\">\n \u003Clabel class=\"form-check-label\" for=\"thirdRadio\">Third radio\u003C/label>\n \u003C/li>\n\u003C/ul>`} />\n\nYou can use `.stretched-link` on `\u003Clabel>`s to make the whole list group item clickable.\n\n\u003CExample code={`\u003Cul class=\"list-group\">\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"firstCheckboxStretched\">\n \u003Clabel class=\"form-check-label stretched-link\" for=\"firstCheckboxStretched\">First checkbox\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"secondCheckboxStretched\">\n \u003Clabel class=\"form-check-label stretched-link\" for=\"secondCheckboxStretched\">Second checkbox\u003C/label>\n \u003C/li>\n \u003Cli class=\"list-group-item\">\n \u003Cinput class=\"form-check-input me-1\" type=\"checkbox\" value=\"\" id=\"thirdCheckboxStretched\">\n \u003Clabel class=\"form-check-label stretched-link\" for=\"thirdCheckboxStretched\">Third checkbox\u003C/label>\n \u003C/li>\n\u003C/ul>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, list groups now use local CSS variables on `.list-group` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"list-group-css-vars\" file=\"scss/_list-group.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"list-group-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\n\u003CScssDocs name=\"list-group-mixin\" file=\"scss/mixins/_list-group.scss\" />\n\n### Sass loops\n\nLoop that generates the modifier classes with an overriding of CSS variables.\n\n\u003CScssDocs name=\"list-group-modifiers\" file=\"scss/_list-group.scss\" />\n\n## JavaScript behavior\n\nUse the tab JavaScript plugin—include it individually or through the compiled `bootstrap.js` file—to extend our list group to create tabbable panes of local content.\n\n\u003Cdiv class=\"bd-example\" role=\"tabpanel\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv class=\"list-group\" id=\"list-tab\" role=\"tablist\">\n \u003Ca class=\"list-group-item list-group-item-action active\" id=\"list-home-list\" data-bs-toggle=\"tab\" href=\"#list-home\" role=\"tab\" aria-controls=\"list-home\">Home\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-profile-list\" data-bs-toggle=\"tab\" href=\"#list-profile\" role=\"tab\" aria-controls=\"list-profile\">Profile\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-messages-list\" data-bs-toggle=\"tab\" href=\"#list-messages\" role=\"tab\" aria-controls=\"list-messages\">Messages\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-settings-list\" data-bs-toggle=\"tab\" href=\"#list-settings\" role=\"tab\" aria-controls=\"list-settings\">Settings\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv class=\"tab-content\" id=\"nav-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"list-home\" role=\"tabpanel\" aria-labelledby=\"list-home-list\">\n \u003Cp>Some placeholder content in a paragraph relating to \"Home\". And some more content, used here just to pad out and fill this tab panel. In production, you would obviously have more real content here. And not just text. It could be anything, really. Text, images, forms.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-profile\" role=\"tabpanel\" aria-labelledby=\"list-profile-list\">\n \u003Cp>Some placeholder content in a paragraph relating to \"Profile\". And some more content, used here just to pad out and fill this tab panel. In production, you would obviously have more real content here. And not just text. It could be anything, really. Text, images, forms.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-messages\" role=\"tabpanel\" aria-labelledby=\"list-messages-list\">\n \u003Cp>Some placeholder content in a paragraph relating to \"Messages\". And some more content, used here just to pad out and fill this tab panel. In production, you would obviously have more real content here. And not just text. It could be anything, really. Text, images, forms.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-settings\" role=\"tabpanel\" aria-labelledby=\"list-settings-list\">\n \u003Cp>Some placeholder content in a paragraph relating to \"Settings\". And some more content, used here just to pad out and fill this tab panel. In production, you would obviously have more real content here. And not just text. It could be anything, really. Text, images, forms.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv class=\"list-group\" id=\"list-tab\" role=\"tablist\">\n \u003Ca class=\"list-group-item list-group-item-action active\" id=\"list-home-list\" data-bs-toggle=\"list\" href=\"#list-home\" role=\"tab\" aria-controls=\"list-home\">Home\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-profile-list\" data-bs-toggle=\"list\" href=\"#list-profile\" role=\"tab\" aria-controls=\"list-profile\">Profile\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-messages-list\" data-bs-toggle=\"list\" href=\"#list-messages\" role=\"tab\" aria-controls=\"list-messages\">Messages\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" id=\"list-settings-list\" data-bs-toggle=\"list\" href=\"#list-settings\" role=\"tab\" aria-controls=\"list-settings\">Settings\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv class=\"tab-content\" id=\"nav-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"list-home\" role=\"tabpanel\" aria-labelledby=\"list-home-list\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-profile\" role=\"tabpanel\" aria-labelledby=\"list-profile-list\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-messages\" role=\"tabpanel\" aria-labelledby=\"list-messages-list\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"list-settings\" role=\"tabpanel\" aria-labelledby=\"list-settings-list\">...\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Using data attributes\n\nYou can activate a list group navigation without writing any JavaScript by simply specifying `data-bs-toggle=\"list\"` or on an element. Use these data attributes on `.list-group-item`.\n\n```html\n\u003Cdiv role=\"tabpanel\">\n \u003C!-- List group -->\n \u003Cdiv class=\"list-group\" id=\"myList\" role=\"tablist\">\n \u003Ca class=\"list-group-item list-group-item-action active\" data-bs-toggle=\"list\" href=\"#home\" role=\"tab\">Home\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" data-bs-toggle=\"list\" href=\"#profile\" role=\"tab\">Profile\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" data-bs-toggle=\"list\" href=\"#messages\" role=\"tab\">Messages\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" data-bs-toggle=\"list\" href=\"#settings\" role=\"tab\">Settings\u003C/a>\n \u003C/div>\n\n \u003C!-- Tab panes -->\n \u003Cdiv class=\"tab-content\">\n \u003Cdiv class=\"tab-pane active\" id=\"home\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"profile\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"messages\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"settings\" role=\"tabpanel\">...\u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Via JavaScript\n\nEnable tabbable list item via JavaScript (each list item needs to be activated individually):\n\n```js\nconst triggerTabList = document.querySelectorAll('#myTab a')\ntriggerTabList.forEach(triggerEl => {\n const tabTrigger = new bootstrap.Tab(triggerEl)\n\n triggerEl.addEventListener('click', event => {\n event.preventDefault()\n tabTrigger.show()\n })\n})\n```\n\nYou can activate individual list item in several ways:\n\n```js\nconst triggerEl = document.querySelector('#myTab a[href=\"#profile\"]')\nbootstrap.Tab.getInstance(triggerEl).show() // Select tab by name\n\nconst triggerFirstTabEl = document.querySelector('#myTab li:first-child a')\nbootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab\n```\n\n### Fade effect\n\nTo make tabs panel fade in, add `.fade` to each `.tab-pane`. The first tab pane must also have `.show` to make the initial content visible.\n\n```html\n\u003Cdiv class=\"tab-content\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"home\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"profile\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"messages\" role=\"tabpanel\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"settings\" role=\"tabpanel\">...\u003C/div>\n\u003C/div>\n```\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nActivates your content as a tab element.\n\nYou can create a tab instance with the constructor, for example:\n\n```js\nconst bsTab = new bootstrap.Tab('#myTab')\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's tab. |\n| `getInstance` | Static method which allows you to get the tab instance associated with a DOM element, you can use it like this: `bootstrap.Tab.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a tab instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Tab.getOrCreateInstance(element)`. |\n| `show` | Selects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. **Returns to the caller before the tab pane has actually been shown** (i.e. before the `shown.bs.tab` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nWhen showing a new tab, the events fire in the following order:\n\n1. `hide.bs.tab` (on the current active tab)\n2. `show.bs.tab` (on the to-be-shown tab)\n3. `hidden.bs.tab` (on the previous active tab, the same one as for the `hide.bs.tab` event)\n4. `shown.bs.tab` (on the newly-active just-shown tab, the same one as for the `show.bs.tab` event)\n\nIf no tab was already active, then the `hide.bs.tab` and `hidden.bs.tab` events will not be fired.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.tab` | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use `event.target` and `event.relatedTarget` to target the current active tab and the new soon-to-be-active tab, respectively. |\n| `hidden.bs.tab` | This event fires after a new tab is shown (and thus the previous active tab is hidden). Use `event.target` and `event.relatedTarget` to target the previous active tab and the new active tab, respectively. |\n| `show.bs.tab` | This event fires on tab show, but before the new tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. |\n| `shown.bs.tab` | This event fires on tab show after a tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. |\n\u003C/BsTable>\n\n```js\nconst tabElms = document.querySelectorAll('a[data-bs-toggle=\"list\"]')\ntabElms.forEach(tabElm => {\n tabElm.addEventListener('shown.bs.tab', event => {\n event.target // newly activated tab\n event.relatedTarget // previous active tab\n })\n})\n```","src/content/docs/components/list-group.mdx","d3920cbcb7808f21","components/list-group.mdx","components/modal",{"id":440,"data":442,"body":445,"filePath":446,"digest":447,"legacyId":448,"deferredRender":139},{"description":443,"title":444,"toc":139},"Use Bootstrap's JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.","Modal","## How it works\n\nBefore getting started with Bootstrap's modal component, be sure to read the following as our menu options have recently changed.\n\n- Modals are built with HTML, CSS, and JavaScript. They're positioned over everything else in the document and remove scroll from the `\u003Cbody>` so that modal content scrolls instead.\n- Clicking on the modal \"backdrop\" will automatically close the modal.\n- Bootstrap only supports one modal window at a time. Nested modals aren't supported as we believe them to be poor user experiences.\n- Modals use `position: fixed`, which can sometimes be a bit particular about its rendering. Whenever possible, place your modal HTML in a top-level position to avoid potential interference from other elements. You'll likely run into issues when nesting a `.modal` within another fixed element.\n- Once again, due to `position: fixed`, there are some caveats with using modals on mobile devices. [See our browser support docs]([[docsref:/getting-started/browsers-devices#modals-and-dropdowns-on-mobile]]) for details.\n- Due to how HTML5 defines its semantics, [the `autofocus` HTML attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autofocus) has no effect in Bootstrap modals. To achieve the same effect, use some custom JavaScript:\n\n```js\nconst myModal = document.getElementById('myModal')\nconst myInput = document.getElementById('myInput')\n\nmyModal.addEventListener('shown.bs.modal', () => {\n myInput.focus()\n})\n```\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\nKeep reading for demos and usage guidelines.\n\n## Examples\n\n### Modal components\n\nBelow is a _static_ modal example (meaning its `position` and `display` have been overridden). Included are the modal header, modal body (required for `padding`), and modal footer (optional). We ask that you include modal headers with dismiss actions whenever possible, or provide another explicit dismiss action.\n\n\u003Cdiv class=\"bd-example bg-body-tertiary\">\n \u003Cdiv class=\"modal position-static d-block\" tabindex=\"-1\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch5 class=\"modal-title\">Modal title\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>Modal body text goes here.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"modal\" tabindex=\"-1\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch5 class=\"modal-title\">Modal title\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>Modal body text goes here.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n\u003CCallout>\nIn the above static example, we use `\u003Ch5>`, to avoid issues with the heading hierarchy in the documentation page. Structurally, however, a modal dialog represents its own separate document/context, so the `.modal-title` should ideally be an `\u003Ch1>`. If necessary, you can use the [font size utilities]([[docsref:/utilities/text#font-size]]) to control the heading's appearance. All the following live examples use this approach.\n\u003C/Callout>\n\n### Live demo\n\nToggle a working modal demo by clicking the button below. It will slide down and fade in from the top of the page.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalLive\" tabindex=\"-1\" aria-labelledby=\"exampleModalLiveLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalLiveLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>Woo-hoo, you're reading this text in a modal!\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalLive\">\n Launch demo modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Button trigger modal -->\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModal\">\n Launch demo modal\n\u003C/button>\n\n\u003C!-- Modal -->\n\u003Cdiv class=\"modal fade\" id=\"exampleModal\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Static backdrop\n\nWhen backdrop is set to static, the modal will not close when clicking outside of it. Click the button below to try it.\n\n\u003Cdiv class=\"modal fade\" id=\"staticBackdropLive\" data-bs-backdrop=\"static\" data-bs-keyboard=\"false\" tabindex=\"-1\" aria-labelledby=\"staticBackdropLiveLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"staticBackdropLiveLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>I will not close if you click outside of me. Don't even try to press escape key.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Understood\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#staticBackdropLive\">\n Launch static backdrop modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Button trigger modal -->\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#staticBackdrop\">\n Launch static backdrop modal\n\u003C/button>\n\n\u003C!-- Modal -->\n\u003Cdiv class=\"modal fade\" id=\"staticBackdrop\" data-bs-backdrop=\"static\" data-bs-keyboard=\"false\" tabindex=\"-1\" aria-labelledby=\"staticBackdropLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"staticBackdropLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Understood\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Scrolling long content\n\nWhen modals become too long for the user's viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalLong\" tabindex=\"-1\" aria-labelledby=\"exampleModalLongTitle\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalLongTitle\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\" style=\"min-height: 100vh\">\n \u003Cp>This is some placeholder content to show the scrolling behavior for modals. Instead of repeating the text in the modal, we use an inline style to set a minimum height, thereby extending the length of the overall modal and demonstrating the overflow scrolling. When content becomes longer than the height of the viewport, scrolling will move the modal as needed.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalLong\">\n Launch demo modal\n \u003C/button>\n\u003C/div>\n\nYou can also create a scrollable modal that allows scrolling the modal body by adding `.modal-dialog-scrollable` to `.modal-dialog`.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalScrollable\" tabindex=\"-1\" aria-labelledby=\"exampleModalScrollableTitle\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-dialog-scrollable\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalScrollableTitle\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>This is some placeholder content to show the scrolling behavior for modals. We use repeated line breaks to demonstrate how content can exceed minimum inner height, thereby showing inner scrolling. When content becomes longer than the predefined max-height of modal, content will be cropped and scrollable within the modal.\u003C/p>\n \u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\n \u003Cp>This content should appear at the bottom after you scroll.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalScrollable\">\n Launch demo modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Scrollable modal -->\n\u003Cdiv class=\"modal-dialog modal-dialog-scrollable\">\n ...\n\u003C/div>\n```\n\n### Vertically centered\n\nAdd `.modal-dialog-centered` to `.modal-dialog` to vertically center the modal.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalCenter\" tabindex=\"-1\" aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-dialog-centered\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalCenterTitle\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>This is a vertically centered modal.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalCenteredScrollable\" tabindex=\"-1\" aria-labelledby=\"exampleModalCenteredScrollableTitle\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalCenteredScrollableTitle\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cp>This is some placeholder content to show a vertically centered modal. We've added some extra copy here to show how vertically centering the modal works when combined with scrollable modals. We also use some repeated line breaks to quickly extend the height of the content, thereby triggering the scrolling. When content becomes longer than the predefined max-height of modal, content will be cropped and scrollable within the modal.\u003C/p>\n \u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\u003Cbr/>\n \u003Cp>Just like that.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalCenter\">\n Vertically centered modal\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalCenteredScrollable\">\n Vertically centered scrollable modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Vertically centered modal -->\n\u003Cdiv class=\"modal-dialog modal-dialog-centered\">\n ...\n\u003C/div>\n\n\u003C!-- Vertically centered scrollable modal -->\n\u003Cdiv class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable\">\n ...\n\u003C/div>\n```\n\n### Tooltips and popovers\n\n[Tooltips]([[docsref:/components/tooltips]]) and [popovers]([[docsref:/components/popovers]]) can be placed within modals as needed. When modals are closed, any tooltips and popovers within are also automatically dismissed.\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalPopovers\" tabindex=\"-1\" aria-labelledby=\"exampleModalPopoversLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalPopoversLabel\">Modal title\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Ch2 class=\"fs-5\">Popover in a modal\u003C/h2>\n \u003Cp>This \u003Cbutton class=\"btn btn-secondary\" data-bs-toggle=\"popover\" title=\"Popover title\" data-bs-content=\"Popover body content is set in this attribute.\" data-bs-container=\"#exampleModalPopovers\">button\u003C/button> triggers a popover on click.\u003C/p>\n \u003Chr/>\n \u003Ch2 class=\"fs-5\">Tooltips in a modal\u003C/h2>\n \u003Cp>\u003Ca href=\"#\" data-bs-toggle=\"tooltip\" title=\"Tooltip\" data-bs-container=\"#exampleModalPopovers\">This link\u003C/a> and \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" title=\"Tooltip\" data-bs-container=\"#exampleModalPopovers\">that link\u003C/a> have tooltips on hover.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalPopovers\">\n Launch demo modal\n \u003C/button>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"modal-body\">\n \u003Ch2 class=\"fs-5\">Popover in a modal\u003C/h2>\n \u003Cp>This \u003Cbutton class=\"btn btn-secondary\" data-bs-toggle=\"popover\" title=\"Popover title\" data-bs-content=\"Popover body content is set in this attribute.\">button\u003C/button> triggers a popover on click.\u003C/p>\n \u003Chr/>\n \u003Ch2 class=\"fs-5\">Tooltips in a modal\u003C/h2>\n \u003Cp>\u003Ca href=\"#\" data-bs-toggle=\"tooltip\" title=\"Tooltip\">This link\u003C/a> and \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" title=\"Tooltip\">that link\u003C/a> have tooltips on hover.\u003C/p>\n\u003C/div>\n```\n\n### Using the grid\n\nUtilize the Bootstrap grid system within a modal by nesting `.container-fluid` within the `.modal-body`. Then, use the normal grid system classes as you would anywhere else.\n\n\u003Cdiv class=\"modal fade\" id=\"gridSystemModal\" tabindex=\"-1\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"gridModalLabel\">Grids in modals\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cdiv class=\"container-fluid bd-example-row\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-4\">.col-md-4\u003C/div>\n \u003Cdiv class=\"col-md-4 ms-auto\">.col-md-4 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-3 ms-auto\">.col-md-3 .ms-auto\u003C/div>\n \u003Cdiv class=\"col-md-2 ms-auto\">.col-md-2 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-6 ms-auto\">.col-md-6 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-9\">\n Level 1: .col-sm-9\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-8 col-sm-6\">\n Level 2: .col-8 .col-sm-6\n \u003C/div>\n \u003Cdiv class=\"col-4 col-sm-6\">\n Level 2: .col-4 .col-sm-6\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Save changes\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#gridSystemModal\">\n Launch demo modal\n\u003C/button>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"modal-body\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-4\">.col-md-4\u003C/div>\n \u003Cdiv class=\"col-md-4 ms-auto\">.col-md-4 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-3 ms-auto\">.col-md-3 .ms-auto\u003C/div>\n \u003Cdiv class=\"col-md-2 ms-auto\">.col-md-2 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-6 ms-auto\">.col-md-6 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-9\">\n Level 1: .col-sm-9\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-8 col-sm-6\">\n Level 2: .col-8 .col-sm-6\n \u003C/div>\n \u003Cdiv class=\"col-4 col-sm-6\">\n Level 2: .col-4 .col-sm-6\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Varying modal content\n\nHave a bunch of buttons that all trigger the same modal with slightly different contents? Use `event.relatedTarget` and [HTML `data-bs-*` attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes) to vary the contents of the modal depending on which button was clicked.\n\nBelow is a live demo followed by example HTML and JavaScript. For more information, [read the modal events docs](#events) for details on `relatedTarget`.\n\n\u003CExample addStackblitzJs code={`\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModal\" data-bs-whatever=\"@mdo\">Open modal for @mdo\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModal\" data-bs-whatever=\"@fat\">Open modal for @fat\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModal\" data-bs-whatever=\"@getbootstrap\">Open modal for @getbootstrap\u003C/button>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModal\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalLabel\">New message\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n \u003Cform>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"recipient-name\" class=\"col-form-label\">Recipient:\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"recipient-name\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"message-text\" class=\"col-form-label\">Message:\u003C/label>\n \u003Ctextarea class=\"form-control\" id=\"message-text\">\u003C/textarea>\n \u003C/div>\n \u003C/form>\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Send message\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CJsDocs name=\"varying-modal-content\" file=\"site/src/assets/partials/snippets.js\" />\n\n### Toggle between modals\n\nToggle between multiple modals with some clever placement of the `data-bs-target` and `data-bs-toggle` attributes. For example, you could toggle a password reset modal from within an already open sign in modal. **Please note multiple modals cannot be open at the same time**—this method simply toggles between two separate modals.\n\n\u003CExample code={`\u003Cdiv class=\"modal fade\" id=\"exampleModalToggle\" aria-hidden=\"true\" aria-labelledby=\"exampleModalToggleLabel\" tabindex=\"-1\">\n \u003Cdiv class=\"modal-dialog modal-dialog-centered\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalToggleLabel\">Modal 1\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n Show a second modal and hide this one with the button below.\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton class=\"btn btn-primary\" data-bs-target=\"#exampleModalToggle2\" data-bs-toggle=\"modal\">Open second modal\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"modal fade\" id=\"exampleModalToggle2\" aria-hidden=\"true\" aria-labelledby=\"exampleModalToggleLabel2\" tabindex=\"-1\">\n \u003Cdiv class=\"modal-dialog modal-dialog-centered\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-5\" id=\"exampleModalToggleLabel2\">Modal 2\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n Hide this modal and show the first with the button below.\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton class=\"btn btn-primary\" data-bs-target=\"#exampleModalToggle\" data-bs-toggle=\"modal\">Back to first\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\u003Cbutton class=\"btn btn-primary\" data-bs-target=\"#exampleModalToggle\" data-bs-toggle=\"modal\">Open first modal\u003C/button>`} />\n\n### Change animation\n\nThe `$modal-fade-transform` variable determines the transform state of `.modal-dialog` before the modal fade-in animation, the `$modal-show-transform` variable determines the transform of `.modal-dialog` at the end of the modal fade-in animation.\n\nIf you want for example a zoom-in animation, you can set `$modal-fade-transform: scale(.8)`.\n\n### Remove animation\n\nFor modals that simply appear rather than fade in to view, remove the `.fade` class from your modal markup.\n\n```html\n\u003Cdiv class=\"modal\" tabindex=\"-1\" aria-labelledby=\"...\" aria-hidden=\"true\">\n ...\n\u003C/div>\n```\n\n### Dynamic heights\n\nIf the height of a modal changes while it is open, you should call `myModal.handleUpdate()` to readjust the modal's position in case a scrollbar appears.\n\n### Accessibility\n\nBe sure to add `aria-labelledby=\"...\"`, referencing the modal title, to `.modal`. Additionally, you may give a description of your modal dialog with `aria-describedby` on `.modal`. Note that you don't need to add `role=\"dialog\"` since we already add it via JavaScript.\n\n### Embedding YouTube videos\n\nEmbedding YouTube videos in modals requires additional JavaScript not in Bootstrap to automatically stop playback and more. [See this helpful Stack Overflow post](https://stackoverflow.com/questions/18622508/bootstrap-3-and-youtube-in-modal) for more information.\n\n## Optional sizes\n\nModals have three optional sizes, available via modifier classes to be placed on a `.modal-dialog`. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports.\n\n\u003CBsTable>\n| Size | Class | Modal max-width\n| --- | --- | --- |\n| Small | `.modal-sm` | `300px` |\n| Default | \u003Cspan class=\"text-body-secondary\">None\u003C/span> | `500px` |\n| Large | `.modal-lg` | `800px` |\n| Extra large | `.modal-xl` | `1140px` |\n\u003C/BsTable>\n\nOur default modal without modifier class constitutes the \"medium\" size modal.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalXl\">Extra large modal\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalLg\">Large modal\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalSm\">Small modal\u003C/button>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"modal-dialog modal-xl\">...\u003C/div>\n\u003Cdiv class=\"modal-dialog modal-lg\">...\u003C/div>\n\u003Cdiv class=\"modal-dialog modal-sm\">...\u003C/div>\n```\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalXl\" tabindex=\"-1\" aria-labelledby=\"exampleModalXlLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-xl\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalXlLabel\">Extra large modal\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalLg\" tabindex=\"-1\" aria-labelledby=\"exampleModalLgLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-lg\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalLgLabel\">Large modal\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalSm\" tabindex=\"-1\" aria-labelledby=\"exampleModalSmLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-sm\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalSmLabel\">Small modal\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n## Fullscreen Modal\n\nAnother override is the option to pop up a modal that covers the user viewport, available via modifier classes that are placed on a `.modal-dialog`.\n\n\u003CBsTable>\n| Class | Availability |\n| --- | --- |\n| `.modal-fullscreen` | Always |\n| `.modal-fullscreen-sm-down` | `576px` |\n| `.modal-fullscreen-md-down` | `768px` |\n| `.modal-fullscreen-lg-down` | `992px` |\n| `.modal-fullscreen-xl-down` | `1200px` |\n| `.modal-fullscreen-xxl-down` | `1400px` |\n\u003C/BsTable>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreen\">Full screen\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenSm\">Full screen below sm\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenMd\">Full screen below md\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenLg\">Full screen below lg\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenXl\">Full screen below xl\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#exampleModalFullscreenXxl\">Full screen below xxl\u003C/button>\n\u003C/div>\n\n```html\n\u003C!-- Full screen modal -->\n\u003Cdiv class=\"modal-dialog modal-fullscreen-sm-down\">\n ...\n\u003C/div>\n```\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreen\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenLabel\">Full screen modal\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenSm\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenSmLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-sm-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenSmLabel\">Full screen below sm\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenMd\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenMdLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-md-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenMdLabel\">Full screen below md\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenLg\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenLgLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-lg-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenLgLabel\">Full screen below lg\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenXl\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenXlLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-xl-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenXlLabel\">Full screen below xl\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"modal fade\" id=\"exampleModalFullscreenXxl\" tabindex=\"-1\" aria-labelledby=\"exampleModalFullscreenXxlLabel\" aria-hidden=\"true\">\n \u003Cdiv class=\"modal-dialog modal-fullscreen-xxl-down\">\n \u003Cdiv class=\"modal-content\">\n \u003Cdiv class=\"modal-header\">\n \u003Ch1 class=\"modal-title fs-4\" id=\"exampleModalFullscreenXxlLabel\">Full screen below xxl\u003C/h1>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"modal-body\">\n ...\n \u003C/div>\n \u003Cdiv class=\"modal-footer\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, modals now use local CSS variables on `.modal` and `.modal-backdrop` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"modal-css-vars\" file=\"scss/_modal.scss\" />\n\n\u003CScssDocs name=\"modal-backdrop-css-vars\" file=\"scss/_modal.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"modal-variables\" file=\"scss/_variables.scss\" />\n\n### Sass loops\n\n[Responsive fullscreen modals](#fullscreen-modal) are generated via the `$breakpoints` map and a loop in `scss/_modal.scss`.\n\n\u003CScssDocs name=\"modal-fullscreen-loop\" file=\"scss/_modal.scss\" />\n\n## Usage\n\nThe modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also overrides default scrolling behavior and generates a `.modal-backdrop` to provide a click area for dismissing shown modals when clicking outside the modal.\n\n### Via data attributes\n\n#### Toggle\n\nActivate a modal without writing JavaScript. Set `data-bs-toggle=\"modal\"` on a controller element, like a button, along with a `data-bs-target=\"#foo\"` or `href=\"#foo\"` to target a specific modal to toggle.\n\n```html\n\u003Cbutton type=\"button\" data-bs-toggle=\"modal\" data-bs-target=\"#myModal\">Launch modal\u003C/button>\n```\n\n#### Dismiss\n\n\u003CJsDismiss name=\"modal\" />\n\n\u003CCallout type=\"warning\">\nWhile both ways to dismiss a modal are supported, keep in mind that dismissing from outside a modal does not match the [ARIA Authoring Practices Guide dialog (modal) pattern](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/). Do this at your own risk.\n\u003C/Callout>\n\n### Via JavaScript\n\nCreate a modal with a single line of JavaScript:\n\n```js\nconst myModal = new bootstrap.Modal(document.getElementById('myModal'), options)\n// or\nconst myModalAlternative = new bootstrap.Modal('#myModal', options)\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `backdrop` | boolean, `'static'` | `true` | Includes a modal-backdrop element. Alternatively, specify `static` for a backdrop which doesn't close the modal when clicked. |\n| `focus` | boolean | `true` | Puts the focus on the modal when initialized. |\n| `keyboard` | boolean | `true` | Closes the modal when escape key is pressed. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\n#### Passing options\n\nActivates your content as a modal. Accepts an optional options `object`.\n\n```js\nconst myModal = new bootstrap.Modal('#myModal', {\n keyboard: false\n})\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's modal. (Removes stored data on the DOM element) |\n| `getInstance` | _Static_ method which allows you to get the modal instance associated with a DOM element. |\n| `getOrCreateInstance` | _Static_ method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `handleUpdate` | Manually readjust the modal's position if the height of a modal changes while it is open (i.e. in case a scrollbar appears). |\n| `hide` | Manually hides a modal. **Returns to the caller before the modal has actually been hidden** (i.e. before the `hidden.bs.modal` event occurs). |\n| `show` | Manually opens a modal. **Returns to the caller before the modal has actually been shown** (i.e. before the `shown.bs.modal` event occurs). Also, you can pass a DOM element as an argument that can be received in the modal events (as the `relatedTarget` property). (i.e. `const modalToggle = document.getElementById('toggleMyModal'); myModal.show(modalToggle)`. |\n| `toggle` | Manually toggles a modal. **Returns to the caller before the modal has actually been shown or hidden** (i.e. before the `shown.bs.modal` or `hidden.bs.modal` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nBootstrap's modal class exposes a few events for hooking into modal functionality. All modal events are fired at the modal itself (i.e. at the `\u003Cdiv class=\"modal\">`).\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `hide.bs.modal` | This event is fired immediately when the `hide` instance method has been called. Can be prevented by calling `event.preventDefault()`. See [JavaScript events documentation]([[docsref:/getting-started/javascript#events]]) for more details on event prevention. |\n| `hidden.bs.modal` | This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete). |\n| `hidePrevented.bs.modal` | This event is fired when the modal is shown, its backdrop is `static` and a click outside of the modal is performed. The event is also fired when the escape key is pressed and the `keyboard` option is set to `false`. |\n| `show.bs.modal` | This event fires immediately when the `show` instance method is called. If caused by a click, the clicked element is available as the `relatedTarget` property of the event. |\n| `shown.bs.modal` | This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the `relatedTarget` property of the event. |\n\u003C/BsTable>\n\n```js\nconst myModalEl = document.getElementById('myModal')\nmyModalEl.addEventListener('hidden.bs.modal', event => {\n // do something...\n})\n```","src/content/docs/components/modal.mdx","df206e57d0aaba9c","components/modal.mdx","components/dropdowns",{"id":449,"data":451,"body":454,"filePath":455,"digest":456,"legacyId":457,"deferredRender":139},{"description":452,"title":453,"toc":139},"Toggle contextual overlays for displaying lists of links and more with the Bootstrap dropdown plugin.","Dropdowns","## Overview\n\nDropdowns are toggleable, contextual overlays for displaying lists of links and more. They're made interactive with the included Bootstrap dropdown JavaScript plugin. They're toggled by clicking, not by hovering; this is [an intentional design decision](https://markdotto.com/blog/bootstrap-explained-dropdowns/).\n\nDropdowns are built on a third party library, [Popper](https://popper.js.org/docs/v2/), which provides dynamic positioning and viewport detection. Be sure to include [popper.min.js]([[config:cdn.popper]]) before Bootstrap's JavaScript or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper. Popper isn't used to position dropdowns in navbars though as dynamic positioning isn't required.\n\n## Accessibility\n\nThe [\u003Cabbr title=\"Web Accessibility Initiative\">WAI\u003C/abbr> \u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr>](https://www.w3.org/TR/wai-aria/) standard defines an actual [`role=\"menu\"` widget](https://www.w3.org/TR/wai-aria/#menu), but this is specific to application-like menus which trigger actions or functions. \u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr> menus can only contain menu items, checkbox menu items, radio button menu items, radio button groups, and sub-menus.\n\nBootstrap's dropdowns, on the other hand, are designed to be generic and applicable to a variety of situations and markup structures. For instance, it is possible to create dropdowns that contain additional inputs and form controls, such as search fields or login forms. For this reason, Bootstrap does not expect (nor automatically add) any of the `role` and `aria-` attributes required for true \u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr> menus. Authors will have to include these more specific attributes themselves.\n\nHowever, Bootstrap does add built-in support for most standard keyboard menu interactions, such as the ability to move through individual `.dropdown-item` elements using the cursor keys and close the menu with the \u003Ckbd>Esc\u003C/kbd> key.\n\n## Examples\n\nWrap the dropdown's toggle (your button or link) and the dropdown menu within `.dropdown`, or another element that declares `position: relative;`. Ideally, you should use a `\u003Cbutton>` element as the dropdown trigger, but the plugin will work with `\u003Ca>` elements as well. The examples shown here use semantic `\u003Cul>` elements where appropriate, but custom markup is supported.\n\n### Single button\n\nAny single `.btn` can be turned into a dropdown toggle with some markup changes. Here's how you can put them to work with `\u003Cbutton>` elements:\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nWhile `\u003Cbutton>` is the recommended control for a dropdown toggle, there might be situations where you have to use an `\u003Ca>` element. If you do, we recommend adding a `role=\"button\"` attribute to appropriately convey control's purpose to assistive technologies such as screen readers.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Ca class=\"btn btn-secondary dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown link\n \u003C/a>\n\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nThe best part is you can do this with any button variant, too:\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Primary\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Secondary\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-success dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Success\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-info dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Info\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-warning dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Warning\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Danger\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Example single danger button -->\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Danger\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n```\n\n### Split button\n\nSimilarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` for proper spacing around the dropdown caret.\n\nWe use this extra class to reduce the horizontal `padding` on either side of the caret by 25% and remove the `margin-left` that's added for regular button dropdowns. Those extra changes keep the caret centered in the split button and provide a more appropriately sized hit area next to the main button.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\">Primary\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">Secondary\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-success\">Success\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-success dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-info\">Info\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-info dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-warning\">Warning\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-warning dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger\">Danger\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-danger dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Example split danger button -->\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-danger\">Danger\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-danger dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n```\n\n## Sizing\n\nButton dropdowns work with buttons of all sizes, including default and split dropdown buttons.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-lg dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Large button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-lg btn-secondary\">Large split button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Large button groups (default and split) -->\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-lg dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Large button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-lg\" type=\"button\">\n Large split button\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-sm dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Small button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-sm btn-secondary\">Small split button\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-sm dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Small button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary btn-sm\" type=\"button\">\n Small split button\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n```\n\n## Dark dropdowns\n\n\u003CDeprecatedIn version=\"5.3.0\" />\n\nOpt into darker dropdowns to match a dark navbar or custom style by adding `.dropdown-menu-dark` onto an existing `.dropdown-menu`. No changes are required to the dropdown items.\n\n\u003CCalloutDeprecatedDarkVariants component=\"dropdown-menu\" />\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown button\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-dark\">\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nAnd putting it to use in a navbar:\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg navbar-dark bg-dark\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNavDarkDropdown\" aria-controls=\"navbarNavDarkDropdown\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNavDarkDropdown\">\n \u003Cul class=\"navbar-nav\">\n \u003Cli class=\"nav-item dropdown\">\n \u003Cbutton class=\"btn btn-dark dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-dark\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n## Directions\n\n\u003CCallout>\n**Directions are flipped in RTL mode.** As such, `.dropstart` will appear on the right side.\n\u003C/Callout>\n\n### Centered\n\nMake the dropdown menu centered below the toggle with `.dropdown-center` on the parent element.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown-center\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Centered dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action two\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action three\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n### Dropup\n\nTrigger dropdown menus above elements by adding `.dropup` to the parent element.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropup\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropup\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Default dropup button -->\n\u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropup\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n\n\u003C!-- Split dropup button -->\n\u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropup\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n```\n\n### Dropup centered\n\nMake the dropup menu centered above the toggle with `.dropup-center` on the parent element.\n\n\u003CExample code={`\u003Cdiv class=\"dropup-center dropup\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Centered dropup\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action two\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action three\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n### Dropend\n\nTrigger dropdown menus at the right of the elements by adding `.dropend` to the parent element.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropend\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropend\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropend\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Default dropend button -->\n\u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropend\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n\n\u003C!-- Split dropend button -->\n\u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropend\n \u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropend\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n```\n\n### Dropstart\n\nTrigger dropdown menus at the left of the elements by adding `.dropstart` to the parent element.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropstart\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropstart\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropstart\n \u003C/button>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003C!-- Default dropstart button -->\n\u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropstart\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n\u003C/div>\n\n\u003C!-- Split dropstart button -->\n\u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropstart\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003C!-- Dropdown menu links -->\n \u003C/ul>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">\n Split dropstart\n \u003C/button>\n\u003C/div>\n```\n\n## Menu items\n\nYou can use `\u003Ca>` or `\u003Cbutton>` elements as dropdown items.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Another action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Something else here\u003C/button>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nYou can also create non-interactive dropdown items with `.dropdown-item-text`. Feel free to style further with custom CSS or text utilities.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Cspan class=\"dropdown-item-text\">Dropdown item text\u003C/span>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n### Active\n\nAdd `.active` to items in the dropdown to **style them as active**. To convey the active state to assistive technologies, use the `aria-current` attribute — using the `page` value for the current page, or `true` for the current item in a set.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Regular link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item active\" href=\"#\" aria-current=\"true\">Active link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another link\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n### Disabled\n\nAdd `.disabled` to items in the dropdown to **style them as disabled**.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Regular link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item disabled\" aria-disabled=\"true\">Disabled link\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another link\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n## Menu alignment\n\nBy default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. You can change this with the directional `.drop*` classes, but you can also control them with additional modifier classes.\n\nAdd `.dropdown-menu-end` to a `.dropdown-menu` to right align the dropdown menu. Directions are mirrored when using Bootstrap in RTL, meaning `.dropdown-menu-end` will appear on the left side.\n\n\u003CCallout>\n**Heads up!** Dropdowns are positioned thanks to Popper except when they are contained in a navbar.\n\u003C/Callout>\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Right-aligned menu example\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Another action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Something else here\u003C/button>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n### Responsive alignment\n\nIf you want to use responsive alignment, disable dynamic positioning by adding the `data-bs-display=\"static\"` attribute and use the responsive variation classes.\n\nTo align **right** the dropdown menu with the given breakpoint or larger, add `.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end`.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\">\n Left-aligned but right aligned when large screen\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-lg-end\">\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Another action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Something else here\u003C/button>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nTo align **left** the dropdown menu with the given breakpoint or larger, add `.dropdown-menu-end` and `.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-start`.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\">\n Right-aligned but left aligned when large screen\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end dropdown-menu-lg-start\">\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Another action\u003C/button>\u003C/li>\n \u003Cli>\u003Cbutton class=\"dropdown-item\" type=\"button\">Something else here\u003C/button>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\nNote that you don't need to add a `data-bs-display=\"static\"` attribute to dropdown buttons in navbars, since Popper isn't used in navbars.\n\n### Alignment options\n\nTaking most of the options shown above, here's a small kitchen sink demo of various dropdown alignment options in one place.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Right-aligned menu\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\">\n Left-aligned, right-aligned lg\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-lg-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" data-bs-display=\"static\" aria-expanded=\"false\">\n Right-aligned, left-aligned lg\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end dropdown-menu-lg-start\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group dropstart\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropstart\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group dropend\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropend\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group dropup\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropup\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## Menu content\n\n### Headers\n\nAdd a header to label sections of actions in any dropdown menu.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ch6 class=\"dropdown-header\">Dropdown header\u003C/h6>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n### Dividers\n\nSeparate groups of related menu items with a divider.\n\n\u003CExample code={`\u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n\u003C/ul>`} />\n\n### Text\n\nPlace any freeform text within a dropdown menu with text and use [spacing utilities]([[docsref:/utilities/spacing]]). Note that you'll likely need additional sizing styles to constrain the menu width.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown-menu p-4 text-body-secondary\" style=\"max-width: 200px;\">\n \u003Cp>\n Some example text that's free-flowing within the dropdown menu.\n \u003C/p>\n \u003Cp class=\"mb-0\">\n And this is more example text.\n \u003C/p>\n\u003C/div>`} />\n\n### Forms\n\nPut a form within a dropdown menu, or make it into a dropdown menu, and use [margin or padding utilities]([[docsref:/utilities/spacing]]) to give it the negative space you require.\n\n\u003CExample code={`\u003Cdiv class=\"dropdown-menu\">\n \u003Cform class=\"px-4 py-3\">\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleDropdownFormEmail1\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"exampleDropdownFormEmail1\" placeholder=\"email@example.com\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleDropdownFormPassword1\" class=\"form-label\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"exampleDropdownFormPassword1\" placeholder=\"Password\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput type=\"checkbox\" class=\"form-check-input\" id=\"dropdownCheck\">\n \u003Clabel class=\"form-check-label\" for=\"dropdownCheck\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Sign in\u003C/button>\n \u003C/form>\n \u003Cdiv class=\"dropdown-divider\">\u003C/div>\n \u003Ca class=\"dropdown-item\" href=\"#\">New around here? Sign up\u003C/a>\n \u003Ca class=\"dropdown-item\" href=\"#\">Forgot password?\u003C/a>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"dropdown\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-auto-close=\"outside\">\n Dropdown form\n \u003C/button>\n \u003Cform class=\"dropdown-menu p-4\">\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleDropdownFormEmail2\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"exampleDropdownFormEmail2\" placeholder=\"email@example.com\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleDropdownFormPassword2\" class=\"form-label\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"exampleDropdownFormPassword2\" placeholder=\"Password\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput type=\"checkbox\" class=\"form-check-input\" id=\"dropdownCheck2\">\n \u003Clabel class=\"form-check-label\" for=\"dropdownCheck2\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Sign in\u003C/button>\n \u003C/form>\n\u003C/div>`} />\n\n## Dropdown options\n\nUse `data-bs-offset` or `data-bs-reference` to change the location of the dropdown.\n\n\u003CExample code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"dropdown me-1\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-offset=\"10,20\">\n Offset\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003Cdiv class=\"btn-group\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">Reference\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n\u003C/div>`} />\n\n### Auto close behavior\n\nBy default, the dropdown menu is closed when clicking inside or outside the dropdown menu. You can use the `autoClose` option to change this behavior of the dropdown.\n\n\u003CExample code={`\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"true\" aria-expanded=\"false\">\n Default dropdown\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"inside\" aria-expanded=\"false\">\n Clickable inside\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" aria-expanded=\"false\">\n Clickable outside\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"btn-group\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"false\" aria-expanded=\"false\">\n Manual close\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Menu item\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, dropdowns now use local CSS variables on `.dropdown-menu` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"dropdown-css-vars\" file=\"scss/_dropdown.scss\" />\n\n\u003CCallout>\nDropdown items include at least one variable that is not set on `.dropdown`. This allows you to provide a new value while Bootstrap defaults to a fallback value.\n\n- `--bs-dropdown-item-border-radius`\n\u003C/Callout>\n\nCustomization through CSS variables can be seen on the `.dropdown-menu-dark` class where we override specific values without adding duplicate CSS selectors.\n\n\u003CScssDocs name=\"dropdown-dark-css-vars\" file=\"scss/_dropdown.scss\" />\n\n### Sass variables\n\nVariables for all dropdowns:\n\n\u003CScssDocs name=\"dropdown-variables\" file=\"scss/_variables.scss\" />\n\nVariables for the [dark dropdown](#dark-dropdowns):\n\n\u003CScssDocs name=\"dropdown-dark-variables\" file=\"scss/_variables.scss\" />\n\nVariables for the CSS-based carets that indicate a dropdown's interactivity:\n\n\u003CScssDocs name=\"caret-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\nMixins are used to generate the CSS-based carets and can be found in `scss/mixins/_caret.scss`.\n\n\u003CScssDocs name=\"caret-mixins\" file=\"scss/mixins/_caret.scss\" />\n\n## Usage\n\nVia data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.show` class on the parent `.dropdown-menu`. The `data-bs-toggle=\"dropdown\"` attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.\n\n\u003CCallout>\nOn touch-enabled devices, opening a dropdown adds empty `mouseover` handlers to the immediate children of the `\u003Cbody>` element. This admittedly ugly hack is necessary to work around a [quirk in iOS' event delegation](https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html), which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code that closes the dropdown. Once the dropdown is closed, these additional empty `mouseover` handlers are removed.\n\u003C/Callout>\n\n### Via data attributes\n\nAdd `data-bs-toggle=\"dropdown\"` to a link or button to toggle a dropdown.\n\n```html\n\u003Cdiv class=\"dropdown\">\n \u003Cbutton type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown trigger\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n ...\n \u003C/ul>\n\u003C/div>\n```\n\n### Via JavaScript\n\n\u003CCallout type=\"warning\">\nDropdowns must have `data-bs-toggle=\"dropdown\"` on their trigger element, regardless of whether you call your dropdown via JavaScript or use the data-api.\n\u003C/Callout>\n\nCall the dropdowns via JavaScript:\n\n```js\nconst dropdownElementList = document.querySelectorAll('.dropdown-toggle')\nconst dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl))\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `autoClose` | boolean, string | `true` | Configure the auto close behavior of the dropdown: \u003Cul class=\"my-2\">\u003Cli>`true` - the dropdown will be closed by clicking outside or inside the dropdown menu.\u003C/li>\u003Cli>`false` - the dropdown will be closed by clicking the toggle button and manually calling `hide` or `toggle` method. (Also will not be closed by pressing \u003Ckbd>Esc\u003C/kbd> key)\u003C/li>\u003Cli>`'inside'` - the dropdown will be closed (only) by clicking inside the dropdown menu.\u003C/li> \u003Cli>`'outside'` - the dropdown will be closed (only) by clicking outside the dropdown menu.\u003C/li>\u003C/ul> Note: the dropdown can always be closed with the \u003Ckbd>Esc\u003C/kbd> key. |\n| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the dropdown menu (applies only to Popper's preventOverflow modifier). By default it's `clippingParents` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). |\n| `display` | string | `'dynamic'` | By default, we use Popper for dynamic positioning. Disable this with `static`. |\n| `offset` | array, string, function | `[0, 2]` | Offset of the dropdown relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset=\"10,20\"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). |\n| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper. |\n| `reference` | string, element, object | `'toggle'` | Reference element of the dropdown menu. Accepts the values of `'toggle'`, `'parent'`, an HTMLElement reference or an object providing `getBoundingClientRect`. For more information refer to Popper's [constructor docs](https://popper.js.org/docs/v2/constructors/#createpopper) and [virtual element docs](https://popper.js.org/docs/v2/virtual-elements/). |\n\u003C/BsTable>\n\n#### Using function with `popperConfig`\n\n```js\nconst dropdown = new bootstrap.Dropdown(element, {\n popperConfig(defaultBsPopperConfig) {\n // const newPopperConfig = {...}\n // use defaultBsPopperConfig if needed...\n // return newPopperConfig\n }\n})\n```\n\n### Methods\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's dropdown. (Removes stored data on the DOM element) |\n| `getInstance` | Static method which allows you to get the dropdown instance associated to a DOM element, you can use it like this: `bootstrap.Dropdown.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a dropdown instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Dropdown.getOrCreateInstance(element)`. |\n| `hide` | Hides the dropdown menu of a given navbar or tabbed navigation. |\n| `show` | Shows the dropdown menu of a given navbar or tabbed navigation. |\n| `toggle` | Toggles the dropdown menu of a given navbar or tabbed navigation. |\n| `update` | Updates the position of an element's dropdown. |\n\u003C/BsTable>\n\n### Events\n\nAll dropdown events are fired at the toggling element and then bubbled up. So you can also add event listeners on the `.dropdown-menu`'s parent element. `hide.bs.dropdown` and `hidden.bs.dropdown` events have a `clickEvent` property (only when the original Event type is `click`) that contains an Event Object for the click event.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.dropdown` | Fires immediately when the `hide` instance method has been called. |\n| `hidden.bs.dropdown` | Fired when the dropdown has finished being hidden from the user and CSS transitions have completed. |\n| `show.bs.dropdown` | Fires immediately when the `show` instance method is called. |\n| `shown.bs.dropdown` | Fired when the dropdown has been made visible to the user and CSS transitions have completed. |\n\u003C/BsTable>\n\n```js\nconst myDropdown = document.getElementById('myDropdown')\nmyDropdown.addEventListener('show.bs.dropdown', event => {\n // do something...\n})\n```","src/content/docs/components/dropdowns.mdx","937818bbfbc24683","components/dropdowns.mdx","components/offcanvas",{"id":458,"data":460,"body":463,"filePath":464,"digest":465,"legacyId":466,"deferredRender":139},{"description":461,"title":462,"toc":139},"Build hidden sidebars into your project for navigation, shopping carts, and more with a few classes and our JavaScript plugin.","Offcanvas","## How it works\n\nOffcanvas is a sidebar component that can be toggled via JavaScript to appear from the left, right, top, or bottom edge of the viewport. Buttons or anchors are used as triggers that are attached to specific elements you toggle, and `data` attributes are used to invoke our JavaScript.\n\n- Offcanvas shares some of the same JavaScript code as modals. Conceptually, they are quite similar, but they are separate plugins.\n- Similarly, some [source Sass](#sass-variables) variables for offcanvas's styles and dimensions are inherited from the modal's variables.\n- When shown, offcanvas includes a default backdrop that can be clicked to hide the offcanvas.\n- Similar to modals, only one offcanvas can be shown at a time.\n\n**Heads up!** Given how CSS handles animations, you cannot use `margin` or `translate` on an `.offcanvas` element. Instead, use the class as an independent wrapping element.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Examples\n\n### Offcanvas components\n\nBelow is an offcanvas example that is shown by default (via `.show` on `.offcanvas`). Offcanvas includes support for a header with a close button and an optional body class for some initial `padding`. We suggest that you include offcanvas headers with dismiss actions whenever possible, or provide an explicit dismiss action.\n\n\u003CExample class=\"bd-example-offcanvas p-0 bg-body-tertiary overflow-hidden\" code={`\u003Cdiv class=\"offcanvas offcanvas-start show\" tabindex=\"-1\" id=\"offcanvas\" aria-labelledby=\"offcanvasLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here.\n \u003C/div>\n\u003C/div>`} />\n\n### Live demo\n\nUse the buttons below to show and hide an offcanvas element via JavaScript that toggles the `.show` class on an element with the `.offcanvas` class.\n\n- `.offcanvas` hides content (default)\n- `.offcanvas.show` shows content\n\nYou can use a link with the `href` attribute, or a button with the `data-bs-target` attribute. In both cases, the `data-bs-toggle=\"offcanvas\"` is required.\n\n\u003CExample code={`\u003Ca class=\"btn btn-primary\" data-bs-toggle=\"offcanvas\" href=\"#offcanvasExample\" role=\"button\" aria-controls=\"offcanvasExample\">\n Link with href\n\u003C/a>\n\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasExample\" aria-controls=\"offcanvasExample\">\n Button with data-bs-target\n\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-start\" tabindex=\"-1\" id=\"offcanvasExample\" aria-labelledby=\"offcanvasExampleLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasExampleLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cdiv class=\"\">\n Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.\n \u003C/div>\n \u003Cdiv class=\"dropdown mt-3\">\n \u003Cbutton class=\"btn btn-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\">\n Dropdown button\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Body scrolling\n\nScrolling the `\u003Cbody>` element is disabled when an offcanvas and its backdrop are visible. Use the `data-bs-scroll` attribute to enable `\u003Cbody>` scrolling.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasScrolling\" aria-controls=\"offcanvasScrolling\">Enable body scrolling\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-start\" data-bs-scroll=\"true\" data-bs-backdrop=\"false\" tabindex=\"-1\" id=\"offcanvasScrolling\" aria-labelledby=\"offcanvasScrollingLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasScrollingLabel\">Offcanvas with body scrolling\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cp>Try scrolling the rest of the page to see this option in action.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n### Body scrolling and backdrop\n\nYou can also enable `\u003Cbody>` scrolling with a visible backdrop.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasWithBothOptions\" aria-controls=\"offcanvasWithBothOptions\">Enable both scrolling & backdrop\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-start\" data-bs-scroll=\"true\" tabindex=\"-1\" id=\"offcanvasWithBothOptions\" aria-labelledby=\"offcanvasWithBothOptionsLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasWithBothOptionsLabel\">Backdrop with scrolling\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cp>Try scrolling the rest of the page to see this option in action.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n### Static backdrop\n\nWhen backdrop is set to static, the offcanvas will not close when clicking outside of it.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#staticBackdrop\" aria-controls=\"staticBackdrop\">\n Toggle static offcanvas\n\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-start\" data-bs-backdrop=\"static\" tabindex=\"-1\" id=\"staticBackdrop\" aria-labelledby=\"staticBackdropLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"staticBackdropLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cdiv>\n I will not close if you click outside of me.\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Dark offcanvas\n\n\u003CDeprecatedIn version=\"5.3.0\" /> \u003CAddedIn version=\"5.2.0\" />\n\nChange the appearance of offcanvases with utilities to better match them to different contexts like dark navbars. Here we add `.text-bg-dark` to the `.offcanvas` and `.btn-close-white` to `.btn-close` for proper styling with a dark offcanvas. If you have dropdowns within, consider also adding `.dropdown-menu-dark` to `.dropdown-menu`.\n\n\u003CCallout type=\"warning\">\n**Heads up!** Dark variants for components were deprecated in v5.3.0 with the introduction of color modes. Instead of manually adding classes mentioned above, set `data-bs-theme=\"dark\"` on the root element, a parent wrapper, or the component itself.\n\u003C/Callout>\n\n\u003CExample class=\"bd-example-offcanvas p-0 bg-body-secondary overflow-hidden\" code={`\u003Cdiv class=\"offcanvas offcanvas-start show text-bg-dark\" tabindex=\"-1\" id=\"offcanvasDark\" aria-labelledby=\"offcanvasDarkLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasDarkLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvasDark\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cp>Place offcanvas content here.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\n## Responsive\n\n\u003CAddedIn version=\"5.2.0\" />\n\nResponsive offcanvas classes hide content outside the viewport from a specified breakpoint and down. Above that breakpoint, the contents within will behave as usual. For example, `.offcanvas-lg` hides content in an offcanvas below the `lg` breakpoint, but shows the content above the `lg` breakpoint.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary d-lg-none\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasResponsive\" aria-controls=\"offcanvasResponsive\">Toggle offcanvas\u003C/button>\n\n\u003Cdiv class=\"alert alert-info d-none d-lg-block\">Resize your browser to show the responsive offcanvas toggle.\u003C/div>\n\n\u003Cdiv class=\"offcanvas-lg offcanvas-end\" tabindex=\"-1\" id=\"offcanvasResponsive\" aria-labelledby=\"offcanvasResponsiveLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasResponsiveLabel\">Responsive offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" data-bs-target=\"#offcanvasResponsive\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cp class=\"mb-0\">This is content within an \u003Ccode>.offcanvas-lg\u003C/code>.\u003C/p>\n \u003C/div>\n\u003C/div>`} />\n\nResponsive offcanvas classes are available across for each breakpoint.\n\n- `.offcanvas`\n- `.offcanvas-sm`\n- `.offcanvas-md`\n- `.offcanvas-lg`\n- `.offcanvas-xl`\n- `.offcanvas-xxl`\n\n## Placement\n\nThere's no default placement for offcanvas components, so you must add one of the modifier classes below.\n\n- `.offcanvas-start` places offcanvas on the left of the viewport (shown above)\n- `.offcanvas-end` places offcanvas on the right of the viewport\n- `.offcanvas-top` places offcanvas on the top of the viewport\n- `.offcanvas-bottom` places offcanvas on the bottom of the viewport\n\nTry the top, right, and bottom examples out below.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasTop\" aria-controls=\"offcanvasTop\">Toggle top offcanvas\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-top\" tabindex=\"-1\" id=\"offcanvasTop\" aria-labelledby=\"offcanvasTopLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasTopLabel\">Offcanvas top\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n ...\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\" aria-controls=\"offcanvasRight\">Toggle right offcanvas\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasRightLabel\">Offcanvas right\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n ...\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasBottom\" aria-controls=\"offcanvasBottom\">Toggle bottom offcanvas\u003C/button>\n\n\u003Cdiv class=\"offcanvas offcanvas-bottom\" tabindex=\"-1\" id=\"offcanvasBottom\" aria-labelledby=\"offcanvasBottomLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasBottomLabel\">Offcanvas bottom\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body small\">\n ...\n \u003C/div>\n\u003C/div>`} />\n\n## Accessibility\n\nSince the offcanvas panel is conceptually a modal dialog, be sure to add `aria-labelledby=\"...\"`—referencing the offcanvas title—to `.offcanvas`. Note that you don’t need to add `role=\"dialog\"` since we already add it via JavaScript.\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, offcanvas now uses local CSS variables on `.offcanvas` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"offcanvas-css-vars\" file=\"scss/_offcanvas.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"offcanvas-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\nThe offcanvas plugin utilizes a few classes and attributes to handle the heavy lifting:\n\n- `.offcanvas` hides the content\n- `.offcanvas.show` shows the content\n- `.offcanvas-start` hides the offcanvas on the left\n- `.offcanvas-end` hides the offcanvas on the right\n- `.offcanvas-top` hides the offcanvas on the top\n- `.offcanvas-bottom` hides the offcanvas on the bottom\n\nAdd a dismiss button with the `data-bs-dismiss=\"offcanvas\"` attribute, which triggers the JavaScript functionality. Be sure to use the `\u003Cbutton>` element with it for proper behavior across all devices.\n\n### Via data attributes\n\n#### Toggle\n\nAdd `data-bs-toggle=\"offcanvas\"` and a `data-bs-target` or `href` to the element to automatically assign control of one offcanvas element. The `data-bs-target` attribute accepts a CSS selector to apply the offcanvas to. Be sure to add the class `offcanvas` to the offcanvas element. If you'd like it to default open, add the additional class `show`.\n\n#### Dismiss\n\n\u003CJsDismiss name=\"offcanvas\" />\n\n\u003CCallout type=\"warning\">\nWhile both ways to dismiss an offcanvas are supported, keep in mind that dismissing from outside an offcanvas does not match the [ARIA Authoring Practices Guide dialog (modal) pattern](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/). Do this at your own risk.\n\u003C/Callout>\n\n### Via JavaScript\n\nEnable manually with:\n\n```js\nconst offcanvasElementList = document.querySelectorAll('.offcanvas')\nconst offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `backdrop` | boolean or the string `static` | `true` | Apply a backdrop on body while offcanvas is open. Alternatively, specify `static` for a backdrop which doesn't close the offcanvas when clicked. |\n| `keyboard` | boolean | `true` | Closes the offcanvas when escape key is pressed. |\n| `scroll` | boolean | `false` | Allow body scrolling while offcanvas is open. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nActivates your content as an offcanvas element. Accepts an optional options `object`.\n\nYou can create an offcanvas instance with the constructor, for example:\n\n```js\nconst bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's offcanvas. |\n| `getInstance` | *Static* method which allows you to get the offcanvas instance associated with a DOM element. |\n| `getOrCreateInstance` | *Static* method which allows you to get the offcanvas instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `hide` | Hides an offcanvas element. **Returns to the caller before the offcanvas element has actually been hidden** (i.e. before the `hidden.bs.offcanvas` event occurs). |\n| `show` | Shows an offcanvas element. **Returns to the caller before the offcanvas element has actually been shown** (i.e. before the `shown.bs.offcanvas` event occurs). |\n| `toggle` | Toggles an offcanvas element to shown or hidden. **Returns to the caller before the offcanvas element has actually been shown or hidden** (i.e. before the `shown.bs.offcanvas` or `hidden.bs.offcanvas` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nBootstrap's offcanvas class exposes a few events for hooking into offcanvas functionality.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.offcanvas` | This event is fired immediately when the `hide` method has been called. |\n| `hidden.bs.offcanvas` | This event is fired when an offcanvas element has been hidden from the user (will wait for CSS transitions to complete). |\n| `hidePrevented.bs.offcanvas` | This event is fired when the offcanvas is shown, its backdrop is `static` and a click outside of the offcanvas is performed. The event is also fired when the escape key is pressed and the `keyboard` option is set to `false`. |\n| `show.bs.offcanvas` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.offcanvas` | This event is fired when an offcanvas element has been made visible to the user (will wait for CSS transitions to complete). |\n\u003C/BsTable>\n\n```js\nconst myOffcanvas = document.getElementById('myOffcanvas')\nmyOffcanvas.addEventListener('hidden.bs.offcanvas', event => {\n // do something...\n})\n```","src/content/docs/components/offcanvas.mdx","ef2abe219c2c85c2","components/offcanvas.mdx","components/navs-tabs",{"id":467,"data":469,"body":473,"filePath":474,"digest":475,"legacyId":476,"deferredRender":139},{"aliases":470,"description":471,"title":472,"toc":139},"/docs/[[config:docs_version]]/components/navs/","Documentation and examples for how to use Bootstrap's included navigation components.","Navs and tabs","## Base nav\n\nNavigation available in Bootstrap share general markup and styles, from the base `.nav` class to the active and disabled states. Swap modifier classes to switch between each style.\n\nThe base `.nav` component is built with flexbox and provide a strong foundation for building all types of navigation components. It includes some style overrides (for working with lists), some link padding for larger hit areas, and basic disabled styling.\n\n\u003CCallout>\nThe base `.nav` component does not include any `.active` state. The following examples include the class, mainly to demonstrate that this particular class does not trigger any special styling.\n\nTo convey the active state to assistive technologies, use the `aria-current` attribute — using the `page` value for current page, or `true` for the current item in a set.\n\u003C/Callout>\n\n\u003CExample code={`\u003Cul class=\"nav\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nClasses are used throughout, so your markup can be super flexible. Use `\u003Cul>`s like above, `\u003Col>` if the order of your items is important, or roll your own with a `\u003Cnav>` element. Because the `.nav` uses `display: flex`, the nav links behave the same as nav items would, but without the extra markup.\n\n\u003CExample code={`\u003Cnav class=\"nav\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n\u003C/nav>`} />\n\n## Available styles\n\nChange the style of `.nav`s component with modifiers and utilities. Mix and match as needed, or build your own.\n\n### Horizontal alignment\n\nChange the horizontal alignment of your nav with [flexbox utilities]([[docsref:/utilities/flex#justify-content]]). By default, navs are left-aligned, but you can easily change them to center or right-aligned.\n\nCentered with `.justify-content-center`:\n\n\u003CExample code={`\u003Cul class=\"nav justify-content-center\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nRight-aligned with `.justify-content-end`:\n\n\u003CExample code={`\u003Cul class=\"nav justify-content-end\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Vertical\n\nStack your navigation by changing the flex item direction with the `.flex-column` utility. Need to stack them on some viewports but not others? Use the responsive versions (e.g., `.flex-sm-column`).\n\n\u003CExample code={`\u003Cul class=\"nav flex-column\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nAs always, vertical navigation is possible without `\u003Cul>`s, too.\n\n\u003CExample code={`\u003Cnav class=\"nav flex-column\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n\u003C/nav>`} />\n\n### Tabs\n\nTakes the basic nav from above and adds the `.nav-tabs` class to generate a tabbed interface. Use them to create tabbable regions with our [tab JavaScript plugin](#javascript-behavior).\n\n\u003CExample code={`\u003Cul class=\"nav nav-tabs\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Pills\n\nTake that same HTML, but use `.nav-pills` instead:\n\n\u003CExample code={`\u003Cul class=\"nav nav-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Underline\n\nTake that same HTML, but use `.nav-underline` instead:\n\n\u003CExample code={`\u003Cul class=\"nav nav-underline\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Fill and justify\n\nForce your `.nav`'s contents to extend the full available width with one of two modifier classes. To proportionately fill all available space with your `.nav-item`s, use `.nav-fill`. Notice that all horizontal space is occupied, but not every nav item has the same width.\n\n\u003CExample code={`\u003Cul class=\"nav nav-pills nav-fill\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Much longer nav link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nWhen using a `\u003Cnav>`-based navigation, you can safely omit `.nav-item` as only `.nav-link` is required for styling `\u003Ca>` elements.\n\n\u003CExample code={`\u003Cnav class=\"nav nav-pills nav-fill\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Much longer nav link\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n\u003C/nav>`} />\n\nFor equal-width elements, use `.nav-justified`. All horizontal space will be occupied by nav links, but unlike the `.nav-fill` above, every nav item will be the same width.\n\n\u003CExample code={`\u003Cul class=\"nav nav-pills nav-justified\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Much longer nav link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\nSimilar to the `.nav-fill` example using a `\u003Cnav>`-based navigation.\n\n\u003CExample code={`\u003Cnav class=\"nav nav-pills nav-justified\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Much longer nav link\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n\u003C/nav>\n`} />\n## Working with flex utilities\n\nIf you need responsive nav variations, consider using a series of [flexbox utilities]([[docsref:/utilities/flex]]). While more verbose, these utilities offer greater customization across responsive breakpoints. In the example below, our nav will be stacked on the lowest breakpoint, then adapt to a horizontal layout that fills the available width starting from the small breakpoint.\n\n\u003CExample code={`\u003Cnav class=\"nav nav-pills flex-column flex-sm-row\">\n \u003Ca class=\"flex-sm-fill text-sm-center nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003Ca class=\"flex-sm-fill text-sm-center nav-link\" href=\"#\">Longer nav link\u003C/a>\n \u003Ca class=\"flex-sm-fill text-sm-center nav-link\" href=\"#\">Link\u003C/a>\n \u003Ca class=\"flex-sm-fill text-sm-center nav-link disabled\">Disabled\u003C/a>\n\u003C/nav>`} />\n\n## Regarding accessibility\n\nIf you're using navs to provide a navigation bar, be sure to add a `role=\"navigation\"` to the most logical parent container of the `\u003Cul>`, or wrap a `\u003Cnav>` element around the whole navigation. Do not add the role to the `\u003Cul>` itself, as this would prevent it from being announced as an actual list by assistive technologies.\n\nNote that navigation bars, even if visually styled as tabs with the `.nav-tabs` class, should **not** be given `role=\"tablist\"`, `role=\"tab\"` or `role=\"tabpanel\"` attributes. These are only appropriate for dynamic tabbed interfaces, as described in the [ARIA Authoring Practices Guide tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabpanel/). See [JavaScript behavior](#javascript-behavior) for dynamic tabbed interfaces in this section for an example. The `aria-current` attribute is not necessary on dynamic tabbed interfaces since our JavaScript handles the selected state by adding `aria-selected=\"true\"` on the active tab.\n\n## Using dropdowns\n\nAdd dropdown menus with a little extra HTML and the [dropdowns JavaScript plugin]([[docsref:/components/dropdowns#usage]]).\n\n### Tabs with dropdowns\n\n\u003CExample code={`\u003Cul class=\"nav nav-tabs\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">Dropdown\u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n### Pills with dropdowns\n\n\u003CExample code={`\u003Cul class=\"nav nav-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Active\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">Dropdown\u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n\u003C/ul>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, navs now use local CSS variables on `.nav`, `.nav-tabs`, and `.nav-pills` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\nOn the `.nav` base class:\n\n\u003CScssDocs name=\"nav-css-vars\" file=\"scss/_nav.scss\" />\n\nOn the `.nav-tabs` modifier class:\n\n\u003CScssDocs name=\"nav-tabs-css-vars\" file=\"scss/_nav.scss\" />\n\nOn the `.nav-pills` modifier class:\n\n\u003CScssDocs name=\"nav-pills-css-vars\" file=\"scss/_nav.scss\" />\n\n\u003CAddedIn version=\"5.3.0\" />\n\nOn the `.nav-underline` modifier class:\n\n\u003CScssDocs name=\"nav-underline-css-vars\" file=\"scss/_nav.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"nav-variables\" file=\"scss/_variables.scss\" />\n\n## JavaScript behavior\n\nUse the tab JavaScript plugin—include it individually or through the compiled `bootstrap.js` file—to extend our navigational tabs and pills to create tabbable panes of local content.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cul class=\"nav nav-tabs mb-3\" id=\"myTab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#home-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"home-tab-pane\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#profile-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"profile-tab-pane\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"contact-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#contact-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"contact-tab-pane\" aria-selected=\"false\">Contact\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"disabled-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#disabled-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"disabled-tab-pane\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/li>\n \u003C/ul>\n \u003Cdiv class=\"tab-content\" id=\"myTabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"home-tab-pane\" role=\"tabpanel\" aria-labelledby=\"home-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Home tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"profile-tab-pane\" role=\"tabpanel\" aria-labelledby=\"profile-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Profile tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"contact-tab-pane\" role=\"tabpanel\" aria-labelledby=\"contact-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Contact tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"disabled-tab-pane\" role=\"tabpanel\" aria-labelledby=\"disabled-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Disabled tab's\u003C/strong> associated content.\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#home-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"home-tab-pane\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#profile-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"profile-tab-pane\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"contact-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#contact-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"contact-tab-pane\" aria-selected=\"false\">Contact\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"disabled-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#disabled-tab-pane\" type=\"button\" role=\"tab\" aria-controls=\"disabled-tab-pane\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"tab-content\" id=\"myTabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"home-tab-pane\" role=\"tabpanel\" aria-labelledby=\"home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"profile-tab-pane\" role=\"tabpanel\" aria-labelledby=\"profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"contact-tab-pane\" role=\"tabpanel\" aria-labelledby=\"contact-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"disabled-tab-pane\" role=\"tabpanel\" aria-labelledby=\"disabled-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\nTo help fit your needs, this works with `\u003Cul>`-based markup, as shown above, or with any arbitrary \"roll your own\" markup. Note that if you're using `\u003Cnav>`, you shouldn't add `role=\"tablist\"` directly to it, as this would override the element's native role as a navigation landmark. Instead, switch to an alternative element (in the example below, a simple `\u003Cdiv>`) and wrap the `\u003Cnav>` around it.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cnav>\n \u003Cdiv class=\"nav nav-tabs mb-3\" id=\"nav-tab\" role=\"tablist\">\n \u003Cbutton class=\"nav-link active\" id=\"nav-home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-home\" type=\"button\" role=\"tab\" aria-controls=\"nav-home\" aria-selected=\"true\">Home\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-profile\" type=\"button\" role=\"tab\" aria-controls=\"nav-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-contact-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-contact\" type=\"button\" role=\"tab\" aria-controls=\"nav-contact\" aria-selected=\"false\">Contact\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-disabled-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-disabled\" type=\"button\" role=\"tab\" aria-controls=\"nav-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/div>\n \u003C/nav>\n \u003Cdiv class=\"tab-content\" id=\"nav-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"nav-home\" role=\"tabpanel\" aria-labelledby=\"nav-home-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Home tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-profile\" role=\"tabpanel\" aria-labelledby=\"nav-profile-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Profile tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-contact\" role=\"tabpanel\" aria-labelledby=\"nav-contact-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Contact tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-disabled\" role=\"tabpanel\" aria-labelledby=\"nav-disabled-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Disabled tab's\u003C/strong> associated content.\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cnav>\n \u003Cdiv class=\"nav nav-tabs\" id=\"nav-tab\" role=\"tablist\">\n \u003Cbutton class=\"nav-link active\" id=\"nav-home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-home\" type=\"button\" role=\"tab\" aria-controls=\"nav-home\" aria-selected=\"true\">Home\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-profile\" type=\"button\" role=\"tab\" aria-controls=\"nav-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-contact-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-contact\" type=\"button\" role=\"tab\" aria-controls=\"nav-contact\" aria-selected=\"false\">Contact\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"nav-disabled-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#nav-disabled\" type=\"button\" role=\"tab\" aria-controls=\"nav-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/div>\n\u003C/nav>\n\u003Cdiv class=\"tab-content\" id=\"nav-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"nav-home\" role=\"tabpanel\" aria-labelledby=\"nav-home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-profile\" role=\"tabpanel\" aria-labelledby=\"nav-profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-contact\" role=\"tabpanel\" aria-labelledby=\"nav-contact-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"nav-disabled\" role=\"tabpanel\" aria-labelledby=\"nav-disabled-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\nThe tabs plugin also works with pills.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cul class=\"nav nav-pills mb-3\" id=\"pills-tab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"pills-home-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-home\" type=\"button\" role=\"tab\" aria-controls=\"pills-home\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-profile-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-profile\" type=\"button\" role=\"tab\" aria-controls=\"pills-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-contact-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-contact\" type=\"button\" role=\"tab\" aria-controls=\"pills-contact\" aria-selected=\"false\">Contact\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-disabled-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-disabled\" type=\"button\" role=\"tab\" aria-controls=\"pills-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/li>\n \u003C/ul>\n \u003Cdiv class=\"tab-content\" id=\"pills-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"pills-home\" role=\"tabpanel\" aria-labelledby=\"pills-home-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Home tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-profile\" role=\"tabpanel\" aria-labelledby=\"pills-profile-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Profile tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-contact\" role=\"tabpanel\" aria-labelledby=\"pills-contact-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Contact tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-disabled\" role=\"tabpanel\" aria-labelledby=\"pills-disabled-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Disabled tab's\u003C/strong> associated content.\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cul class=\"nav nav-pills mb-3\" id=\"pills-tab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"pills-home-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-home\" type=\"button\" role=\"tab\" aria-controls=\"pills-home\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-profile-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-profile\" type=\"button\" role=\"tab\" aria-controls=\"pills-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-contact-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-contact\" type=\"button\" role=\"tab\" aria-controls=\"pills-contact\" aria-selected=\"false\">Contact\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"pills-disabled-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#pills-disabled\" type=\"button\" role=\"tab\" aria-controls=\"pills-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"tab-content\" id=\"pills-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"pills-home\" role=\"tabpanel\" aria-labelledby=\"pills-home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-profile\" role=\"tabpanel\" aria-labelledby=\"pills-profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-contact\" role=\"tabpanel\" aria-labelledby=\"pills-contact-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"pills-disabled\" role=\"tabpanel\" aria-labelledby=\"pills-disabled-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\nAnd with vertical pills. Ideally, for vertical tabs, you should also add `aria-orientation=\"vertical\"` to the tab list container.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"d-flex align-items-start\">\n \u003Cdiv class=\"nav flex-column nav-pills me-3\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n \u003Cbutton class=\"nav-link active\" id=\"v-pills-home-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-home\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-home\" aria-selected=\"true\">Home\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-profile-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-profile\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-disabled-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-disabled\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-messages-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-messages\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-messages\" aria-selected=\"false\">Messages\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-settings-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-settings\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-settings\" aria-selected=\"false\">Settings\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"tab-content\" id=\"v-pills-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"v-pills-home\" role=\"tabpanel\" aria-labelledby=\"v-pills-home-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Home tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-profile\" role=\"tabpanel\" aria-labelledby=\"v-pills-profile-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Profile tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-disabled\" role=\"tabpanel\" aria-labelledby=\"v-pills-disabled-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Disabled tab's\u003C/strong> associated content.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-messages\" role=\"tabpanel\" aria-labelledby=\"v-pills-messages-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Messages tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-settings\" role=\"tabpanel\" aria-labelledby=\"v-pills-settings-tab\" tabindex=\"0\">\n \u003Cp>This is some placeholder content the \u003Cstrong>Settings tab's\u003C/strong> associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other \u003Ccode>.nav\u003C/code>-powered navigation.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-items-start\">\n \u003Cdiv class=\"nav flex-column nav-pills me-3\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n \u003Cbutton class=\"nav-link active\" id=\"v-pills-home-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-home\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-home\" aria-selected=\"true\">Home\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-profile-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-profile\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-disabled-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-disabled\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-disabled\" aria-selected=\"false\" disabled>Disabled\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-messages-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-messages\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-messages\" aria-selected=\"false\">Messages\u003C/button>\n \u003Cbutton class=\"nav-link\" id=\"v-pills-settings-tab\" data-bs-toggle=\"pill\" data-bs-target=\"#v-pills-settings\" type=\"button\" role=\"tab\" aria-controls=\"v-pills-settings\" aria-selected=\"false\">Settings\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"tab-content\" id=\"v-pills-tabContent\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"v-pills-home\" role=\"tabpanel\" aria-labelledby=\"v-pills-home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-profile\" role=\"tabpanel\" aria-labelledby=\"v-pills-profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-disabled\" role=\"tabpanel\" aria-labelledby=\"v-pills-disabled-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-messages\" role=\"tabpanel\" aria-labelledby=\"v-pills-messages-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"v-pills-settings\" role=\"tabpanel\" aria-labelledby=\"v-pills-settings-tab\" tabindex=\"0\">...\u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Accessibility\n\nDynamic tabbed interfaces, as described in the [ARIA Authoring Practices Guide tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabpanel/), require `role=\"tablist\"`, `role=\"tab\"`, `role=\"tabpanel\"`, and additional `aria-` attributes in order to convey their structure, functionality, and current state to users of assistive technologies (such as screen readers). As a best practice, we recommend using `\u003Cbutton>` elements for the tabs, as these are controls that trigger a dynamic change, rather than links that navigate to a new page or location.\n\nIn line with the ARIA Authoring Practices pattern, only the currently active tab receives keyboard focus. When the JavaScript plugin is initialized, it will set `tabindex=\"-1\"` on all inactive tab controls. Once the currently active tab has focus, the cursor keys activate the previous/next tab. The \u003Ckbd>Home\u003C/kbd> and \u003Ckbd>End\u003C/kbd> keys activate the first and last tabs, respectively. The plugin will change the [roving `tabindex`](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/) accordingly. However, note that the JavaScript plugin does not distinguish between horizontal and vertical tab lists when it comes to cursor key interactions: regardless of the tab list's orientation, both the up *and* left cursor go to the previous tab, and down *and* right cursor go to the next tab.\n\n\u003CCallout type=\"warning\">\nIn general, to facilitate keyboard navigation, it's recommended to make the tab panels themselves focusable as well, unless the first element containing meaningful content inside the tab panel is already focusable. The JavaScript plugin does not try to handle this aspect—where appropriate, you'll need to explicitly make your tab panels focusable by adding `tabindex=\"0\"` in your markup.\n\u003C/Callout>\n\n\u003CCallout type=\"danger\">\nThe tab JavaScript plugin **does not** support tabbed interfaces that contain dropdown menus, as these cause both usability and accessibility issues. From a usability perspective, the fact that the currently displayed tab's trigger element is not immediately visible (as it's inside the closed dropdown menu) can cause confusion. From an accessibility point of view, there is currently no sensible way to map this sort of construct to a standard WAI ARIA pattern, meaning that it cannot be easily made understandable to users of assistive technologies.\n\u003C/Callout>\n\n### Using data attributes\n\nYou can activate a tab or pill navigation without writing any JavaScript by simply specifying `data-bs-toggle=\"tab\"` or `data-bs-toggle=\"pill\"` on an element. Use these data attributes on `.nav-tabs` or `.nav-pills`.\n\n```html\n\u003C!-- Nav tabs -->\n\u003Cul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link active\" id=\"home-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#home\" type=\"button\" role=\"tab\" aria-controls=\"home\" aria-selected=\"true\">Home\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"profile-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#profile\" type=\"button\" role=\"tab\" aria-controls=\"profile\" aria-selected=\"false\">Profile\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"messages-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#messages\" type=\"button\" role=\"tab\" aria-controls=\"messages\" aria-selected=\"false\">Messages\u003C/button>\n \u003C/li>\n \u003Cli class=\"nav-item\" role=\"presentation\">\n \u003Cbutton class=\"nav-link\" id=\"settings-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#settings\" type=\"button\" role=\"tab\" aria-controls=\"settings\" aria-selected=\"false\">Settings\u003C/button>\n \u003C/li>\n\u003C/ul>\n\n\u003C!-- Tab panes -->\n\u003Cdiv class=\"tab-content\">\n \u003Cdiv class=\"tab-pane active\" id=\"home\" role=\"tabpanel\" aria-labelledby=\"home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"profile\" role=\"tabpanel\" aria-labelledby=\"profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"messages\" role=\"tabpanel\" aria-labelledby=\"messages-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane\" id=\"settings\" role=\"tabpanel\" aria-labelledby=\"settings-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\n### Via JavaScript\n\nEnable tabbable tabs via JavaScript (each tab needs to be activated individually):\n\n```js\nconst triggerTabList = document.querySelectorAll('#myTab button')\ntriggerTabList.forEach(triggerEl => {\n const tabTrigger = new bootstrap.Tab(triggerEl)\n\n triggerEl.addEventListener('click', event => {\n event.preventDefault()\n tabTrigger.show()\n })\n})\n```\n\nYou can activate individual tabs in several ways:\n\n```js\nconst triggerEl = document.querySelector('#myTab button[data-bs-target=\"#profile\"]')\nbootstrap.Tab.getInstance(triggerEl).show() // Select tab by name\n\nconst triggerFirstTabEl = document.querySelector('#myTab li:first-child button')\nbootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab\n```\n\n### Fade effect\n\nTo make tabs fade in, add `.fade` to each `.tab-pane`. The first tab pane must also have `.show` to make the initial content visible.\n\n```html\n\u003Cdiv class=\"tab-content\">\n \u003Cdiv class=\"tab-pane fade show active\" id=\"home\" role=\"tabpanel\" aria-labelledby=\"home-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"profile\" role=\"tabpanel\" aria-labelledby=\"profile-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"messages\" role=\"tabpanel\" aria-labelledby=\"messages-tab\" tabindex=\"0\">...\u003C/div>\n \u003Cdiv class=\"tab-pane fade\" id=\"settings\" role=\"tabpanel\" aria-labelledby=\"settings-tab\" tabindex=\"0\">...\u003C/div>\n\u003C/div>\n```\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\nActivates your content as a tab element.\n\nYou can create a tab instance with the constructor, for example:\n\n```js\nconst bsTab = new bootstrap.Tab('#myTab')\n```\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's tab. |\n| `getInstance` | Static method which allows you to get the tab instance associated with a DOM element, you can use it like this: `bootstrap.Tab.getInstance(element)`. |\n| `getOrCreateInstance` | Static method which returns a tab instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Tab.getOrCreateInstance(element)`. |\n| `show` | Selects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. **Returns to the caller before the tab pane has actually been shown** (i.e. before the `shown.bs.tab` event occurs). |\n\u003C/BsTable>\n\n### Events\n\nWhen showing a new tab, the events fire in the following order:\n\n1. `hide.bs.tab` (on the current active tab)\n2. `show.bs.tab` (on the to-be-shown tab)\n3. `hidden.bs.tab` (on the previous active tab, the same one as for the `hide.bs.tab` event)\n4. `shown.bs.tab` (on the newly-active just-shown tab, the same one as for the `show.bs.tab` event)\n\nIf no tab was already active, then the `hide.bs.tab` and `hidden.bs.tab` events will not be fired.\n\n\u003CBsTable>\n| Event type | Description |\n| --- | --- |\n| `hide.bs.tab` | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use `event.target` and `event.relatedTarget` to target the current active tab and the new soon-to-be-active tab, respectively. |\n| `hidden.bs.tab` | This event fires after a new tab is shown (and thus the previous active tab is hidden). Use `event.target` and `event.relatedTarget` to target the previous active tab and the new active tab, respectively. |\n| `show.bs.tab` | This event fires on tab show, but before the new tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. |\n| `shown.bs.tab` | This event fires on tab show after a tab has been shown. Use `event.target` and `event.relatedTarget` to target the active tab and the previous active tab (if available) respectively. |\n\u003C/BsTable>\n\n```js\nconst tabEl = document.querySelector('button[data-bs-toggle=\"tab\"]')\ntabEl.addEventListener('shown.bs.tab', event => {\n event.target // newly activated tab\n event.relatedTarget // previous active tab\n})\n```","src/content/docs/components/navs-tabs.mdx","fa41b7164104bf9c","components/navs-tabs.mdx","components/navbar",{"id":477,"data":479,"body":482,"filePath":483,"digest":484,"legacyId":485,"deferredRender":139},{"description":480,"title":481,"toc":139},"Documentation and examples for Bootstrap's powerful, responsive navigation header, the navbar. Includes support for branding, navigation, and more, including support for our collapse plugin.","Navbar","import { getConfig } from '@libs/config'\n\n## How it works\n\nHere's what you need to know before getting started with the navbar:\n\n- Navbars require a wrapping `.navbar` with `.navbar-expand{-sm|-md|-lg|-xl|-xxl}` for responsive collapsing and [color scheme](#color-schemes) classes.\n- Navbars and their contents are fluid by default. Change the [container](#containers) to limit their horizontal width in different ways.\n- Use our [spacing]([[docsref:/utilities/spacing]]) and [flex]([[docsref:/utilities/flex]]) utility classes for controlling spacing and alignment within navbars.\n- Navbars are responsive by default, but you can easily modify them to change that. Responsive behavior depends on our Collapse JavaScript plugin.\n- Ensure accessibility by using a `\u003Cnav>` element or, if using a more generic element such as a `\u003Cdiv>`, add a `role=\"navigation\"` to every navbar to explicitly identify it as a landmark region for users of assistive technologies.\n- Indicate the current item by using `aria-current=\"page\"` for the current page or `aria-current=\"true\"` for the current item in a set.\n- **New in v5.2.0:** Navbars can be themed with CSS variables that are scoped to the `.navbar` base class. `.navbar-light` has been deprecated and `.navbar-dark` has been rewritten to override CSS variables instead of adding additional styles.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Supported content\n\nNavbars come with built-in support for a handful of sub-components. Choose from the following as needed:\n\n- `.navbar-brand` for your company, product, or project name.\n- `.navbar-nav` for a full-height and lightweight navigation (including support for dropdowns).\n- `.navbar-toggler` for use with our collapse plugin and other [navigation toggling](#responsive-behaviors) behaviors.\n- Flex and spacing utilities for any form controls and actions.\n- `.navbar-text` for adding vertically centered strings of text.\n- `.collapse.navbar-collapse` for grouping and hiding navbar contents by a parent breakpoint.\n- Add an optional `.navbar-scroll` to set a `max-height` and [scroll expanded navbar content](#scrolling).\n\nHere's an example of all the sub-components included in a responsive light-themed navbar that automatically collapses at the `lg` (large) breakpoint.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarSupportedContent\" aria-controls=\"navbarSupportedContent\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarSupportedContent\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nThis example uses [background]([[docsref:/utilities/background]]) (`bg-body-tertiary`) and [spacing]([[docsref:/utilities/spacing]]) (`me-auto`, `mb-2`, `mb-lg-0`, `me-2`) utility classes.\n\n### Brand\n\nThe `.navbar-brand` can be applied to most elements, but an anchor works best, as some elements might require utility classes or custom styles.\n\n#### Text\n\nAdd your text within an element with the `.navbar-brand` class.\n\n\u003CExample code={`\u003C!-- As a link -->\n\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003C/div>\n\u003C/nav>\n\n\u003C!-- As a heading -->\n\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cspan class=\"navbar-brand mb-0 h1\">Navbar\u003C/span>\n \u003C/div>\n\u003C/nav>`} />\n\n#### Image\n\nYou can replace the text within the `.navbar-brand` with an `\u003Cimg>`.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container\">\n \u003Ca class=\"navbar-brand\" href=\"#\">\n \u003Cimg src=\"/docs/${getConfig().docs_version}/assets/brand/bootstrap-logo.svg\" alt=\"Bootstrap\" width=\"30\" height=\"24\">\n \u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n#### Image and text\n\nYou can also make use of some additional utilities to add an image and text at the same time. Note the addition of `.d-inline-block` and `.align-text-top` on the `\u003Cimg>`.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">\n \u003Cimg src=\"/docs/${getConfig().docs_version}/assets/brand/bootstrap-logo.svg\" alt=\"Logo\" width=\"30\" height=\"24\" class=\"d-inline-block align-text-top\">\n Bootstrap\n \u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n### Nav\n\nNavbar navigation links build on our `.nav` options with their own modifier class and require the use of [toggler classes](#toggler) for proper responsive styling. **Navigation in navbars will also grow to occupy as much horizontal space as possible** to keep your navbar contents securely aligned.\n\nAdd the `.active` class on `.nav-link` to indicate the current page.\n\nPlease note that you should also add the `aria-current` attribute on the active `.nav-link`.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\" aria-controls=\"navbarNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNav\">\n \u003Cul class=\"navbar-nav\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nAnd because we use classes for our navs, you can avoid the list-based approach entirely if you like.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNavAltMarkup\" aria-controls=\"navbarNavAltMarkup\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNavAltMarkup\">\n \u003Cdiv class=\"navbar-nav\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nYou can also use dropdowns in your navbar. Dropdown menus require a wrapping element for positioning, so be sure to use separate and nested elements for `.nav-item` and `.nav-link` as shown below.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNavDropdown\" aria-controls=\"navbarNavDropdown\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNavDropdown\">\n \u003Cul class=\"navbar-nav\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown link\n \u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n### Forms\n\nPlace various form controls and components within a navbar:\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n\u003C/nav>`} />\n\nImmediate child elements of `.navbar` use flex layout and will default to `justify-content: space-between`. Use additional [flex utilities]([[docsref:/utilities/flex]]) as needed to adjust this behavior.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\">Navbar\u003C/a>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n\u003C/nav>`} />\n\nInput groups work, too. If your navbar is an entire form, or mostly a form, you can use the `\u003Cform>` element as the container and save some HTML.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cform class=\"container-fluid\">\n \u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\" id=\"basic-addon1\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-label=\"Username\" aria-describedby=\"basic-addon1\"/>\n \u003C/div>\n \u003C/form>\n\u003C/nav>`} />\n\nVarious buttons are supported as part of these navbar forms, too. This is also a great reminder that vertical alignment utilities can be used to align different sized elements.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cform class=\"container-fluid justify-content-start\">\n \u003Cbutton class=\"btn btn-outline-success me-2\" type=\"button\">Main button\u003C/button>\n \u003Cbutton class=\"btn btn-sm btn-outline-secondary\" type=\"button\">Smaller button\u003C/button>\n \u003C/form>\n\u003C/nav>`} />\n\n### Text\n\nNavbars may contain bits of text with the help of `.navbar-text`. This class adjusts vertical alignment and horizontal spacing for strings of text.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cspan class=\"navbar-text\">\n Navbar text with an inline element\n \u003C/span>\n \u003C/div>\n\u003C/nav>`} />\n\nMix and match with other components and utilities as needed.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar w/ text\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarText\" aria-controls=\"navbarText\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarText\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cspan class=\"navbar-text\">\n Navbar text with an inline element\n \u003C/span>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n## Color schemes\n\n\u003CCallout type=\"warning\">\n**New dark navbars in v5.3.0 —** We've deprecated `.navbar-dark` in favor of the new `data-bs-theme=\"dark\"`. Add `data-bs-theme=\"dark\"` to the `.navbar` to enable a component-specific color mode. [Learn more about our color modes.]([[docsref:/customize/color-modes]])\n\n---\n\n**New in v5.2.0 —** Navbar theming is now powered by CSS variables and `.navbar-light` has been deprecated. CSS variables are applied to `.navbar`, defaulting to the \"light\" appearance, and can be overridden with `.navbar-dark`.\n\u003C/Callout>\n\nNavbar themes are easier than ever thanks to Bootstrap's combination of Sass and CSS variables. The default is our \"light navbar\" for use with light background colors, but you can also apply `data-bs-theme=\"dark\"` to the `.navbar` parent for dark background colors. Then, customize with `.bg-*` and additional utilities.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cnav class=\"navbar navbar-expand-lg bg-dark border-bottom border-body\" data-bs-theme=\"dark\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarColor01\" aria-controls=\"navbarColor01\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarColor01\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">About\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-light\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/nav>\n\n \u003Cnav class=\"navbar navbar-expand-lg bg-primary\" data-bs-theme=\"dark\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarColor02\" aria-controls=\"navbarColor02\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarColor02\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">About\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-light\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/nav>\n\n \u003Cnav class=\"navbar navbar-expand-lg\" style=\"background-color: #e3f2fd;\" data-bs-theme=\"light\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarColor03\" aria-controls=\"navbarColor03\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarColor03\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Features\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Pricing\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">About\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-primary\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/nav>\n\u003C/div>\n\n```html\n\u003Cnav class=\"navbar bg-dark border-bottom border-body\" data-bs-theme=\"dark\">\n \u003C!-- Navbar content -->\n\u003C/nav>\n\n\u003Cnav class=\"navbar bg-primary\" data-bs-theme=\"dark\">\n \u003C!-- Navbar content -->\n\u003C/nav>\n\n\u003Cnav class=\"navbar\" style=\"background-color: #e3f2fd;\" data-bs-theme=\"light\">\n \u003C!-- Navbar content -->\n\u003C/nav>\n```\n\n## Containers\n\nAlthough it's not required, you can wrap a navbar in a `.container` to center it on a page–though note that an inner container is still required. Or you can add a container inside the `.navbar` to only center the contents of a [fixed or static top navbar](#placement).\n\n\u003CExample code={`\u003Cdiv class=\"container\">\n \u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003C/div>\n \u003C/nav>\n\u003C/div>`} />\n\nUse any of the responsive containers to change how wide the content in your navbar is presented.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-md\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003C/div>\n\u003C/nav>\n`} />\n\n## Placement\n\nUse our [position utilities]([[docsref:/utilities/position]]) to place navbars in non-static positions. Choose from fixed to the top, fixed to the bottom, stickied to the top (scrolls with the page until it reaches the top, then stays there), or stickied to the bottom (scrolls with the page until it reaches the bottom, then stays there).\n\nFixed navbars use `position: fixed`, meaning they're pulled from the normal flow of the DOM and may require custom CSS (e.g., `padding-top` on the `\u003Cbody>`) to prevent overlap with other elements.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Default\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav class=\"navbar fixed-top bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Fixed top\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav class=\"navbar fixed-bottom bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Fixed bottom\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav class=\"navbar sticky-top bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Sticky top\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav class=\"navbar sticky-bottom bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Sticky bottom\u003C/a>\n \u003C/div>\n\u003C/nav>`} />\n\n## Scrolling\n\nAdd `.navbar-nav-scroll` to a `.navbar-nav` (or other navbar sub-component) to enable vertical scrolling within the toggleable contents of a collapsed navbar. By default, scrolling kicks in at `75vh` (or 75% of the viewport height), but you can override that with the local CSS custom property `--bs-navbar-height` or custom styles. At larger viewports when the navbar is expanded, content will appear as it does in a default navbar.\n\nPlease note that this behavior comes with a potential drawback of `overflow`—when setting `overflow-y: auto` (required to scroll the content here), `overflow-x` is the equivalent of `auto`, which will crop some horizontal content.\n\nHere's an example navbar using `.navbar-nav-scroll` with `style=\"--bs-scroll-height: 100px;\"`, with some extra margin utilities for optimum spacing.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar scroll\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarScroll\" aria-controls=\"navbarScroll\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarScroll\">\n \u003Cul class=\"navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll\" style=\"--bs-scroll-height: 100px;\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Link\n \u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Link\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n## Responsive behaviors\n\nNavbars can use `.navbar-toggler`, `.navbar-collapse`, and `.navbar-expand{-sm|-md|-lg|-xl|-xxl}` classes to determine when their content collapses behind a button. In combination with other utilities, you can easily choose when to show or hide particular elements.\n\nFor navbars that never collapse, add the `.navbar-expand` class on the navbar. For navbars that always collapse, don't add any `.navbar-expand` class.\n\n### Toggler\n\nNavbar togglers are left-aligned by default, but should they follow a sibling element like a `.navbar-brand`, they'll automatically be aligned to the far right. Reversing your markup will reverse the placement of the toggler. Below are examples of different toggle styles.\n\nWith no `.navbar-brand` shown at the smallest breakpoint:\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarTogglerDemo01\" aria-controls=\"navbarTogglerDemo01\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarTogglerDemo01\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Hidden brand\u003C/a>\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nWith a brand name shown on the left and toggler on the right:\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarTogglerDemo02\" aria-controls=\"navbarTogglerDemo02\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarTogglerDemo02\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nWith a toggler on the left and brand name on the right:\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarTogglerDemo03\" aria-controls=\"navbarTogglerDemo03\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarTogglerDemo03\">\n \u003Cul class=\"navbar-nav me-auto mb-2 mb-lg-0\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link disabled\" aria-disabled=\"true\">Disabled\u003C/a>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n### External content\n\nSometimes you want to use the collapse plugin to trigger a container element for content that structurally sits outside of the `.navbar` . Because our plugin works on the `id` and `data-bs-target` matching, that's easily done!\n\n\u003CExample code={`\u003Cdiv class=\"collapse\" id=\"navbarToggleExternalContent\" data-bs-theme=\"dark\">\n \u003Cdiv class=\"bg-dark p-4\">\n \u003Ch5 class=\"text-body-emphasis h4\">Collapsed content\u003C/h5>\n \u003Cspan class=\"text-body-secondary\">Toggleable via the navbar brand.\u003C/span>\n \u003C/div>\n\u003C/div>\n\u003Cnav class=\"navbar navbar-dark bg-dark\">\n \u003Cdiv class=\"container-fluid\">\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarToggleExternalContent\" aria-controls=\"navbarToggleExternalContent\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003C/div>\n\u003C/nav>`} />\n\nWhen you do this, we recommend including additional JavaScript to move the focus programmatically to the container when it is opened. Otherwise, keyboard users and users of assistive technologies will likely have a hard time finding the newly revealed content - particularly if the container that was opened comes *before* the toggler in the document's structure. We also recommend making sure that the toggler has the `aria-controls` attribute, pointing to the `id` of the content container. In theory, this allows assistive technology users to jump directly from the toggler to the container it controls–but support for this is currently quite patchy.\n\n### Offcanvas\n\nTransform your expanding and collapsing navbar into an offcanvas drawer with the [offcanvas component]([[docsref:/components/offcanvas]]). We extend both the offcanvas default styles and use our `.navbar-expand-*` classes to create a dynamic and flexible navigation sidebar.\n\nIn the example below, to create an offcanvas navbar that is always collapsed across all breakpoints, omit the `.navbar-expand-*` class entirely.\n\n\u003CExample code={`\u003Cnav class=\"navbar bg-body-tertiary fixed-top\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Offcanvas navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasNavbar\" aria-controls=\"offcanvasNavbar\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"offcanvasNavbar\" aria-labelledby=\"offcanvasNavbarLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasNavbarLabel\">Offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cul class=\"navbar-nav justify-content-end flex-grow-1 pe-3\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\n \u003Chr class=\"dropdown-divider\">\n \u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex mt-3\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-outline-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\nTo create an offcanvas navbar that expands into a normal navbar at a specific breakpoint like `lg`, use `.navbar-expand-lg`.\n\n```html\n\u003Cnav class=\"navbar navbar-expand-lg bg-body-tertiary fixed-top\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Offcanvas navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navbarOffcanvasLg\" aria-controls=\"navbarOffcanvasLg\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"navbarOffcanvasLg\" aria-labelledby=\"navbarOffcanvasLgLabel\">\n ...\n \u003C/div>\n\u003C/nav>\n```\n\nWhen using offcanvas in a dark navbar, be aware that you may need to have a dark background on the offcanvas content to avoid the text becoming illegible. In the example below, we add `.navbar-dark` and `.bg-dark` to the `.navbar`, `.text-bg-dark` to the `.offcanvas`, `.dropdown-menu-dark` to `.dropdown-menu`, and `.btn-close-white` to `.btn-close` for proper styling with a dark offcanvas.\n\n\u003CExample code={`\u003Cnav class=\"navbar navbar-dark bg-dark fixed-top\">\n \u003Cdiv class=\"container-fluid\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Offcanvas dark navbar\u003C/a>\n \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasDarkNavbar\" aria-controls=\"offcanvasDarkNavbar\" aria-label=\"Toggle navigation\">\n \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n \u003C/button>\n \u003Cdiv class=\"offcanvas offcanvas-end text-bg-dark\" tabindex=\"-1\" id=\"offcanvasDarkNavbar\" aria-labelledby=\"offcanvasDarkNavbarLabel\">\n \u003Cdiv class=\"offcanvas-header\">\n \u003Ch5 class=\"offcanvas-title\" id=\"offcanvasDarkNavbarLabel\">Dark offcanvas\u003C/h5>\n \u003Cbutton type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"offcanvas-body\">\n \u003Cul class=\"navbar-nav justify-content-end flex-grow-1 pe-3\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link active\" aria-current=\"page\" href=\"#\">Home\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#\">Link\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n Dropdown\n \u003C/a>\n \u003Cul class=\"dropdown-menu dropdown-menu-dark\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\n \u003Chr class=\"dropdown-divider\">\n \u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003Cform class=\"d-flex mt-3\" role=\"search\">\n \u003Cinput class=\"form-control me-2\" type=\"search\" placeholder=\"Search\" aria-label=\"Search\"/>\n \u003Cbutton class=\"btn btn-success\" type=\"submit\">Search\u003C/button>\n \u003C/form>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/nav>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, navbars now use local CSS variables on `.navbar` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"navbar-css-vars\" file=\"scss/_navbar.scss\" />\n\nSome additional CSS variables are also present on `.navbar-nav`:\n\n\u003CScssDocs name=\"navbar-nav-css-vars\" file=\"scss/_navbar.scss\" />\n\nCustomization through CSS variables can be seen on the `.navbar-dark` class where we override specific values without adding duplicate CSS selectors.\n\n\u003CScssDocs name=\"navbar-dark-css-vars\" file=\"scss/_navbar.scss\" />\n\n### Sass variables\n\nVariables for all navbars:\n\n\u003CScssDocs name=\"navbar-variables\" file=\"scss/_variables.scss\" />\n\nVariables for the [dark navbar](#color-schemes):\n\n\u003CScssDocs name=\"navbar-dark-variables\" file=\"scss/_variables.scss\" />\n\n### Sass loops\n\n[Responsive navbar expand/collapse classes](#responsive-behaviors) (e.g., `.navbar-expand-lg`) are combined with the `$breakpoints` map and generated through a loop in `scss/_navbar.scss`.\n\n\u003CScssDocs name=\"navbar-expand-loop\" file=\"scss/_navbar.scss\" />","src/content/docs/components/navbar.mdx","97f16c3a269185a4","components/navbar.mdx","components/pagination",{"id":486,"data":488,"body":491,"filePath":492,"digest":493,"legacyId":494,"deferredRender":139},{"description":489,"title":490,"toc":139},"Documentation and examples for showing pagination to indicate a series of related content exists across multiple pages.","Pagination","## Overview\n\nWe use a large block of connected links for our pagination, making links hard to miss and easily scalable—all while providing large hit areas. Pagination is built with list HTML elements so screen readers can announce the number of available links. Use a wrapping `\u003Cnav>` element to identify it as a navigation section to screen readers and other assistive technologies.\n\nIn addition, as pages likely have more than one such navigation section, it's advisable to provide a descriptive `aria-label` for the `\u003Cnav>` to reflect its purpose. For example, if the pagination component is used to navigate between a set of search results, an appropriate label could be `aria-label=\"Search results pages\"`.\n\n\u003CExample code={`\u003Cnav aria-label=\"Page navigation example\">\n \u003Cul class=\"pagination\">\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">Previous\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## Working with icons\n\nLooking to use an icon or symbol in place of text for some pagination links? Be sure to provide proper screen reader support with `aria` attributes.\n\n\u003CExample code={`\u003Cnav aria-label=\"Page navigation example\">\n \u003Cul class=\"pagination\">\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\" aria-label=\"Previous\">\n \u003Cspan aria-hidden=\"true\">«\u003C/span>\n \u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\" aria-label=\"Next\">\n \u003Cspan aria-hidden=\"true\">»\u003C/span>\n \u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## Disabled and active states\n\nPagination links are customizable for different circumstances. Use `.disabled` for links that appear un-clickable and `.active` to indicate the current page.\n\nWhile the `.disabled` class uses `pointer-events: none` to _try_ to disable the link functionality of `\u003Ca>`s, that CSS property is not yet standardized and doesn't account for keyboard navigation. As such, you should always add `tabindex=\"-1\"` on disabled links and use custom JavaScript to fully disable their functionality.\n\n\u003CExample code={`\u003Cnav aria-label=\"...\">\n \u003Cul class=\"pagination\">\n \u003Cli class=\"page-item disabled\">\n \u003Ca class=\"page-link\">Previous\u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item active\" aria-current=\"page\">\n \u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\nYou can optionally swap out active or disabled anchors for `\u003Cspan>`, or omit the anchor in the case of the prev/next arrows, to remove click functionality and prevent keyboard focus while retaining intended styles.\n\n\u003CExample code={`\u003Cnav aria-label=\"...\">\n \u003Cul class=\"pagination\">\n \u003Cli class=\"page-item disabled\">\n \u003Cspan class=\"page-link\">Previous\u003C/span>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item active\" aria-current=\"page\">\n \u003Cspan class=\"page-link\">2\u003C/span>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## Sizing\n\nFancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for additional sizes.\n\n\u003CExample code={`\u003Cnav aria-label=\"...\">\n \u003Cul class=\"pagination pagination-lg\">\n \u003Cli class=\"page-item active\" aria-current=\"page\">\n \u003Cspan class=\"page-link\">1\u003C/span>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n\u003CExample code={`\u003Cnav aria-label=\"...\">\n \u003Cul class=\"pagination pagination-sm\">\n \u003Cli class=\"page-item active\" aria-current=\"page\">\n \u003Cspan class=\"page-link\">1\u003C/span>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## Alignment\n\nChange the alignment of pagination components with [flexbox utilities]([[docsref:/utilities/flex]]). For example, with `.justify-content-center`:\n\n\u003CExample code={`\u003Cnav aria-label=\"Page navigation example\">\n \u003Cul class=\"pagination justify-content-center\">\n \u003Cli class=\"page-item disabled\">\n \u003Ca class=\"page-link\">Previous\u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\nOr with `.justify-content-end`:\n\n\u003CExample code={`\u003Cnav aria-label=\"Page navigation example\">\n \u003Cul class=\"pagination justify-content-end\">\n \u003Cli class=\"page-item disabled\">\n \u003Ca class=\"page-link\">Previous\u003C/a>\n \u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">1\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">2\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\u003Ca class=\"page-link\" href=\"#\">3\u003C/a>\u003C/li>\n \u003Cli class=\"page-item\">\n \u003Ca class=\"page-link\" href=\"#\">Next\u003C/a>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, pagination now uses local CSS variables on `.pagination` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"pagination-css-vars\" file=\"scss/_pagination.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"pagination-variables\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\n\u003CScssDocs name=\"pagination-mixin\" file=\"scss/mixins/_pagination.scss\" />","src/content/docs/components/pagination.mdx","4ae6699d1ffa4c25","components/pagination.mdx","components/placeholders",{"id":495,"data":497,"body":502,"filePath":503,"digest":504,"legacyId":505,"deferredRender":139},{"added":498,"description":500,"title":501,"toc":139},{"version":499},"5.1","Use loading placeholders for your components or pages to indicate something may still be loading.","Placeholders","import { getData } from '@libs/data'\n\n## About\n\nPlaceholders can be used to enhance the experience of your application. They're built only with HTML and CSS, meaning you don't need any JavaScript to create them. You will, however, need some custom JavaScript to toggle their visibility. Their appearance, color, and sizing can be easily customized with our utility classes.\n\n## Example\n\nIn the example below, we take a typical card component and recreate it with placeholders applied to create a \"loading card\". Size and proportions are the same between the two.\n\n\u003Cdiv class=\"bd-example bd-example-placeholder-cards d-flex justify-content-around\">\n\u003Cdiv class=\"card\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text={false} background=\"#20c997\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card\" aria-hidden=\"true\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text={false} />\n \u003Cdiv class=\"card-body\">\n \u003Cdiv class=\"h5 card-title placeholder-glow\">\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n \u003C/div>\n \u003Cp class=\"card-text placeholder-glow\">\n \u003Cspan class=\"placeholder col-7\">\u003C/span>\n \u003Cspan class=\"placeholder col-4\">\u003C/span>\n \u003Cspan class=\"placeholder col-4\">\u003C/span>\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n \u003Cspan class=\"placeholder col-8\">\u003C/span>\n \u003C/p>\n \u003Ca class=\"btn btn-primary disabled placeholder col-6\" aria-disabled=\"true\">\u003C/a>\n \u003C/div>\n\u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"card\">\n \u003Cimg src=\"...\" class=\"card-img-top\" alt=\"...\">\n\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card title\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"card\" aria-hidden=\"true\">\n \u003Cimg src=\"...\" class=\"card-img-top\" alt=\"...\">\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title placeholder-glow\">\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n \u003C/h5>\n \u003Cp class=\"card-text placeholder-glow\">\n \u003Cspan class=\"placeholder col-7\">\u003C/span>\n \u003Cspan class=\"placeholder col-4\">\u003C/span>\n \u003Cspan class=\"placeholder col-4\">\u003C/span>\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n \u003Cspan class=\"placeholder col-8\">\u003C/span>\n \u003C/p>\n \u003Ca class=\"btn btn-primary disabled placeholder col-6\" aria-disabled=\"true\">\u003C/a>\n \u003C/div>\n\u003C/div>\n```\n\n## How it works\n\nCreate placeholders with the `.placeholder` class and a grid column class (e.g., `.col-6`) to set the `width`. They can replace the text inside an element or be added as a modifier class to an existing component.\n\nWe apply additional styling to `.btn`s via `::before` to ensure the `height` is respected. You may extend this pattern for other situations as needed, or add a ` ` within the element to reflect the height when actual text is rendered in its place.\n\n\u003CExample code={`\u003Cp aria-hidden=\"true\">\n \u003Cspan class=\"placeholder col-6\">\u003C/span>\n\u003C/p>\n\n\u003Ca class=\"btn btn-primary disabled placeholder col-4\" aria-disabled=\"true\">\u003C/a>`} />\n\n\u003CCallout>\nThe use of `aria-hidden=\"true\"` only indicates that the element should be hidden to screen readers. The *loading* behavior of the placeholder depends on how authors will actually use the placeholder styles, how they plan to update things, etc. Some JavaScript code may be needed to *swap* the state of the placeholder and inform AT users of the update.\n\u003C/Callout>\n\n### Width\n\nYou can change the `width` through grid column classes, width utilities, or inline styles.\n\n\u003CExample code={`\u003Cspan class=\"placeholder col-6\">\u003C/span>\n\u003Cspan class=\"placeholder w-75\">\u003C/span>\n\u003Cspan class=\"placeholder\" style=\"width: 25%;\">\u003C/span>`} />\n\n### Color\n\nBy default, the `placeholder` uses `currentColor`. This can be overridden with a custom color or utility class.\n\n\u003CExample code={[\n `\u003Cspan class=\"placeholder col-12\">\u003C/span>\n `,\n ...getData('theme-colors').map((themeColor) => `\u003Cspan class=\"placeholder col-12 bg-${themeColor.name}\">\u003C/span>`)\n]} />\n\n### Sizing\n\nThe size of `.placeholder`s are based on the typographic style of the parent element. Customize them with sizing modifiers: `.placeholder-lg`, `.placeholder-sm`, or `.placeholder-xs`.\n\n\u003CExample code={`\u003Cspan class=\"placeholder col-12 placeholder-lg\">\u003C/span>\n\u003Cspan class=\"placeholder col-12\">\u003C/span>\n\u003Cspan class=\"placeholder col-12 placeholder-sm\">\u003C/span>\n\u003Cspan class=\"placeholder col-12 placeholder-xs\">\u003C/span>`} />\n\n### Animation\n\nAnimate placeholders with `.placeholder-glow` or `.placeholder-wave` to better convey the perception of something being *actively* loaded.\n\n\u003CExample code={`\u003Cp class=\"placeholder-glow\">\n \u003Cspan class=\"placeholder col-12\">\u003C/span>\n\u003C/p>\n\n\u003Cp class=\"placeholder-wave\">\n \u003Cspan class=\"placeholder col-12\">\u003C/span>\n\u003C/p>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"placeholders\" file=\"scss/_variables.scss\" />","src/content/docs/components/placeholders.mdx","56d3913eae45f526","components/placeholders.mdx","components/progress",{"id":506,"data":508,"body":511,"filePath":512,"digest":513,"legacyId":514,"deferredRender":139},{"description":509,"title":510,"toc":139},"Documentation and examples for using Bootstrap custom progress bars featuring support for stacked bars, animated backgrounds, and text labels.","Progress","\u003CCallout>\n**New markup in v5.3.0 —** We've deprecated the previous HTML structure for progress bars and replaced it with a more accessible one. The previous structure will continue to work until v6. [See what's changed in our migration guide.]([[docsref:/migration#improved-markup-for-progress-bars]])\n\u003C/Callout>\n\n## How it works\n\nProgress components are built with two HTML elements, some CSS to set the width, and a few attributes. We don't use [the HTML5 `\u003Cprogress>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress), ensuring you can stack progress bars, animate them, and place text labels over them.\n\n- We use the `.progress` as a wrapper to indicate the max value of the progress bar.\n- The `.progress` wrapper also requires a `role=\"progressbar\"` and `aria` attributes to make it accessible, including an accessible name (using `aria-label`, `aria-labelledby`, or similar).\n- We use the inner `.progress-bar` purely for the visual bar and label.\n- The `.progress-bar` requires an inline style, utility class, or custom CSS to set its width.\n- We provide a special `.progress-stacked` class to create multiple/stacked progress bars.\n\nPut that all together, and you have the following examples.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 0%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 50%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 75%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 100%\">\u003C/div>\n\u003C/div>`} />\n\n## Bar sizing\n\n### Width\n\nBootstrap provides a handful of [utilities for setting width]([[docsref:/utilities/sizing]]). Depending on your needs, these may help with quickly configuring the width of the `.progress-bar`.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Basic example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar w-75\">\u003C/div>\n\u003C/div>`} />\n\n### Height\n\nYou only set a `height` value on the `.progress` container, so if you change that value, the inner `.progress-bar` will automatically resize accordingly.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Example 1px high\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"height: 1px\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Example 20px high\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"height: 20px\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">\u003C/div>\n\u003C/div>`} />\n\n## Labels\n\nAdd labels to your progress bars by placing text within the `.progress-bar`.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Example with label\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 25%\">25%\u003C/div>\n\u003C/div>`} />\n\nNote that by default, the content inside the `.progress-bar` is controlled with `overflow: hidden`, so it doesn't bleed out of the bar. If your progress bar is shorter than its label, the content will be capped and may become unreadable. To change this behavior, you can use `.overflow-visible` from the [overflow utilities]([[docsref:/utilities/overflow]]), but make sure to also define an explicit [text color]([[docsref:/utilities/colors#colors]]) so the text remains readable. Be aware though that currently this approach does not take into account [color modes]([[docsref:/customize/color-modes]]).\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Example with label\" aria-valuenow=\"10\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar overflow-visible text-dark\" style=\"width: 10%\">Long label text for the progress bar, set to a dark color\u003C/div>\n\u003C/div>`} />\n\n## Backgrounds\n\nUse background utility classes to change the appearance of individual progress bars.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Success example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-success\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Info example\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-info\" style=\"width: 50%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Warning example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-warning\" style=\"width: 75%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Danger example\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-danger\" style=\"width: 100%\">\u003C/div>\n\u003C/div>`} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\nIf you're adding labels to progress bars with a custom background color, make sure to also set an appropriate [text color]([[docsref:/utilities/colors#colors]]), so the labels remain readable and have sufficient contrast.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Success example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-success\" style=\"width: 25%\">25%\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Info example\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-info text-dark\" style=\"width: 50%\">50%\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Warning example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-warning text-dark\" style=\"width: 75%\">75%\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Danger example\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar bg-danger\" style=\"width: 100%\">100%\u003C/div>\n\u003C/div>`} />\n\nAlternatively, you can use the new combined [color and background]([[docsref:/helpers/color-background]]) helper classes.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Warning example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar text-bg-warning\" style=\"width: 75%\">75%\u003C/div>\n\u003C/div>`} />\n\n## Multiple bars\n\nYou can include multiple progress components inside a container with `.progress-stacked` to create a single stacked progress bar. Note that in this case, the styling to set the visual width of the progress bar *must* be applied to the `.progress` elements, rather than the `.progress-bar`s.\n\n\u003CExample code={`\u003Cdiv class=\"progress-stacked\">\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment one\" aria-valuenow=\"15\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 15%\">\n \u003Cdiv class=\"progress-bar\">\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment two\" aria-valuenow=\"30\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 30%\">\n \u003Cdiv class=\"progress-bar bg-success\">\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Segment three\" aria-valuenow=\"20\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 20%\">\n \u003Cdiv class=\"progress-bar bg-info\">\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Striped\n\nAdd `.progress-bar-striped` to any `.progress-bar` to apply a stripe via CSS gradient over the progress bar's background color.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Default striped example\" aria-valuenow=\"10\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped\" style=\"width: 10%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Success striped example\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped bg-success\" style=\"width: 25%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Info striped example\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped bg-info\" style=\"width: 50%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Warning striped example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped bg-warning\" style=\"width: 75%\">\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Danger striped example\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped bg-danger\" style=\"width: 100%\">\u003C/div>\n\u003C/div>`} />\n\n## Animated stripes\n\nThe striped gradient can also be animated. Add `.progress-bar-animated` to `.progress-bar` to animate the stripes right to left via CSS3 animations.\n\n\u003CExample code={`\u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Animated striped example\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n \u003Cdiv class=\"progress-bar progress-bar-striped progress-bar-animated\" style=\"width: 75%\">\u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, progress bars now use local CSS variables on `.progress` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"progress-css-vars\" file=\"scss/_progress.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"progress-variables\" file=\"scss/_variables.scss\" />\n\n### Keyframes\n\nUsed for creating the CSS animations for `.progress-bar-animated`. Included in `scss/_progress-bar.scss`.\n\n\u003CScssDocs name=\"progress-keyframes\" file=\"scss/_progress.scss\" />","src/content/docs/components/progress.mdx","8b5397342695d8b0","components/progress.mdx","components/popovers",{"id":515,"data":517,"body":520,"filePath":521,"digest":522,"legacyId":523,"deferredRender":139},{"description":518,"title":519,"toc":139},"Documentation and examples for adding Bootstrap popovers, like those found in iOS, to any element on your site.","Popovers","## Overview\n\nThings to know when using the popover plugin:\n\n- Popovers rely on the third party library [Popper](https://popper.js.org/docs/v2/) for positioning. You must include [popper.min.js]([[config:cdn.popper]]) before `bootstrap.js`, or use one `bootstrap.bundle.min.js` which contains Popper.\n- Popovers require the [popover plugin]([[docsref:/components/popovers]]) as a dependency.\n- Popovers are opt-in for performance reasons, so **you must initialize them yourself**.\n- Zero-length `title` and `content` values will never show a popover.\n- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc).\n- Triggering popovers on hidden elements will not work.\n- Popovers for `.disabled` or `disabled` elements must be triggered on a wrapper element.\n- When triggered from anchors that wrap across multiple lines, popovers will be centered between the anchors' overall width. Use `.text-nowrap` on your `\u003Ca>`s to avoid this behavior.\n- Popovers must be hidden before their corresponding elements have been removed from the DOM.\n- Popovers can be triggered thanks to an element inside a shadow DOM.\n\n\u003CCallout name=\"info-sanitizer\" />\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\nKeep reading to see how popovers work with some examples.\n\n## Examples\n\n### Enable popovers\n\nAs mentioned above, you must initialize popovers before they can be used. One way to initialize all popovers on a page would be to select them by their `data-bs-toggle` attribute, like so:\n\n```js\nconst popoverTriggerList = document.querySelectorAll('[data-bs-toggle=\"popover\"]')\nconst popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))\n```\n\n### Live demo\n\nWe use JavaScript similar to the snippet above to render the following live popover. Titles are set via `data-bs-title` and body content is set via `data-bs-content`.\n\n\u003CCallout name=\"warning-data-bs-title-vs-title\" type=\"warning\" />\n\n\u003CExample addStackblitzJs code={`\u003Cbutton type=\"button\" class=\"btn btn-lg btn-danger\" data-bs-toggle=\"popover\" data-bs-title=\"Popover title\" data-bs-content=\"And here's some amazing content. It's very engaging. Right?\">Click to toggle popover\u003C/button>`} />\n\n### Four directions\n\nFour options are available: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL. Set `data-bs-placement` to change the direction.\n\n\u003CExample addStackblitzJs code={`\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"top\" data-bs-content=\"Top popover\">\n Popover on top\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"right\" data-bs-content=\"Right popover\">\n Popover on right\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"bottom\" data-bs-content=\"Bottom popover\">\n Popover on bottom\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"left\" data-bs-content=\"Left popover\">\n Popover on left\n\u003C/button>`} />\n\n### Custom `container`\n\nWhen you have some styles on a parent element that interfere with a popover, you'll want to specify a custom `container` so that the popover's HTML appears within that element instead. This is common in responsive tables, input groups, and the like.\n\n```js\nconst popover = new bootstrap.Popover('.example-popover', {\n container: 'body'\n})\n```\n\nAnother situation where you'll want to set an explicit custom `container` are popovers inside a [modal dialog]([[docsref:/components/modal]]), to make sure that the popover itself is appended to the modal. This is particularly important for popovers that contain interactive elements – modal dialogs will trap focus, so unless the popover is a child element of the modal, users won't be able to focus or activate these interactive elements.\n\n```js\nconst popover = new bootstrap.Popover('.example-popover', {\n container: '.modal-body'\n})\n```\n\n### Custom popovers\n\n\u003CAddedIn version=\"5.2.0\" />\n\nYou can customize the appearance of popovers using [CSS variables](#variables). We set a custom class with `data-bs-custom-class=\"custom-popover\"` to scope our custom appearance and use it to override some of the local CSS variables.\n\n\u003CScssDocs name=\"custom-popovers\" file=\"site/src/scss/_component-examples.scss\" />\n\n\u003CExample addStackblitzJs class=\"custom-popover-demo\" code={`\u003Cbutton type=\"button\" class=\"btn btn-secondary\"\n data-bs-toggle=\"popover\" data-bs-placement=\"right\"\n data-bs-custom-class=\"custom-popover\"\n data-bs-title=\"Custom popover\"\n data-bs-content=\"This popover is themed via CSS variables.\">\n Custom popover\n\u003C/button>`} />\n\n### Dismiss on next click\n\nUse the `focus` trigger to dismiss popovers on the user's next click of an element other than the toggle element.\n\n\u003CCallout type=\"danger\">\n**Dismissing on next click requires specific HTML for proper cross-browser and cross-platform behavior.** You can only use `\u003Ca>` elements, not `\u003Cbutton>`s, and you must include a [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex).\n\u003C/Callout>\n\n\u003CExample addStackblitzJs code={`\u003Ca tabindex=\"0\" class=\"btn btn-lg btn-danger\" role=\"button\" data-bs-toggle=\"popover\" data-bs-trigger=\"focus\" data-bs-title=\"Dismissible popover\" data-bs-content=\"And here's some amazing content. It's very engaging. Right?\">Dismissible popover\u003C/a>`} />\n\n```js\nconst popover = new bootstrap.Popover('.popover-dismiss', {\n trigger: 'focus'\n})\n```\n\n### Disabled elements\n\nElements with the `disabled` attribute aren't interactive, meaning users cannot hover or click them to trigger a popover (or tooltip). As a workaround, you'll want to trigger the popover from a wrapper `\u003Cdiv>` or `\u003Cspan>`, ideally made keyboard-focusable using `tabindex=\"0\"`.\n\nFor disabled popover triggers, you may also prefer `data-bs-trigger=\"hover focus\"` so that the popover appears as immediate visual feedback to your users as they may not expect to _click_ on a disabled element.\n\n\u003CExample addStackblitzJs code={`\u003Cspan class=\"d-inline-block\" tabindex=\"0\" data-bs-toggle=\"popover\" data-bs-trigger=\"hover focus\" data-bs-content=\"Disabled popover\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>Disabled button\u003C/button>\n\u003C/span>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap’s evolving CSS variables approach, popovers now use local CSS variables on `.popover` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"popover-css-vars\" file=\"scss/_popover.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"popover-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\nEnable popovers via JavaScript:\n\n```js\nconst exampleEl = document.getElementById('example')\nconst popover = new bootstrap.Popover(exampleEl, options)\n```\n\n\u003CCallout type=\"warning\">\n**Keep popovers accessible to keyboard and assistive technology users** by only adding them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). While other HTML elements can be made focusable by adding `tabindex=\"0\"`, this can create annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce popovers in this situation. Additionally, do not rely solely on `hover` as the trigger for your popovers as this will make them impossible to trigger for keyboard users.\n\nAvoid adding an excessive amount of content in popovers with the `html` option. Once popovers are displayed, their content is tied to the trigger element with the `aria-describedby` attribute, causing all of the popover's content to be announced to assistive technology users as one long, uninterrupted stream.\n\nPopovers do not manage keyboard focus order, and their placement can be random in the DOM, so be careful when adding interactive elements (like forms or links), as it may lead to an illogical focus order or make the popover content itself completely unreachable for keyboard users. In cases where you must use these elements, consider using a modal dialog instead.\n\u003C/Callout>\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CCallout type=\"warning\">\nNote that for security reasons the `sanitize`, `sanitizeFn`, and `allowList` options cannot be supplied using data attributes.\n\u003C/Callout>\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `allowList` | object | [Default value]([[docsref:/getting-started/javascript#sanitizer]]) | Object which contains allowed attributes and tags. |\n| `animation` | boolean | `true` | Apply a CSS fade transition to the popover. |\n| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the popover (applies only to Popper's preventOverflow modifier). By default, it's `'clippingParents'` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). |\n| `container` | string, element, false | `false` | Appends the popover to a specific element. Example: `container: 'body'`. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize. |\n| `content` | string, element, function | `''` | The popover's text content. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. |\n| `customClass` | string, function | `''` | Add classes to the popover when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: `'class-1 class-2'`. You can also pass a function that should return a single string containing additional class names. |\n| `delay` | number, object | `0` | Delay showing and hiding the popover (ms)—doesn't apply to manual trigger type. If a number is supplied, delay is applied to both hide/show. Object structure is: `delay: { \"show\": 500, \"hide\": 100 }`. |\n| `fallbackPlacements` | string, array | `['top', 'right', 'bottom', 'left']` | Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to Popper's [behavior docs](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements). |\n| `html` | boolean | `false` | Allow HTML in the popover. If true, HTML tags in the popover's `title` will be rendered in the popover. If false, `innerText` property will be used to insert content into the DOM. Use text if you're worried about XSS attacks. |\n| `offset` | number, string, function | `[0, 8]` | Offset of the popover relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset=\"10,20\"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). |\n| `placement` | string, function | `'right'` | How to position the popover: auto, top, bottom, left, right. When `auto` is specified, it will dynamically reorient the popover. When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The `this` context is set to the popover instance. |\n| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper. |\n| `sanitize` | boolean | `true` | Enable or disable the sanitization. If activated `'template'`, `'content'` and `'title'` options will be sanitized. |\n| `sanitizeFn` | null, function | `null` | Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization. |\n| `selector` | string, false | `false` | If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to also apply popovers to dynamically added DOM elements (`jQuery.on` support). See [this issue]([[config:repo]]/issues/4215) and [an informative example](https://codepen.io/Johann-S/pen/djJYPb). **Note**: `title` attribute must not be used as a selector. |\n| `template` | string | `'\u003Cdiv class=\"popover\" role=\"tooltip\">\u003Cdiv class=\"popover-arrow\">\u003C/div>\u003Ch3 class=\"popover-header\">\u003C/h3>\u003Cdiv class=\"popover-body\">\u003C/div>\u003C/div>'` | Base HTML to use when creating the popover. The popover's `title` will be injected into the `.popover-header`. The popover's `content` will be injected into the `.popover-body`. `.popover-arrow` will become the popover's arrow. The outermost wrapper element should have the `.popover` class and `role=\"tooltip\"`. |\n| `title` | string, element, function | `''` | The popover title. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. |\n| `trigger` | string | `'click'` | How popover is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. `'manual'` indicates that the popover will be triggered programmatically via the `.popover('show')`, `.popover('hide')` and `.popover('toggle')` methods; this value cannot be combined with any other trigger. `'hover'` on its own will result in popovers that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present. |\n\u003C/BsTable>\n\n\u003CCallout>\n#### Data attributes for individual popovers\n\nOptions for individual popovers can alternatively be specified through the use of data attributes, as explained above.\n\u003C/Callout>\n\n#### Using function with `popperConfig`\n\n```js\nconst popover = new bootstrap.Popover(element, {\n popperConfig(defaultBsPopperConfig) {\n // const newPopperConfig = {...}\n // use defaultBsPopperConfig if needed...\n // return newPopperConfig\n }\n})\n```\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `disable` | Removes the ability for an element's popover to be shown. The popover will only be able to be shown if it is re-enabled. |\n| `dispose` | Hides and destroys an element's popover (Removes stored data on the DOM element). Popovers that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. |\n| `enable` | Gives an element's popover the ability to be shown. **Popovers are enabled by default.** |\n| `getInstance` | _Static_ method which allows you to get the popover instance associated with a DOM element. |\n| `getOrCreateInstance` | _Static_ method which allows you to get the popover instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `hide` | Hides an element's popover. **Returns to the caller before the popover has actually been hidden** (i.e. before the `hidden.bs.popover` event occurs). This is considered a \"manual\" triggering of the popover. |\n| `setContent` | Gives a way to change the popover's content after its initialization. |\n| `show` | Reveals an element's popover. **Returns to the caller before the popover has actually been shown** (i.e. before the `shown.bs.popover` event occurs). This is considered a \"manual\" triggering of the popover. Popovers whose title and content are both zero-length are never displayed. |\n| `toggle` | Toggles an element's popover. **Returns to the caller before the popover has actually been shown or hidden** (i.e. before the `shown.bs.popover` or `hidden.bs.popover` event occurs). This is considered a \"manual\" triggering of the popover. |\n| `toggleEnabled` | Toggles the ability for an element's popover to be shown or hidden. |\n| `update` | Updates the position of an element's popover. |\n\u003C/BsTable>\n\n\n```js\n// getOrCreateInstance example\nconst popover = bootstrap.Popover.getOrCreateInstance('#example') // Returns a Bootstrap popover instance\n\n// setContent example\npopover.setContent({\n '.popover-header': 'another title',\n '.popover-body': 'another content'\n})\n\n```\n\n\u003CCallout>\nThe `setContent` method accepts an `object` argument, where each property-key is a valid `string` selector within the popover template, and each related property-value can be `string` | `element` | `function` | `null`\n\u003C/Callout>\n\n### Events\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `hide.bs.popover` | This event is fired immediately when the `hide` instance method has been called. |\n| `hidden.bs.popover` | This event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete). |\n| `inserted.bs.popover` | This event is fired after the `show.bs.popover` event when the popover template has been added to the DOM. |\n| `show.bs.popover` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.popover` | This event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete). |\n\u003C/BsTable>\n\n```js\nconst myPopoverTrigger = document.getElementById('myPopover')\nmyPopoverTrigger.addEventListener('hidden.bs.popover', () => {\n // do something...\n})\n```","src/content/docs/components/popovers.mdx","9a35f5b7a8d0c3f1","components/popovers.mdx","components/scrollspy",{"id":524,"data":526,"body":529,"filePath":530,"digest":531,"legacyId":532,"deferredRender":139},{"description":527,"title":528,"toc":139},"Automatically update Bootstrap navigation or list group components based on scroll position to indicate which link is currently active in the viewport.","Scrollspy","## How it works\n\nScrollspy toggles the `.active` class on anchor (`\u003Ca>`) elements when the element with the `id` referenced by the anchor's `href` is scrolled into view. Scrollspy is best used in conjunction with a Bootstrap [nav component]([[docsref:/components/navs-tabs]]) or [list group]([[docsref:/components/list-group]]), but it will also work with any anchor elements in the current page. Here's how it works.\n\n- To start, scrollspy requires two things: a navigation, list group, or a simple set of links, plus a scrollable container. The scrollable container can be the `\u003Cbody>` or a custom element with a set `height` and `overflow-y: scroll`.\n\n- On the scrollable container, add `data-bs-spy=\"scroll\"` and `data-bs-target=\"#navId\"` where `navId` is the unique `id` of the associated navigation. If there is no focusable element inside the element, be sure to also include a `tabindex=\"0\"` to ensure keyboard access.\n\n- As you scroll the \"spied\" container, an `.active` class is added and removed from anchor links within the associated navigation. Links must have resolvable `id` targets, otherwise they're ignored. For example, a `\u003Ca href=\"#home\">home\u003C/a>` must correspond to something in the DOM like `\u003Cdiv id=\"home\">\u003C/div>`\n\n- Target elements that are not visible will be ignored. See the [Non-visible elements](#non-visible-elements) section below.\n\n## Examples\n\n### Navbar\n\nScroll the area below the navbar and watch the active class change. Open the dropdown menu and watch the dropdown items be highlighted as well.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cnav id=\"navbar-example2\" class=\"navbar bg-body-tertiary px-3 mb-3 rounded-2\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cul class=\"nav nav-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#scrollspyHeading1\">First\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#scrollspyHeading2\">Second\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">Dropdown\u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading3\">Third\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading4\">Fourth\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\"/>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading5\">Fifth\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n \u003C/nav>\n \u003Cdiv class=\"scrollspy-example bg-body-tertiary p-3 rounded-2\" data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example2\" data-bs-root-margin=\"0px 0px -40%\" data-bs-smooth-scroll=\"true\" tabindex=\"0\">\n \u003Ch4 id=\"scrollspyHeading1\">First heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"scrollspyHeading2\">Second heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"scrollspyHeading3\">Third heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"scrollspyHeading4\">Fourth heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"scrollspyHeading5\">Fifth heading\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cnav id=\"navbar-example2\" class=\"navbar bg-body-tertiary px-3 mb-3\">\n \u003Ca class=\"navbar-brand\" href=\"#\">Navbar\u003C/a>\n \u003Cul class=\"nav nav-pills\">\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#scrollspyHeading1\">First\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item\">\n \u003Ca class=\"nav-link\" href=\"#scrollspyHeading2\">Second\u003C/a>\n \u003C/li>\n \u003Cli class=\"nav-item dropdown\">\n \u003Ca class=\"nav-link dropdown-toggle\" data-bs-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">Dropdown\u003C/a>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading3\">Third\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading4\">Fourth\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\" />\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#scrollspyHeading5\">Fifth\u003C/a>\u003C/li>\n \u003C/ul>\n \u003C/li>\n \u003C/ul>\n\u003C/nav>\n\u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example2\" data-bs-root-margin=\"0px 0px -40%\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example bg-body-tertiary p-3 rounded-2\" tabindex=\"0\">\n \u003Ch4 id=\"scrollspyHeading1\">First heading\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"scrollspyHeading2\">Second heading\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"scrollspyHeading3\">Third heading\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"scrollspyHeading4\">Fourth heading\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"scrollspyHeading5\">Fifth heading\u003C/h4>\n \u003Cp>...\u003C/p>\n\u003C/div>\n```\n\n### Nested nav\n\nScrollspy also works with nested `.nav`s. If a nested `.nav` is `.active`, its parents will also be `.active`. Scroll the area next to the navbar and watch the active class change.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cnav id=\"navbar-example3\" class=\"h-100 flex-column align-items-stretch pe-4 border-end\">\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link\" href=\"#item-1\">Item 1\u003C/a>\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-1-1\">Item 1-1\u003C/a>\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-1-2\">Item 1-2\u003C/a>\n \u003C/nav>\n \u003Ca class=\"nav-link\" href=\"#item-2\">Item 2\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#item-3\">Item 3\u003C/a>\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-3-1\">Item 3-1\u003C/a>\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-3-2\">Item 3-2\u003C/a>\n \u003C/nav>\n \u003C/nav>\n \u003C/nav>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example3\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example-2\" tabindex=\"0\">\n \u003Cdiv id=\"item-1\">\n \u003Ch4>Item 1\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-1-1\">\n \u003Ch5>Item 1-1\u003C/h5>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-1-2\">\n \u003Ch5>Item 1-2\u003C/h5>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-2\">\n \u003Ch4>Item 2\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3\">\n \u003Ch4>Item 3\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3-1\">\n \u003Ch5>Item 3-1\u003C/h5>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3-2\">\n \u003Ch5>Item 3-2\u003C/h5>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Cp>Keep in mind that the JavaScript plugin tries to pick the right element among all that may be visible. Multiple visible scrollspy targets at the same time may cause some issues.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cnav id=\"navbar-example3\" class=\"h-100 flex-column align-items-stretch pe-4 border-end\">\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link\" href=\"#item-1\">Item 1\u003C/a>\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-1-1\">Item 1-1\u003C/a>\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-1-2\">Item 1-2\u003C/a>\n \u003C/nav>\n \u003Ca class=\"nav-link\" href=\"#item-2\">Item 2\u003C/a>\n \u003Ca class=\"nav-link\" href=\"#item-3\">Item 3\u003C/a>\n \u003Cnav class=\"nav nav-pills flex-column\">\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-3-1\">Item 3-1\u003C/a>\n \u003Ca class=\"nav-link ms-3 my-1\" href=\"#item-3-2\">Item 3-2\u003C/a>\n \u003C/nav>\n \u003C/nav>\n \u003C/nav>\n \u003C/div>\n\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example3\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example-2\" tabindex=\"0\">\n \u003Cdiv id=\"item-1\">\n \u003Ch4>Item 1\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-1-1\">\n \u003Ch5>Item 1-1\u003C/h5>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-1-2\">\n \u003Ch5>Item 1-2\u003C/h5>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-2\">\n \u003Ch4>Item 2\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3\">\n \u003Ch4>Item 3\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3-1\">\n \u003Ch5>Item 3-1\u003C/h5>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003Cdiv id=\"item-3-2\">\n \u003Ch5>Item 3-2\u003C/h5>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### List group\n\nScrollspy also works with `.list-group`s. Scroll the area next to the list group and watch the active class change.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv id=\"list-example\" class=\"list-group\">\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-1\">Item 1\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-2\">Item 2\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-3\">Item 3\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-4\">Item 4\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#list-example\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example\" tabindex=\"0\">\n \u003Ch4 id=\"list-item-1\">Item 1\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"list-item-2\">Item 2\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"list-item-3\">Item 3\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"list-item-4\">Item 4\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv id=\"list-example\" class=\"list-group\">\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-1\">Item 1\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-2\">Item 2\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-3\">Item 3\u003C/a>\n \u003Ca class=\"list-group-item list-group-item-action\" href=\"#list-item-4\">Item 4\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#list-example\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example\" tabindex=\"0\">\n \u003Ch4 id=\"list-item-1\">Item 1\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"list-item-2\">Item 2\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"list-item-3\">Item 3\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"list-item-4\">Item 4\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n### Simple anchors\n\nScrollspy is not limited to nav components and list groups, so it will work on any `\u003Ca>` anchor elements in the current document. Scroll the area and watch the `.active` class change.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv id=\"simple-list-example\" class=\"d-flex flex-column gap-2 simple-list-example-scrollspy text-center\">\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-1\">Item 1\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-2\">Item 2\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-3\">Item 3\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-4\">Item 4\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-5\">Item 5\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#simple-list-example\" data-bs-offset=\"0\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example\" tabindex=\"0\">\n \u003Ch4 id=\"simple-list-item-1\">Item 1\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"simple-list-item-2\">Item 2\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"simple-list-item-3\">Item 3\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"simple-list-item-4\">Item 4\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003Ch4 id=\"simple-list-item-5\">Item 5\u003C/h4>\n \u003Cp>This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.\u003C/p>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-4\">\n \u003Cdiv id=\"simple-list-example\" class=\"d-flex flex-column gap-2 simple-list-example-scrollspy text-center\">\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-1\">Item 1\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-2\">Item 2\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-3\">Item 3\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-4\">Item 4\u003C/a>\n \u003Ca class=\"p-1 rounded\" href=\"#simple-list-item-5\">Item 5\u003C/a>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-8\">\n \u003Cdiv data-bs-spy=\"scroll\" data-bs-target=\"#simple-list-example\" data-bs-offset=\"0\" data-bs-smooth-scroll=\"true\" class=\"scrollspy-example\" tabindex=\"0\">\n \u003Ch4 id=\"simple-list-item-1\">Item 1\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"simple-list-item-2\">Item 2\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"simple-list-item-3\">Item 3\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"simple-list-item-4\">Item 4\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003Ch4 id=\"simple-list-item-5\">Item 5\u003C/h4>\n \u003Cp>...\u003C/p>\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\n## Non-visible elements\n\nTarget elements that aren’t visible will be ignored and their corresponding nav items won't receive an `.active` class. Scrollspy instances initialized in a non-visible wrapper will ignore all target elements. Use the `refresh` method to check for observable elements once the wrapper becomes visible.\n\n```js\ndocument.querySelectorAll('#nav-tab>[data-bs-toggle=\"tab\"]').forEach(el => {\n el.addEventListener('shown.bs.tab', () => {\n const target = el.getAttribute('data-bs-target')\n const scrollElem = document.querySelector(`${target} [data-bs-spy=\"scroll\"]`)\n bootstrap.ScrollSpy.getOrCreateInstance(scrollElem).refresh()\n })\n})\n```\n\n## Usage\n\n### Via data attributes\n\nTo easily add scrollspy behavior to your topbar navigation, add `data-bs-spy=\"scroll\"` to the element you want to spy on (most typically this would be the `\u003Cbody>`). Then add the `data-bs-target` attribute with the `id` or class name of the parent element of any Bootstrap `.nav` component.\n\n```html\n\u003Cbody data-bs-spy=\"scroll\" data-bs-target=\"#navbar-example\">\n ...\n \u003Cdiv id=\"navbar-example\">\n \u003Cul class=\"nav nav-tabs\" role=\"tablist\">\n ...\n \u003C/ul>\n \u003C/div>\n ...\n\u003C/body>\n```\n\n### Via JavaScript\n\n```js\nconst scrollSpy = new bootstrap.ScrollSpy(document.body, {\n target: '#navbar-example'\n})\n```\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `rootMargin` | string | `0px 0px -25%` | Intersection Observer [rootMargin](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/rootMargin) valid units, when calculating scroll position. |\n| `smoothScroll` | boolean | `false` | Enables smooth scrolling when a user clicks on a link that refers to ScrollSpy observables. |\n| `target` | string, DOM element | `null` | Specifies element to apply Scrollspy plugin. |\n| `threshold` | array | `[0.1, 0.5, 1]` | `IntersectionObserver` [threshold](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#threshold) valid input, when calculating scroll position. |\n\n\u003C/BsTable>\n\n\u003CCallout type=\"warning\">\n**Deprecated Options**\n\nUp until v5.1.3 we were using `offset` & `method` options, which are now deprecated and replaced by `rootMargin`.\nTo keep backwards compatibility, we will continue to parse a given `offset` to `rootMargin`, but this feature will be removed in **v6**.\n\u003C/Callout>\n\n### Methods\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's scrollspy. (Removes stored data on the DOM element) |\n| `getInstance` | *Static* method to get the scrollspy instance associated with a DOM element. |\n| `getOrCreateInstance` | *Static* method to get the scrollspy instance associated with a DOM element, or to create a new one in case it wasn't initialized. |\n| `refresh` | When adding or removing elements in the DOM, you'll need to call the refresh method. |\n\u003C/BsTable>\n\nHere's an example using the refresh method:\n\n```js\nconst dataSpyList = document.querySelectorAll('[data-bs-spy=\"scroll\"]')\ndataSpyList.forEach(dataSpyEl => {\n bootstrap.ScrollSpy.getInstance(dataSpyEl).refresh()\n})\n```\n\n### Events\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `activate.bs.scrollspy` | This event fires on the scroll element whenever an anchor is activated by the scrollspy. |\n\u003C/BsTable>\n\n```js\nconst firstScrollSpyEl = document.querySelector('[data-bs-spy=\"scroll\"]')\nfirstScrollSpyEl.addEventListener('activate.bs.scrollspy', () => {\n // do something...\n})\n```","src/content/docs/components/scrollspy.mdx","877b13ef84739927","components/scrollspy.mdx","components/spinners",{"id":533,"data":535,"body":538,"filePath":539,"digest":540,"legacyId":541,"deferredRender":139},{"description":536,"title":537,"toc":139},"Indicate the loading state of a component or page with Bootstrap spinners, built entirely with HTML, CSS, and no JavaScript.","Spinners","import { getData } from '@libs/data'\n\n## About\n\nBootstrap \"spinners\" can be used to show the loading state in your projects. They're built only with HTML and CSS, meaning you don't need any JavaScript to create them. You will, however, need some custom JavaScript to toggle their visibility. Their appearance, alignment, and sizing can be easily customized with our amazing utility classes.\n\nFor accessibility purposes, each loader here includes `role=\"status\"` and a nested `\u003Cspan class=\"visually-hidden\">Loading...\u003C/span>`.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Border spinner\n\nUse the border spinners for a lightweight loading indicator.\n\n\u003CExample code={`\u003Cdiv class=\"spinner-border\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\n### Colors\n\nThe border spinner uses `currentColor` for its `border-color`, meaning you can customize the color with [text color utilities][color]. You can use any of our text color utilities on the standard spinner.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"spinner-border text-${themeColor.name}\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`)} />\n\n\u003CCallout>\n**Why not use `border-color` utilities?** Each border spinner specifies a `transparent` border for at least one side, so `.border-{color}` utilities would override that.\n\u003C/Callout>\n\n## Growing spinner\n\nIf you don't fancy a border spinner, switch to the grow spinner. While it doesn't technically spin, it does repeatedly grow!\n\n\u003CExample code={`\u003Cdiv class=\"spinner-grow\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\nOnce again, this spinner is built with `currentColor`, so you can easily change its appearance with [text color utilities][color]. Here it is in blue, along with the supported variants.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"spinner-grow text-${themeColor.name}\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`)} />\n\n## Alignment\n\nSpinners in Bootstrap are built with `rem`s, `currentColor`, and `display: inline-flex`. This means they can easily be resized, recolored, and quickly aligned.\n\n### Margin\n\nUse [margin utilities][margin] like `.m-5` for easy spacing.\n\n\u003CExample code={`\u003Cdiv class=\"spinner-border m-5\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\n### Placement\n\nUse [flexbox utilities][flex], [float utilities][float], or [text alignment][text] utilities to place spinners exactly where you need them in any situation.\n\n#### Flex\n\n\u003CExample code={`\u003Cdiv class=\"d-flex justify-content-center\">\n \u003Cdiv class=\"spinner-border\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"d-flex align-items-center\">\n \u003Cstrong role=\"status\">Loading...\u003C/strong>\n \u003Cdiv class=\"spinner-border ms-auto\" aria-hidden=\"true\">\u003C/div>\n\u003C/div>`} />\n\n#### Floats\n\n\u003CExample code={`\u003Cdiv class=\"clearfix\">\n \u003Cdiv class=\"spinner-border float-end\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n \u003C/div>\n\u003C/div>`} />\n\n#### Text align\n\n\u003CExample code={`\u003Cdiv class=\"text-center\">\n \u003Cdiv class=\"spinner-border\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n \u003C/div>\n\u003C/div>`} />\n\n## Size\n\nAdd `.spinner-border-sm` and `.spinner-grow-sm` to make a smaller spinner that can quickly be used within other components.\n\n\u003CExample code={`\u003Cdiv class=\"spinner-border spinner-border-sm\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>\n\u003Cdiv class=\"spinner-grow spinner-grow-sm\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\nOr, use custom CSS or inline styles to change the dimensions as needed.\n\n\u003CExample code={`\u003Cdiv class=\"spinner-border\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>\n\u003Cdiv class=\"spinner-grow\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\n \u003Cspan class=\"visually-hidden\">Loading...\u003C/span>\n\u003C/div>`} />\n\n## Buttons\n\nUse spinners within buttons to indicate an action is currently processing or taking place. You may also swap the text out of the spinner element and utilize button text as needed.\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>\n \u003Cspan class=\"spinner-border spinner-border-sm\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\" role=\"status\">Loading...\u003C/span>\n\u003C/button>\n\u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>\n \u003Cspan class=\"spinner-border spinner-border-sm\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan role=\"status\">Loading...\u003C/span>\n\u003C/button>`} />\n\n\u003CExample code={`\u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>\n \u003Cspan class=\"spinner-grow spinner-grow-sm\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan class=\"visually-hidden\" role=\"status\">Loading...\u003C/span>\n\u003C/button>\n\u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>\n \u003Cspan class=\"spinner-grow spinner-grow-sm\" aria-hidden=\"true\">\u003C/span>\n \u003Cspan role=\"status\">Loading...\u003C/span>\n\u003C/button>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, spinners now use local CSS variables on `.spinner-border` and `.spinner-grow` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\nBorder spinner variables:\n\n\u003CScssDocs name=\"spinner-border-css-vars\" file=\"scss/_spinners.scss\" />\n\nGrowing spinner variables:\n\n\u003CScssDocs name=\"spinner-grow-css-vars\" file=\"scss/_spinners.scss\" />\n\nFor both spinners, small spinner modifier classes are used to update the values of these CSS variables as needed. For example, the `.spinner-border-sm` class does the following:\n\n\u003CScssDocs name=\"spinner-border-sm-css-vars\" file=\"scss/_spinners.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"spinner-variables\" file=\"scss/_variables.scss\" />\n\n### Keyframes\n\nUsed for creating the CSS animations for our spinners. Included in `scss/_spinners.scss`.\n\n\u003CScssDocs name=\"spinner-border-keyframes\" file=\"scss/_spinners.scss\" />\n\n\u003CScssDocs name=\"spinner-grow-keyframes\" file=\"scss/_spinners.scss\" />\n\n\n[color]: [[docsref:/utilities/colors]]\n[flex]: [[docsref:/utilities/flex]]\n[float]: [[docsref:/utilities/float]]\n[margin]: [[docsref:/utilities/spacing]]\n[text]: [[docsref:/utilities/text]]","src/content/docs/components/spinners.mdx","7df24573207db855","components/spinners.mdx","extend/icons",{"id":542,"data":544,"body":547,"filePath":548,"digest":549,"legacyId":550,"deferredRender":139},{"description":545,"title":546},"Guidance and suggestions for using external icon libraries with Bootstrap.","Icons","import { getData } from '@libs/data'\n\nWhile Bootstrap doesn't include an icon set by default, we do have our own comprehensive icon library called Bootstrap Icons. Feel free to use them or any other icon set in your project. We've included details for Bootstrap Icons and other preferred icon sets below.\n\nWhile most icon sets include multiple file formats, we prefer SVG implementations for their improved accessibility and vector support.\n\n## Bootstrap Icons\n\nBootstrap Icons is a growing library of SVG icons that are designed by [@mdo](https://github.com/mdo) and maintained by [the Bootstrap Team](https://github.com/orgs/twbs/people). The beginnings of this icon set come from Bootstrap's very own components—our forms, carousels, and more. Bootstrap has very few icon needs out of the box, so we didn't need much. However, once we got going, we couldn't stop making more.\n\nOh, and did we mention they're completely open source? Licensed under MIT, just like Bootstrap, our icon set is available to everyone.\n\n[Learn more about Bootstrap Icons]([[config:icons]]), including how to install them and recommended usage.\n\n## Alternatives\n\nWe've tested and used these icon sets ourselves as preferred alternatives to Bootstrap Icons.\n\n\u003Cul>\n{getData('icons').preferred.map((icon) => {\n return (\n \u003Cli>\u003Ca href={icon.website}>{icon.name}\u003C/a>\u003C/li>\n )\n})}\n\u003C/ul>\n\n## More options\n\nWhile we haven't tried these out ourselves, they do look promising and provide multiple formats, including SVG.\n\n\u003Cul>\n{getData('icons').more.map((icon) => {\n return (\n \u003Cli>\u003Ca href={icon.website}>{icon.name}\u003C/a>\u003C/li>\n )\n})}\n\u003C/ul>","src/content/docs/extend/icons.mdx","767ee09ffbfbad65","extend/icons.mdx","components/toasts",{"id":551,"data":553,"body":556,"filePath":557,"digest":558,"legacyId":559,"deferredRender":139},{"description":554,"title":555,"toc":139},"Push notifications to your visitors with a toast, a lightweight and easily customizable alert message.","Toasts","Toasts are lightweight notifications designed to mimic the push notifications that have been popularized by mobile and desktop operating systems. They're built with flexbox, so they're easy to align and position.\n\n## Overview\n\nThings to know when using the toast plugin:\n\n- Toasts are opt-in for performance reasons, so **you must initialize them yourself**.\n- Toasts will automatically hide if you do not specify `autohide: false`.\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Examples\n\n### Basic\n\nTo encourage extensible and predictable toasts, we recommend a header and body. Toast headers use `display: flex`, allowing easy alignment of content thanks to our margin and flexbox utilities.\n\nToasts are as flexible as you need and have very little required markup. At a minimum, we require a single element to contain your \"toasted\" content and strongly encourage a dismiss button.\n\n\u003CExample code={`\u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n\u003C/div>`} />\n\n\u003CCallout type=\"warning\">\nPreviously, our scripts dynamically added the `.hide` class to completely hide a toast (with `display:none`, rather than just with `opacity:0`). This is now not necessary anymore. However, for backwards compatibility, our script will continue to toggle the class (even though there is no practical need for it) until the next major version.\n\u003C/Callout>\n\n### Live example\n\nClick the button below to show a toast (positioned with our utilities in the lower right corner) that has been hidden by default.\n\n\u003Cdiv class=\"toast-container position-fixed bottom-0 end-0 p-3\">\n \u003Cdiv id=\"liveToast\" class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"bd-example\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary\" id=\"liveToastBtn\">Show live toast\u003C/button>\n\u003C/div>\n\n```html\n\u003Cbutton type=\"button\" class=\"btn btn-primary\" id=\"liveToastBtn\">Show live toast\u003C/button>\n\n\u003Cdiv class=\"toast-container position-fixed bottom-0 end-0 p-3\">\n \u003Cdiv id=\"liveToast\" class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003Cimg src=\"...\" class=\"rounded me-2\" alt=\"...\">\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003C/div>\n\u003C/div>\n```\n\nWe use the following JavaScript to trigger our live toast demo:\n\n\u003CJsDocs name=\"live-toast\" file=\"site/src/assets/partials/snippets.js\" />\n\n### Translucent\n\nToasts are slightly translucent to blend in with what's below them.\n\n\u003CExample class=\"bg-dark\" code={`\u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n\u003C/div>`} />\n\n### Stacking\n\nYou can stack toasts by wrapping them in a toast container, which will vertically add some spacing.\n\n\u003CExample code={`\u003Cdiv class=\"toast-container position-static\">\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">just now\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n See? Just like this.\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">2 seconds ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Heads up, toasts will stack automatically\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Custom content\n\nCustomize your toasts by removing sub-components, tweaking them with [utilities]([[docsref:/utilities/api]]), or by adding your own markup. Here we've created a simpler toast by removing the default `.toast-header`, adding a custom hide icon from [Bootstrap Icons]([[config:icons]]), and using some [flexbox utilities]([[docsref:/utilities/flex]]) to adjust the layout.\n\n\u003CExample code={`\u003Cdiv class=\"toast align-items-center\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003Cbutton type=\"button\" class=\"btn-close me-2 m-auto\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n\u003C/div>`} />\n\nAlternatively, you can also add additional controls and components to toasts.\n\n\u003CExample code={`\u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003Cdiv class=\"mt-2 pt-2 border-top\">\n \u003Cbutton type=\"button\" class=\"btn btn-primary btn-sm\">Take action\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary btn-sm\" data-bs-dismiss=\"toast\">Close\u003C/button>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Color schemes\n\nBuilding on the above example, you can create different toast color schemes with our [color]([[docsref:/utilities/colors]]) and [background]([[docsref:/utilities/background]]) utilities. Here we've added `.text-bg-primary` to the `.toast`, and then added `.btn-close-white` to our close button. For a crisp edge, we remove the default border with `.border-0`.\n\n\u003CExample code={`\u003Cdiv class=\"toast align-items-center text-bg-primary border-0\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003Cbutton type=\"button\" class=\"btn-close btn-close-white me-2 m-auto\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n\u003C/div>`} />\n\n## Placement\n\nPlace toasts with custom CSS as you need them. The top right is often used for notifications, as is the top middle. If you're only ever going to show one toast at a time, put the positioning styles right on the `.toast`.\n\n\u003CExample addStackblitzJs code={`\u003Cform>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"selectToastPlacement\">Toast placement\u003C/label>\n \u003Cselect class=\"form-select mt-2\" id=\"selectToastPlacement\">\n \u003Coption value=\"\" selected>Select a position...\u003C/option>\n \u003Coption value=\"top-0 start-0\">Top left\u003C/option>\n \u003Coption value=\"top-0 start-50 translate-middle-x\">Top center\u003C/option>\n \u003Coption value=\"top-0 end-0\">Top right\u003C/option>\n \u003Coption value=\"top-50 start-0 translate-middle-y\">Middle left\u003C/option>\n \u003Coption value=\"top-50 start-50 translate-middle\">Middle center\u003C/option>\n \u003Coption value=\"top-50 end-0 translate-middle-y\">Middle right\u003C/option>\n \u003Coption value=\"bottom-0 start-0\">Bottom left\u003C/option>\n \u003Coption value=\"bottom-0 start-50 translate-middle-x\">Bottom center\u003C/option>\n \u003Coption value=\"bottom-0 end-0\">Bottom right\u003C/option>\n \u003C/select>\n \u003C/div>\n\u003C/form>\n\u003Cdiv aria-live=\"polite\" aria-atomic=\"true\" class=\"bg-body-secondary position-relative bd-example-toasts rounded-3\">\n \u003Cdiv class=\"toast-container p-3\" id=\"toastPlacement\">\n \u003Cdiv class=\"toast\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nFor systems that generate more notifications, consider using a wrapping element so they can easily stack.\n\n\u003CExample class=\"bd-example-toasts p-0\" code={`\u003Cdiv aria-live=\"polite\" aria-atomic=\"true\" class=\"position-relative\">\n \u003C!-- Position it: -->\n \u003C!-- - \\`.toast-container\\` for spacing between toasts -->\n \u003C!-- - \\`top-0\\` & \\`end-0\\` to position the toasts in the upper right corner -->\n \u003C!-- - \\`.p-3\\` to prevent the toasts from sticking to the edge of the container -->\n \u003Cdiv class=\"toast-container top-0 end-0 p-3\">\n\n \u003C!-- Then put toasts within -->\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">just now\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n See? Just like this.\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall class=\"text-body-secondary\">2 seconds ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Heads up, toasts will stack automatically\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nYou can also get fancy with flexbox utilities to align toasts horizontally and/or vertically.\n\n\u003CExample class=\"bd-example-toasts d-flex\" code={`\u003C!-- Flexbox container for aligning the toasts -->\n\u003Cdiv aria-live=\"polite\" aria-atomic=\"true\" class=\"d-flex justify-content-center align-items-center w-100\">\n\n \u003C!-- Then put toasts within -->\n \u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Accessibility\n\nToasts are intended to be small interruptions to your visitors or users, so to help those with screen readers and similar assistive technologies, you should wrap your toasts in an [`aria-live` region](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions). Changes to live regions (such as injecting/updating a toast component) are automatically announced by screen readers without needing to move the user's focus or otherwise interrupt the user. Additionally, include `aria-atomic=\"true\"` to ensure that the entire toast is always announced as a single (atomic) unit, rather than just announcing what was changed (which could lead to problems if you only update part of the toast's content, or if displaying the same toast content at a later point in time). If the information needed is important for the process, e.g. for a list of errors in a form, then use the [alert component]([[docsref:/components/alerts]]) instead of toast.\n\nNote that the live region needs to be present in the markup *before* the toast is generated or updated. If you dynamically generate both at the same time and inject them into the page, they will generally not be announced by assistive technologies.\n\nYou also need to adapt the `role` and `aria-live` level depending on the content. If it's an important message like an error, use `role=\"alert\" aria-live=\"assertive\"`, otherwise use `role=\"status\" aria-live=\"polite\"` attributes.\n\nAs the content you're displaying changes, be sure to update the [`delay` timeout](#options) so that users have enough time to read the toast.\n\n```html\n\u003Cdiv class=\"toast\" role=\"alert\" aria-live=\"polite\" aria-atomic=\"true\" data-bs-delay=\"10000\">\n \u003Cdiv role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">...\u003C/div>\n\u003C/div>\n```\n\nWhen using `autohide: false`, you must add a close button to allow users to dismiss the toast.\n\n\u003CExample code={`\u003Cdiv role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\" data-bs-autohide=\"false\">\n \u003Cdiv class=\"toast-header\">\n \u003CPlaceholder width=\"20\" height=\"20\" background=\"#007aff\" class=\"rounded me-2\" text={false} title={false} />\n \u003Cstrong class=\"me-auto\">Bootstrap\u003C/strong>\n \u003Csmall>11 mins ago\u003C/small>\n \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\u003C/button>\n \u003C/div>\n \u003Cdiv class=\"toast-body\">\n Hello, world! This is a toast message.\n \u003C/div>\n\u003C/div>`} />\n\nWhile technically it's possible to add focusable/actionable controls (such as additional buttons or links) in your toast, you should avoid doing this for autohiding toasts. Even if you give the toast a long [`delay` timeout](#options), keyboard and assistive technology users may find it difficult to reach the toast in time to take action (since toasts don't receive focus when they are displayed). If you absolutely must have further controls, we recommend using a toast with `autohide: false`.\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap's evolving CSS variables approach, toasts now use local CSS variables on `.toast` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"toast-css-vars\" file=\"scss/_toasts.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"toast-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\nInitialize toasts via JavaScript:\n\n```js\nconst toastElList = document.querySelectorAll('.toast')\nconst toastList = [...toastElList].map(toastEl => new bootstrap.Toast(toastEl, option))\n```\n\n### Triggers\n\n\u003CJsDismiss name=\"toast\" />\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `animation` | boolean | `true` | Apply a CSS fade transition to the toast. |\n| `autohide` | boolean | `true` | Automatically hide the toast after the delay. |\n| `delay` | number | `5000` | Delay in milliseconds before hiding the toast. |\n\u003C/BsTable>\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `dispose` | Hides an element's toast. Your toast will remain on the DOM but won't show anymore. |\n| `getInstance` | *Static* method which allows you to get the toast instance associated with a DOM element. \u003Cbr/> For example: `const myToastEl = document.getElementById('myToastEl')` `const myToast = bootstrap.Toast.getInstance(myToastEl)` Returns a Bootstrap toast instance. |\n| `getOrCreateInstance` | *Static* method which allows you to get the toast instance associated with a DOM element, or create a new one, in case it wasn't initialized. \u003Cbr/>`const myToastEl = document.getElementById('myToastEl')` `const myToast = bootstrap.Toast.getOrCreateInstance(myToastEl)` Returns a Bootstrap toast instance. |\n| `hide` | Hides an element's toast. **Returns to the caller before the toast has actually been hidden** (i.e. before the `hidden.bs.toast` event occurs). You have to manually call this method if you made `autohide` to `false`. |\n| `isShown` | Returns a boolean according to toast's visibility state. |\n| `show` | Reveals an element's toast. **Returns to the caller before the toast has actually been shown** (i.e. before the `shown.bs.toast` event occurs). You have to manually call this method, instead your toast won't show. |\n\u003C/BsTable>\n\n### Events\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `hide.bs.toast` | This event is fired immediately when the `hide` instance method has been called. |\n| `hidden.bs.toast` | This event is fired when the toast has finished being hidden from the user. |\n| `show.bs.toast` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.toast` | This event is fired when the toast has been made visible to the user. |\n\u003C/BsTable>\n\n```js\nconst myToastEl = document.getElementById('myToast')\nmyToastEl.addEventListener('hidden.bs.toast', () => {\n // do something...\n})\n```","src/content/docs/components/toasts.mdx","9479ecac22525e1c","components/toasts.mdx","extend/approach",{"id":560,"data":562,"body":567,"filePath":568,"digest":569,"legacyId":570,"deferredRender":139},{"aliases":563,"description":565,"title":566},[564],"/docs/[[config:docs_version]]/extend/","Learn about the guiding principles, strategies, and techniques used to build and maintain Bootstrap so you can more easily customize and extend it yourself.","Approach","While the getting started pages provide an introductory tour of the project and what it offers, this document focuses on _why_ we do the things we do in Bootstrap. It explains our philosophy to building on the web so that others can learn from us, contribute with us, and help us improve.\n\nSee something that doesn't sound right, or perhaps could be done better? [Open an issue]([[config:repo]]/issues/new/choose)—we'd love to discuss it with you.\n\n## Summary\n\nWe'll dive into each of these more throughout, but at a high level, here's what guides our approach.\n\n- Components should be responsive and mobile-first\n- Components should be built with a base class and extended via modifier classes\n- Component states should obey a common z-index scale\n- Whenever possible, prefer an HTML and CSS implementation over JavaScript\n- Whenever possible, use utilities over custom styles\n- Whenever possible, avoid enforcing strict HTML requirements (children selectors)\n\n## Responsive\n\nBootstrap's responsive styles are built to be responsive, an approach that's often referred to as _mobile-first_. We use this term in our docs and largely agree with it, but at times it can be too broad. While not every component _must_ be entirely responsive in Bootstrap, this responsive approach is about reducing CSS overrides by pushing you to add styles as the viewport becomes larger.\n\nAcross Bootstrap, you'll see this most clearly in our media queries. In most cases, we use `min-width` queries that begin to apply at a specific breakpoint and carry up through the higher breakpoints. For example, a `.d-none` applies from `min-width: 0` to infinity. On the other hand, a `.d-md-none` applies from the medium breakpoint and up.\n\nAt times we'll use `max-width` when a component's inherent complexity requires it. At times, these overrides are functionally and mentally clearer to implement and support than rewriting core functionality from our components. We strive to limit this approach, but will use it from time to time.\n\n## Classes\n\nAside from our Reboot, a cross-browser normalization stylesheet, all our styles aim to use classes as selectors. This means steering clear of type selectors (e.g., `input[type=\"text\"]`) and extraneous parent classes (e.g., `.parent .child`) that make styles too specific to easily override.\n\nAs such, components should be built with a base class that houses common, not-to-be overridden property-value pairs. For example, `.btn` and `.btn-primary`. We use `.btn` for all the common styles like `display`, `padding`, and `border-width`. We then use modifiers like `.btn-primary` to add the color, background-color, border-color, etc.\n\nModifier classes should only be used when there are multiple properties or values to be changed across multiple variants. Modifiers are not always necessary, so be sure you're actually saving lines of code and preventing unnecessary overrides when creating them. Good examples of modifiers are our theme color classes and size variants.\n\n## z-index scales\n\nThere are two `z-index` scales in Bootstrap—elements within a component and overlay components.\n\n### Component elements\n\n- Some components in Bootstrap are built with overlapping elements to prevent double borders without modifying the `border` property. For example, button groups, input groups, and pagination.\n- These components share a standard `z-index` scale of `0` through `3`.\n- `0` is default (initial), `1` is `:hover`, `2` is `:active`/`.active`, and `3` is `:focus`.\n- This approach matches our expectations of highest user priority. If an element is focused, it's in view and at the user's attention. Active elements are second highest because they indicate state. Hover is third highest because it indicates user intent, but nearly _anything_ can be hovered.\n\n### Overlay components\n\nBootstrap includes several components that function as an overlay of some kind. This includes, in order of highest `z-index`, dropdowns, fixed and sticky navbars, modals, tooltips, and popovers. These components have their own `z-index` scale that begins at `1000`. This starting number was chosen arbitrarily and serves as a small buffer between our styles and your project's custom styles.\n\nEach overlay component increases its `z-index` value slightly in such a way that common UI principles allow user focused or hovered elements to remain in view at all times. For example, a modal is document blocking (e.g., you cannot take any other action save for the modal's action), so we put that above our navbars.\n\nLearn more about this in our [`z-index` layout page]([[docsref:/layout/z-index]]).\n\n## HTML and CSS over JS\n\nWhenever possible, we prefer to write HTML and CSS over JavaScript. In general, HTML and CSS are more prolific and accessible to more people of all different experience levels. HTML and CSS are also faster in your browser than JavaScript, and your browser generally provides a great deal of functionality for you.\n\nThis principle is our first-class JavaScript API using `data` attributes. You don't need to write nearly any JavaScript to use our JavaScript plugins; instead, write HTML. Read more about this in [our JavaScript overview page]([[docsref:/getting-started/javascript#data-attributes]]).\n\nLastly, our styles build on the fundamental behaviors of common web elements. Whenever possible, we prefer to use what the browser provides. For example, you can put a `.btn` class on nearly any element, but most elements don't provide any semantic value or browser functionality. So instead, we use `\u003Cbutton>`s and `\u003Ca>`s.\n\nThe same goes for more complex components. While we _could_ write our own form validation plugin to add classes to a parent element based on an input's state, thereby allowing us to style the text say red, we prefer using the `:valid`/`:invalid` pseudo-elements every browser provides us.\n\n## Utilities\n\nUtility classes—formerly helpers in Bootstrap 3—are a powerful ally in combating CSS bloat and poor page performance. A utility class is typically a single, immutable property-value pairing expressed as a class (e.g., `.d-block` represents `display: block;`). Their primary appeal is speed of use while writing HTML and limiting the amount of custom CSS you have to write.\n\nSpecifically regarding custom CSS, utilities can help combat increasing file size by reducing your most commonly repeated property-value pairs into single classes. This can have a dramatic effect at scale in your projects.\n\n## Flexible HTML\n\nWhile not always possible, we strive to avoid being overly dogmatic in our HTML requirements for components. Thus, we focus on single classes in our CSS selectors and try to avoid immediate children selectors (`>`). This gives you more flexibility in your implementation and helps keep our CSS simpler and less specific.\n\n## Code conventions\n\n[Code Guide](https://codeguide.co/) (from Bootstrap co-creator, @mdo) documents how we write our HTML and CSS across Bootstrap. It specifies guidelines for general formatting, common sense defaults, property and attribute orders, and more.\n\nWe use [Stylelint](https://stylelint.io/) to enforce these standards and more in our Sass/CSS. [Our custom Stylelint config](https://github.com/twbs/stylelint-config-twbs-bootstrap) is open source and available for others to use and extend.\n\nWe use [vnu-jar](https://www.npmjs.com/package/vnu-jar) to enforce standard and semantic HTML, as well as detecting common errors.","src/content/docs/extend/approach.mdx","773137829c6d8017","extend/approach.mdx","components/tooltips",{"id":571,"data":573,"body":576,"filePath":577,"digest":578,"legacyId":579,"deferredRender":139},{"description":574,"title":575,"toc":139},"Documentation and examples for adding custom Bootstrap tooltips with CSS and JavaScript using CSS3 for animations and data-bs-attributes for local title storage.","Tooltips","## Overview\n\nThings to know when using the tooltip plugin:\n\n- Tooltips rely on the third party library [Popper](https://popper.js.org/docs/v2/) for positioning. You must include [popper.min.js]([[config:cdn.popper]]) before `bootstrap.js`, or use one `bootstrap.bundle.min.js` which contains Popper.\n- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**.\n- Tooltips with zero-length titles are never displayed.\n- Specify `container: 'body'` to avoid rendering problems in more complex components (like our input groups, button groups, etc).\n- Triggering tooltips on hidden elements will not work.\n- Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element.\n- When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your `\u003Ca>`s to avoid this behavior.\n- Tooltips must be hidden before their corresponding elements have been removed from the DOM.\n- Tooltips can be triggered thanks to an element inside a shadow DOM.\n\nGot all that? Great, let's see how they work with some examples.\n\n\u003CCallout name=\"info-sanitizer\" />\n\n\u003CCallout name=\"info-prefersreducedmotion\" />\n\n## Examples\n\n### Enable tooltips\n\nAs mentioned above, you must initialize tooltips before they can be used. One way to initialize all tooltips on a page would be to select them by their `data-bs-toggle` attribute, like so:\n\n```js\nconst tooltipTriggerList = document.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\nconst tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))\n```\n\n### Tooltips on links\n\nHover over the links below to see tooltips:\n\n\u003CExample addStackblitzJs class=\"tooltip-demo\" code={`\u003Cp class=\"muted\">Placeholder text to demonstrate some \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Default tooltip\">inline links\u003C/a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Another tooltip\">real text\u003C/a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Another one here too\">these tooltips on links\u003C/a> can work in practice, once you use them on \u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"The last tip!\">your own\u003C/a> site or project.\u003C/p>`} />\n\n\u003CCallout name=\"warning-data-bs-title-vs-title\" type=\"warning\" />\n\n### Custom tooltips\n\n\u003CAddedIn version=\"5.2.0\" />\n\nYou can customize the appearance of tooltips using [CSS variables](#variables). We set a custom class with `data-bs-custom-class=\"custom-tooltip\"` to scope our custom appearance and use it to override a local CSS variable.\n\n\u003CScssDocs name=\"custom-tooltip\" file=\"site/src/scss/_component-examples.scss\" />\n\n\u003CExample addStackblitzJs class=\"tooltip-demo\" code={`\u003Cbutton type=\"button\" class=\"btn btn-secondary\"\n data-bs-toggle=\"tooltip\" data-bs-placement=\"top\"\n data-bs-custom-class=\"custom-tooltip\"\n data-bs-title=\"This top tooltip is themed via CSS variables.\">\n Custom tooltip\n\u003C/button>`} />\n\n### Directions\n\nHover over the buttons below to see the four tooltips directions: top, right, bottom, and left. Directions are mirrored when using Bootstrap in RTL.\n\n\u003Cdiv class=\"bd-example tooltip-demo\">\n \u003Cdiv class=\"bd-example-tooltips\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" data-bs-title=\"Tooltip on top\">Tooltip on top\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"right\" data-bs-title=\"Tooltip on right\">Tooltip on right\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"bottom\" data-bs-title=\"Tooltip on bottom\">Tooltip on bottom\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"left\" data-bs-title=\"Tooltip on left\">Tooltip on left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-html=\"true\" data-bs-title=\"\u003Cem>Tooltip\u003C/em> \u003Cu>with\u003C/u> \u003Cb>HTML\u003C/b>\">Tooltip with HTML\u003C/button>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"top\" data-bs-title=\"Tooltip on top\">\n Tooltip on top\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"right\" data-bs-title=\"Tooltip on right\">\n Tooltip on right\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"bottom\" data-bs-title=\"Tooltip on bottom\">\n Tooltip on bottom\n\u003C/button>\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-placement=\"left\" data-bs-title=\"Tooltip on left\">\n Tooltip on left\n\u003C/button>\n```\n\nAnd with custom HTML added:\n\n```html\n\u003Cbutton type=\"button\" class=\"btn btn-secondary\" data-bs-toggle=\"tooltip\" data-bs-html=\"true\" data-bs-title=\"\u003Cem>Tooltip\u003C/em> \u003Cu>with\u003C/u> \u003Cb>HTML\u003C/b>\">\n Tooltip with HTML\n\u003C/button>\n```\n\nWith an SVG:\n\n\u003Cdiv class=\"bd-example tooltip-demo\">\n \u003Ca href=\"#\" class=\"d-inline-block\" data-bs-toggle=\"tooltip\" data-bs-title=\"Default tooltip\" aria-label=\"Hover or focus to see default tooltip\">\n \u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"50\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">\n \u003Crect width=\"100%\" height=\"100%\" fill=\"#563d7c\"/>\n \u003Ccircle cx=\"50\" cy=\"50\" r=\"30\" fill=\"#007bff\"/>\n \u003C/svg>\n \u003C/a>\n\u003C/div>\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\nAs part of Bootstrap’s evolving CSS variables approach, tooltips now use local CSS variables on `.tooltip` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"tooltip-css-vars\" file=\"scss/_tooltip.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"tooltip-variables\" file=\"scss/_variables.scss\" />\n\n## Usage\n\nThe tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element. Trigger the tooltip via JavaScript:\n\n```js\nconst exampleEl = document.getElementById('example')\nconst tooltip = new bootstrap.Tooltip(exampleEl, options)\n```\n\n\u003CCallout type=\"warning\">\nTooltips automatically attempt to change positions when a parent container has `overflow: auto` or `overflow: scroll`, but still keeps the original placement's positioning. Set the [`boundary` option](https://popper.js.org/docs/v2/modifiers/flip/#boundary) (for the flip modifier using the `popperConfig` option) to any HTMLElement to override the default value, `'clippingParents'`, such as `document.body`:\n\n```js\nconst tooltip = new bootstrap.Tooltip('#example', {\n boundary: document.body // or document.querySelector('#boundary')\n})\n```\n\u003C/Callout>\n\n### Markup\n\nThe required markup for a tooltip is only a `data` attribute and `title` on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to `top` by the plugin).\n\n\u003CCallout type=\"warning\">\n**Keep tooltips accessible to keyboard and assistive technology users** by only adding them to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). While other HTML elements can be made focusable by adding `tabindex=\"0\"`, this can create annoying and confusing tab stops on non-interactive elements for keyboard users, and most assistive technologies currently do not announce tooltips in this situation. Additionally, do not rely solely on `hover` as the trigger for your tooltips as this will make them impossible to trigger for keyboard users.\n\u003C/Callout>\n\n```html\n\u003C!-- HTML to write -->\n\u003Ca href=\"#\" data-bs-toggle=\"tooltip\" data-bs-title=\"Some tooltip text!\">Hover over me\u003C/a>\n\n\u003C!-- Generated markup by the plugin -->\n\u003Cdiv class=\"tooltip bs-tooltip-auto\" role=\"tooltip\">\n \u003Cdiv class=\"tooltip-arrow\">\u003C/div>\n \u003Cdiv class=\"tooltip-inner\">\n Some tooltip text!\n \u003C/div>\n\u003C/div>\n```\n\n### Disabled elements\n\nElements with the `disabled` attribute aren't interactive, meaning users cannot focus, hover, or click them to trigger a tooltip (or popover). As a workaround, you'll want to trigger the tooltip from a wrapper `\u003Cdiv>` or `\u003Cspan>`, ideally made keyboard-focusable using `tabindex=\"0\"`.\n\n\u003CExample class=\"tooltip-demo\" addStackblitzJs code={`\u003Cspan class=\"d-inline-block\" tabindex=\"0\" data-bs-toggle=\"tooltip\" data-bs-title=\"Disabled tooltip\">\n \u003Cbutton class=\"btn btn-primary\" type=\"button\" disabled>Disabled button\u003C/button>\n\u003C/span>`} />\n\n### Options\n\n\u003CJsDataAttributes />\n\n\u003CCallout type=\"warning\">\nNote that for security reasons the `sanitize`, `sanitizeFn`, and `allowList` options cannot be supplied using data attributes.\n\u003C/Callout>\n\n\n\u003CBsTable>\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `allowList` | object | [Default value]([[docsref:/getting-started/javascript#sanitizer]]) | Object which contains allowed attributes and tags. |\n| `animation` | boolean | `true` | Apply a CSS fade transition to the tooltip. |\n| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the tooltip (applies only to Popper's preventOverflow modifier). By default, it's `'clippingParents'` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper's [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). |\n| `container` | string, element, false | `false` | Appends the tooltip to a specific element. Example: `container: 'body'`. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize. |\n| `customClass` | string, function | `''` | Add classes to the tooltip when it is shown. Note that these classes will be added in addition to any classes specified in the template. To add multiple classes, separate them with spaces: `'class-1 class-2'`. You can also pass a function that should return a single string containing additional class names. |\n| `delay` | number, object | `0` | Delay showing and hiding the tooltip (ms)—doesn't apply to manual trigger type. If a number is supplied, delay is applied to both hide/show. Object structure is: `delay: { \"show\": 500, \"hide\": 100 }`. |\n| `fallbackPlacements` | array | `['top', 'right', 'bottom', 'left']` | Define fallback placements by providing a list of placements in array (in order of preference). For more information refer to Popper's [behavior docs](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements). |\n| `html` | boolean | `false` | Allow HTML in the tooltip. If true, HTML tags in the tooltip's `title` will be rendered in the tooltip. If false, `innerText` property will be used to insert content into the DOM. Use text if you're worried about XSS attacks. |\n| `offset` | array, string, function | `[0, 6]` | Offset of the tooltip relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset=\"10,20\"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper's [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). |\n| `placement` | string, function | `'top'` | How to position the tooltip: auto, top, bottom, left, right. When `auto` is specified, it will dynamically reorient the tooltip. When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The `this` context is set to the tooltip instance. |\n| `popperConfig` | null, object, function | `null` | To change Bootstrap's default Popper config, see [Popper's configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it's called with an object that contains the Bootstrap's default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper. |\n| `sanitize` | boolean | `true` | Enable or disable the sanitization. If activated `'template'`, `'content'` and `'title'` options will be sanitized. |\n| `sanitizeFn` | null, function | `null` | Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization. |\n| `selector` | string, false | `false` | If a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to also apply tooltips to dynamically added DOM elements (`jQuery.on` support). See [this issue]([[config:repo]]/issues/4215) and [an informative example](https://codepen.io/Johann-S/pen/djJYPb). **Note**: `title` attribute must not be used as a selector. |\n| `template` | string | `'\u003Cdiv class=\"tooltip\" role=\"tooltip\">\u003Cdiv class=\"tooltip-arrow\">\u003C/div>\u003Cdiv class=\"tooltip-inner\">\u003C/div>\u003C/div>'` | Base HTML to use when creating the tooltip. The tooltip's `title` will be injected into the `.tooltip-inner`. `.tooltip-arrow` will become the tooltip's arrow. The outermost wrapper element should have the `.tooltip` class and `role=\"tooltip\"`. |\n| `title` | string, element, function | `''` | The tooltip title. If a function is given, it will be called with its `this` reference set to the element that the popover is attached to. |\n| `trigger` | string | `'hover focus'` | How tooltip is triggered: click, hover, focus, manual. You may pass multiple triggers; separate them with a space. `'manual'` indicates that the tooltip will be triggered programmatically via the `.tooltip('show')`, `.tooltip('hide')` and `.tooltip('toggle')` methods; this value cannot be combined with any other trigger. `'hover'` on its own will result in tooltips that cannot be triggered via the keyboard, and should only be used if alternative methods for conveying the same information for keyboard users is present. |\n\u003C/BsTable>\n\n\u003CCallout>\n#### Data attributes for individual tooltips\n\nOptions for individual tooltips can alternatively be specified through the use of data attributes, as explained above.\n\u003C/Callout>\n\n#### Using function with `popperConfig`\n\n```js\nconst tooltip = new bootstrap.Tooltip(element, {\n popperConfig(defaultBsPopperConfig) {\n // const newPopperConfig = {...}\n // use defaultBsPopperConfig if needed...\n // return newPopperConfig\n }\n})\n```\n\n### Methods\n\n\u003CCallout name=\"danger-async-methods\" type=\"danger\" />\n\n\u003CBsTable>\n| Method | Description |\n| --- | --- |\n| `disable` | Removes the ability for an element's tooltip to be shown. The tooltip will only be able to be shown if it is re-enabled. |\n| `dispose` | Hides and destroys an element's tooltip (Removes stored data on the DOM element). Tooltips that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements. |\n| `enable` | Gives an element's tooltip the ability to be shown. **Tooltips are enabled by default.** |\n| `getInstance` | *Static* method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `getOrCreateInstance` | *Static* method which allows you to get the tooltip instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n| `hide` | Hides an element's tooltip. **Returns to the caller before the tooltip has actually been hidden** (i.e. before the `hidden.bs.tooltip` event occurs). This is considered a \"manual\" triggering of the tooltip. |\n| `setContent` | Gives a way to change the tooltip's content after its initialization. |\n| `show` | Reveals an element's tooltip. **Returns to the caller before the tooltip has actually been shown** (i.e. before the `shown.bs.tooltip` event occurs). This is considered a \"manual\" triggering of the tooltip. Tooltips with zero-length titles are never displayed. |\n| `toggle` | Toggles an element's tooltip. **Returns to the caller before the tooltip has actually been shown or hidden** (i.e. before the `shown.bs.tooltip` or `hidden.bs.tooltip` event occurs). This is considered a \"manual\" triggering of the tooltip. |\n| `toggleEnabled` | Toggles the ability for an element's tooltip to be shown or hidden. |\n| `update` | Updates the position of an element's tooltip. |\n\u003C/BsTable>\n\n```js\nconst tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance\n\n// setContent example\ntooltip.setContent({ '.tooltip-inner': 'another title' })\n\n```\n\n\u003CCallout>\nThe `setContent` method accepts an `object` argument, where each property-key is a valid `string` selector within the tooltip template, and each related property-value can be `string` | `element` | `function` | `null`\n\u003C/Callout>\n\n### Events\n\n\u003CBsTable>\n| Event | Description |\n| --- | --- |\n| `hide.bs.tooltip` | This event is fired immediately when the `hide` instance method has been called. |\n| `hidden.bs.tooltip` | This event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete). |\n| `inserted.bs.tooltip` | This event is fired after the `show.bs.tooltip` event when the tooltip template has been added to the DOM. |\n| `show.bs.tooltip` | This event fires immediately when the `show` instance method is called. |\n| `shown.bs.tooltip` | This event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete). |\n\u003C/BsTable>\n\n```js\nconst myTooltipEl = document.getElementById('myTooltip')\nconst tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)\n\nmyTooltipEl.addEventListener('hidden.bs.tooltip', () => {\n // do something...\n})\n\ntooltip.hide()\n```","src/content/docs/components/tooltips.mdx","6f55d82f99b7d9e4","components/tooltips.mdx","forms/floating-labels",{"id":580,"data":582,"body":585,"filePath":586,"digest":587,"legacyId":588,"deferredRender":139},{"description":583,"title":584,"toc":139},"Create beautifully simple form labels that float over your input fields.","Floating labels","## Example\n\nWrap a pair of `\u003Cinput class=\"form-control\">` and `\u003Clabel>` elements in `.form-floating` to enable floating labels with Bootstrap's textual form fields. A `placeholder` is required on each `\u003Cinput>` as our method of CSS-only floating labels uses the `:placeholder-shown` pseudo-element. Also note that the `\u003Cinput>` must come first so we can utilize a sibling selector (e.g., `~`).\n\n\u003CExample code={`\u003Cdiv class=\"form-floating mb-3\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\">\n \u003Clabel for=\"floatingInput\">Email address\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating\">\n \u003Cinput type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\">\n \u003Clabel for=\"floatingPassword\">Password\u003C/label>\n\u003C/div>`} />\n\nWhen there's a `value` already defined, `\u003Clabel>`s will automatically adjust to their floated position.\n\n\u003CExample code={`\u003Cform class=\"form-floating\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"floatingInputValue\" placeholder=\"name@example.com\" value=\"test@example.com\">\n \u003Clabel for=\"floatingInputValue\">Input with value\u003C/label>\n\u003C/form>`} />\n\nForm validation styles also work as expected.\n\n\u003CExample code={`\u003Cform class=\"form-floating\">\n \u003Cinput type=\"email\" class=\"form-control is-invalid\" id=\"floatingInputInvalid\" placeholder=\"name@example.com\" value=\"test@example.com\">\n \u003Clabel for=\"floatingInputInvalid\">Invalid input\u003C/label>\n\u003C/form>`} />\n\n## Textareas\n\nBy default, `\u003Ctextarea>`s with `.form-control` will be the same height as `\u003Cinput>`s.\n\n\u003CExample code={`\u003Cdiv class=\"form-floating\">\n \u003Ctextarea class=\"form-control\" placeholder=\"Leave a comment here\" id=\"floatingTextarea\">\u003C/textarea>\n \u003Clabel for=\"floatingTextarea\">Comments\u003C/label>\n\u003C/div>`} />\n\nTo set a custom height on your `\u003Ctextarea>`, do not use the `rows` attribute. Instead, set an explicit `height` (either inline or via custom CSS).\n\n\u003CExample code={`\u003Cdiv class=\"form-floating\">\n \u003Ctextarea class=\"form-control\" placeholder=\"Leave a comment here\" id=\"floatingTextarea2\" style=\"height: 100px\">\u003C/textarea>\n \u003Clabel for=\"floatingTextarea2\">Comments\u003C/label>\n\u003C/div>`} />\n\n## Selects\n\nOther than `.form-control`, floating labels are only available on `.form-select`s. They work in the same way, but unlike `\u003Cinput>`s, they'll always show the `\u003Clabel>` in its floated state. **Selects with `size` and `multiple` are not supported.**\n\n\u003CExample code={`\u003Cdiv class=\"form-floating\">\n \u003Cselect class=\"form-select\" id=\"floatingSelect\" aria-label=\"Floating label select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Clabel for=\"floatingSelect\">Works with selects\u003C/label>\n\u003C/div>`} />\n\n## Disabled\n\nAdd the `disabled` boolean attribute on an input, a textarea or a select to give it a grayed out appearance, remove pointer events, and prevent focusing.\n\n\u003CExample code={`\u003Cdiv class=\"form-floating mb-3\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"floatingInputDisabled\" placeholder=\"name@example.com\" disabled>\n \u003Clabel for=\"floatingInputDisabled\">Email address\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating mb-3\">\n \u003Ctextarea class=\"form-control\" placeholder=\"Leave a comment here\" id=\"floatingTextareaDisabled\" disabled>\u003C/textarea>\n \u003Clabel for=\"floatingTextareaDisabled\">Comments\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating mb-3\">\n \u003Ctextarea class=\"form-control\" placeholder=\"Leave a comment here\" id=\"floatingTextarea2Disabled\" style=\"height: 100px\" disabled>Disabled textarea with some text inside\u003C/textarea>\n \u003Clabel for=\"floatingTextarea2Disabled\">Comments\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating\">\n \u003Cselect class=\"form-select\" id=\"floatingSelectDisabled\" aria-label=\"Floating label disabled select example\" disabled>\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Clabel for=\"floatingSelectDisabled\">Works with selects\u003C/label>\n\u003C/div>`} />\n\n## Readonly plaintext\n\nFloating labels also support `.form-control-plaintext`, which can be helpful for toggling from an editable `\u003Cinput>` to a plaintext value without affecting the page layout.\n\n\u003CExample code={`\u003Cdiv class=\"form-floating mb-3\">\n \u003Cinput type=\"email\" readonly class=\"form-control-plaintext\" id=\"floatingEmptyPlaintextInput\" placeholder=\"name@example.com\">\n \u003Clabel for=\"floatingEmptyPlaintextInput\">Empty input\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-floating mb-3\">\n \u003Cinput type=\"email\" readonly class=\"form-control-plaintext\" id=\"floatingPlaintextInput\" placeholder=\"name@example.com\" value=\"name@example.com\">\n \u003Clabel for=\"floatingPlaintextInput\">Input with value\u003C/label>\n\u003C/div>`} />\n\n## Input groups\n\nFloating labels also support `.input-group`.\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\">@\u003C/span>\n \u003Cdiv class=\"form-floating\">\n \u003Cinput type=\"text\" class=\"form-control\" id=\"floatingInputGroup1\" placeholder=\"Username\">\n \u003Clabel for=\"floatingInputGroup1\">Username\u003C/label>\n \u003C/div>\n\u003C/div>`} />\n\nWhen using `.input-group` and `.form-floating` along with form validation, the `-feedback` should be placed outside of the `.form-floating`, but inside of the `.input-group`. This means that the feedback will need to be shown using javascript.\n\n\u003CExample code={`\u003Cdiv class=\"input-group has-validation\">\n \u003Cspan class=\"input-group-text\">@\u003C/span>\n \u003Cdiv class=\"form-floating is-invalid\">\n \u003Cinput type=\"text\" class=\"form-control is-invalid\" id=\"floatingInputGroup2\" placeholder=\"Username\" required>\n \u003Clabel for=\"floatingInputGroup2\">Username\u003C/label>\n \u003C/div>\n \u003Cdiv class=\"invalid-feedback\">\n Please choose a username.\n \u003C/div>\n\u003C/div>`} />\n\n## Layout\n\nWhen working with the Bootstrap grid system, be sure to place form elements within column classes.\n\n\u003CExample code={`\u003Cdiv class=\"row g-2\">\n \u003Cdiv class=\"col-md\">\n \u003Cdiv class=\"form-floating\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"floatingInputGrid\" placeholder=\"name@example.com\" value=\"mdo@example.com\">\n \u003Clabel for=\"floatingInputGrid\">Email address\u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md\">\n \u003Cdiv class=\"form-floating\">\n \u003Cselect class=\"form-select\" id=\"floatingSelectGrid\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Clabel for=\"floatingSelectGrid\">Works with selects\u003C/label>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"form-floating-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/floating-labels.mdx","57de08e7722d79e7","forms/floating-labels.mdx","forms/checks-radios",{"id":589,"data":591,"body":595,"filePath":596,"digest":597,"legacyId":598,"deferredRender":139},{"aliases":592,"description":593,"title":594,"toc":139},"/docs/[[config:docs_version]]/forms/checks/","Create consistent cross-browser and cross-device checkboxes and radios with our completely rewritten checks component.","Checks and radios","## Approach\n\nBrowser default checkboxes and radios are replaced with the help of `.form-check`, a series of classes for both input types that improves the layout and behavior of their HTML elements, that provide greater customization and cross browser consistency. Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.\n\nStructurally, our `\u003Cinput>`s and `\u003Clabel>`s are sibling elements as opposed to an `\u003Cinput>` within a `\u003Clabel>`. This is slightly more verbose as you must specify `id` and `for` attributes to relate the `\u003Cinput>` and `\u003Clabel>`. We use the sibling selector (`~`) for all our `\u003Cinput>` states, like `:checked` or `:disabled`. When combined with the `.form-check-label` class, we can easily style the text for each item based on the `\u003Cinput>`'s state.\n\nOur checks use custom Bootstrap icons to indicate checked or indeterminate states.\n\n## Checks\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkDefault\">\n \u003Clabel class=\"form-check-label\" for=\"checkDefault\">\n Default checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkChecked\" checked>\n \u003Clabel class=\"form-check-label\" for=\"checkChecked\">\n Checked checkbox\n \u003C/label>\n\u003C/div>`} />\n\n### Indeterminate\n\nCheckboxes can utilize the `:indeterminate` pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it).\n\n\u003CExample addStackblitzJs class=\"bd-example-indeterminate\" code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkIndeterminate\">\n \u003Clabel class=\"form-check-label\" for=\"checkIndeterminate\">\n Indeterminate checkbox\n \u003C/label>\n\u003C/div>`} />\n\n### Disabled\n\nAdd the `disabled` attribute and the associated `\u003Clabel>`s are automatically styled to match with a lighter color to help indicate the input's state.\n\n\u003CExample addStackblitzJs class=\"bd-example-indeterminate\" code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkIndeterminateDisabled\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"checkIndeterminateDisabled\">\n Disabled indeterminate checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkDisabled\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"checkDisabled\">\n Disabled checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"checkCheckedDisabled\" checked disabled>\n \u003Clabel class=\"form-check-label\" for=\"checkCheckedDisabled\">\n Disabled checked checkbox\n \u003C/label>\n\u003C/div>`} />\n\n## Radios\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioDefault\" id=\"radioDefault1\">\n \u003Clabel class=\"form-check-label\" for=\"radioDefault1\">\n Default radio\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioDefault\" id=\"radioDefault2\" checked>\n \u003Clabel class=\"form-check-label\" for=\"radioDefault2\">\n Default checked radio\n \u003C/label>\n\u003C/div>`} />\n\n### Disabled\n\nAdd the `disabled` attribute and the associated `\u003Clabel>`s are automatically styled to match with a lighter color to help indicate the input's state.\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioDisabled\" id=\"radioDisabled\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"radioDisabled\">\n Disabled radio\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioDisabled\" id=\"radioCheckedDisabled\" checked disabled>\n \u003Clabel class=\"form-check-label\" for=\"radioCheckedDisabled\">\n Disabled checked radio\n \u003C/label>\n\u003C/div>`} />\n\n## Switches\n\nA switch has the markup of a custom checkbox but uses the `.form-switch` class to render a toggle switch. Consider using `role=\"switch\"` to more accurately convey the nature of the control to assistive technologies that support this role. In older assistive technologies, it will simply be announced as a regular checkbox as a fallback. Switches also support the `disabled` attribute.\n\n\u003CExample code={`\u003Cdiv class=\"form-check form-switch\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"switchCheckDefault\">\n \u003Clabel class=\"form-check-label\" for=\"switchCheckDefault\">Default switch checkbox input\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-switch\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"switchCheckChecked\" checked>\n \u003Clabel class=\"form-check-label\" for=\"switchCheckChecked\">Checked switch checkbox input\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-switch\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"switchCheckDisabled\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"switchCheckDisabled\">Disabled switch checkbox input\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-switch\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"switchCheckCheckedDisabled\" checked disabled>\n \u003Clabel class=\"form-check-label\" for=\"switchCheckCheckedDisabled\">Disabled checked switch checkbox input\u003C/label>\n\u003C/div>`} />\n\n## Default (stacked)\n\nBy default, any number of checkboxes and radios that are immediate sibling will be vertically stacked and appropriately spaced with `.form-check`.\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck1\">\n \u003Clabel class=\"form-check-label\" for=\"defaultCheck1\">\n Default checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck2\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"defaultCheck2\">\n Disabled checkbox\n \u003C/label>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"exampleRadios1\" value=\"option1\" checked>\n \u003Clabel class=\"form-check-label\" for=\"exampleRadios1\">\n Default radio\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"exampleRadios2\" value=\"option2\">\n \u003Clabel class=\"form-check-label\" for=\"exampleRadios2\">\n Second default radio\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"exampleRadios\" id=\"exampleRadios3\" value=\"option3\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"exampleRadios3\">\n Disabled radio\n \u003C/label>\n\u003C/div>`} />\n\n## Inline\n\nGroup checkboxes or radios on the same horizontal row by adding `.form-check-inline` to any `.form-check`.\n\n\u003CExample code={`\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"inlineCheckbox1\" value=\"option1\">\n \u003Clabel class=\"form-check-label\" for=\"inlineCheckbox1\">1\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"inlineCheckbox2\" value=\"option2\">\n \u003Clabel class=\"form-check-label\" for=\"inlineCheckbox2\">2\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"inlineCheckbox3\" value=\"option3\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"inlineCheckbox3\">3 (disabled)\u003C/label>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"inlineRadioOptions\" id=\"inlineRadio1\" value=\"option1\">\n \u003Clabel class=\"form-check-label\" for=\"inlineRadio1\">1\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"inlineRadioOptions\" id=\"inlineRadio2\" value=\"option2\">\n \u003Clabel class=\"form-check-label\" for=\"inlineRadio2\">2\u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-inline\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"inlineRadioOptions\" id=\"inlineRadio3\" value=\"option3\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"inlineRadio3\">3 (disabled)\u003C/label>\n\u003C/div>`} />\n\n## Reverse\n\nPut your checkboxes, radios, and switches on the opposite side with the `.form-check-reverse` modifier class.\n\n\u003CExample code={`\u003Cdiv class=\"form-check form-check-reverse\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"reverseCheck1\">\n \u003Clabel class=\"form-check-label\" for=\"reverseCheck1\">\n Reverse checkbox\n \u003C/label>\n\u003C/div>\n\u003Cdiv class=\"form-check form-check-reverse\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"reverseCheck2\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"reverseCheck2\">\n Disabled reverse checkbox\n \u003C/label>\n\u003C/div>\n\n\u003Cdiv class=\"form-check form-switch form-check-reverse\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"switchCheckReverse\">\n \u003Clabel class=\"form-check-label\" for=\"switchCheckReverse\">Reverse switch checkbox input\u003C/label>\n\u003C/div>`} />\n\n## Without labels\n\nOmit the wrapping `.form-check` for checkboxes and radios that have no label text. Remember to still provide some form of accessible name for assistive technologies (for instance, using `aria-label`). See the [forms overview accessibility]([[docsref:/forms/overview#accessibility]]) section for details.\n\n\u003CExample code={`\u003Cdiv>\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"checkboxNoLabel\" value=\"\" aria-label=\"...\">\n\u003C/div>\n\n\u003Cdiv>\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"radioNoLabel\" id=\"radioNoLabel1\" value=\"\" aria-label=\"...\">\n\u003C/div>`} />\n\n## Toggle buttons\n\nCreate button-like checkboxes and radio buttons by using `.btn` styles rather than `.form-check-label` on the `\u003Clabel>` elements. These toggle buttons can further be grouped in a [button group]([[docsref:/components/button-group]]) if needed.\n\n### Checkbox toggle buttons\n\n\u003CExample code={`\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-primary\" for=\"btn-check\">Single toggle\u003C/label>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-2\" checked autocomplete=\"off\">\n\u003Clabel class=\"btn btn-primary\" for=\"btn-check-2\">Checked\u003C/label>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-3\" autocomplete=\"off\" disabled>\n\u003Clabel class=\"btn btn-primary\" for=\"btn-check-3\">Disabled\u003C/label>`} />\n\n\u003CExample code={`\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-4\" autocomplete=\"off\">\n\u003Clabel class=\"btn\" for=\"btn-check-4\">Single toggle\u003C/label>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-5\" checked autocomplete=\"off\">\n\u003Clabel class=\"btn\" for=\"btn-check-5\">Checked\u003C/label>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-6\" autocomplete=\"off\" disabled>\n\u003Clabel class=\"btn\" for=\"btn-check-6\">Disabled\u003C/label>`} />\n\n\u003CCallout>\nVisually, these checkbox toggle buttons are identical to the [button plugin toggle buttons]([[docsref:/components/buttons#button-plugin]]). However, they are conveyed differently by assistive technologies: the checkbox toggles will be announced by screen readers as \"checked\"/\"not checked\" (since, despite their appearance, they are fundamentally still checkboxes), whereas the button plugin toggle buttons will be announced as \"button\"/\"button pressed\". The choice between these two approaches will depend on the type of toggle you are creating, and whether or not the toggle will make sense to users when announced as a checkbox or as an actual button.\n\u003C/Callout>\n\n### Radio toggle buttons\n\n\u003CExample code={`\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options\" id=\"option1\" autocomplete=\"off\" checked>\n\u003Clabel class=\"btn btn-secondary\" for=\"option1\">Checked\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options\" id=\"option2\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-secondary\" for=\"option2\">Radio\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options\" id=\"option3\" autocomplete=\"off\" disabled>\n\u003Clabel class=\"btn btn-secondary\" for=\"option3\">Disabled\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options\" id=\"option4\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-secondary\" for=\"option4\">Radio\u003C/label>`} />\n\n\u003CExample code={`\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-base\" id=\"option5\" autocomplete=\"off\" checked>\n\u003Clabel class=\"btn\" for=\"option5\">Checked\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-base\" id=\"option6\" autocomplete=\"off\">\n\u003Clabel class=\"btn\" for=\"option6\">Radio\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-base\" id=\"option7\" autocomplete=\"off\" disabled>\n\u003Clabel class=\"btn\" for=\"option7\">Disabled\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-base\" id=\"option8\" autocomplete=\"off\">\n\u003Clabel class=\"btn\" for=\"option8\">Radio\u003C/label>`} />\n\n### Outlined styles\n\nDifferent variants of `.btn`, such as the various outlined styles, are supported.\n\n\u003CExample code={`\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-outline-primary\" for=\"btn-check-outlined\">Single toggle\u003C/label>\u003Cbr>\n\n\u003Cinput type=\"checkbox\" class=\"btn-check\" id=\"btn-check-2-outlined\" checked autocomplete=\"off\">\n\u003Clabel class=\"btn btn-outline-secondary\" for=\"btn-check-2-outlined\">Checked\u003C/label>\u003Cbr>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-outlined\" id=\"success-outlined\" autocomplete=\"off\" checked>\n\u003Clabel class=\"btn btn-outline-success\" for=\"success-outlined\">Checked success radio\u003C/label>\n\n\u003Cinput type=\"radio\" class=\"btn-check\" name=\"options-outlined\" id=\"danger-outlined\" autocomplete=\"off\">\n\u003Clabel class=\"btn btn-outline-danger\" for=\"danger-outlined\">Danger radio\u003C/label>`} />\n\n## CSS\n\n### Sass variables\n\nVariables for checks:\n\n\u003CScssDocs name=\"form-check-variables\" file=\"scss/_variables.scss\" />\n\nVariables for switches:\n\n\u003CScssDocs name=\"form-switch-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/checks-radios.mdx","e01cbaf932bc489c","forms/checks-radios.mdx","forms/form-control",{"id":599,"data":601,"body":604,"filePath":605,"digest":606,"legacyId":607,"deferredRender":139},{"description":602,"title":603,"toc":139},"Give textual form controls like `\u003Cinput>`s and `\u003Ctextarea>`s an upgrade with custom styles, sizing, focus states, and more.","Form controls","## Example\n\nForm controls are styled with a mix of Sass and CSS variables, allowing them to adapt to color modes and support any customization method.\n\n\u003CExample code={`\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleFormControlInput1\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"exampleFormControlInput1\" placeholder=\"name@example.com\">\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleFormControlTextarea1\" class=\"form-label\">Example textarea\u003C/label>\n \u003Ctextarea class=\"form-control\" id=\"exampleFormControlTextarea1\" rows=\"3\">\u003C/textarea>\n\u003C/div>`} />\n\n## Sizing\n\nSet heights using classes like `.form-control-lg` and `.form-control-sm`.\n\n\u003CExample code={`\u003Cinput class=\"form-control form-control-lg\" type=\"text\" placeholder=\".form-control-lg\" aria-label=\".form-control-lg example\">\n\u003Cinput class=\"form-control\" type=\"text\" placeholder=\"Default input\" aria-label=\"default input example\">\n\u003Cinput class=\"form-control form-control-sm\" type=\"text\" placeholder=\".form-control-sm\" aria-label=\".form-control-sm example\">`} />\n\n## Form text\n\nBlock-level or inline-level form text can be created using `.form-text`.\n\n\u003CCallout type=\"warning\">\nForm text should be explicitly associated with the form control it relates to using the `aria-describedby` attribute. This will ensure that assistive technologies—such as screen readers—will announce this form text when the user focuses or enters the control.\n\u003C/Callout>\n\nForm text below inputs can be styled with `.form-text`. If a block-level element will be used, a top margin is added for easy spacing from the inputs above.\n\n\u003CExample code={`\u003Clabel for=\"inputPassword5\" class=\"form-label\">Password\u003C/label>\n\u003Cinput type=\"password\" id=\"inputPassword5\" class=\"form-control\" aria-describedby=\"passwordHelpBlock\">\n\u003Cdiv id=\"passwordHelpBlock\" class=\"form-text\">\n Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.\n\u003C/div>`} />\n\nInline text can use any typical inline HTML element (be it a `\u003Cspan>`, `\u003Csmall>`, or something else) with nothing more than the `.form-text` class.\n\n\u003CExample code={`\u003Cdiv class=\"row g-3 align-items-center\">\n \u003Cdiv class=\"col-auto\">\n \u003Clabel for=\"inputPassword6\" class=\"col-form-label\">Password\u003C/label>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cinput type=\"password\" id=\"inputPassword6\" class=\"form-control\" aria-describedby=\"passwordHelpInline\">\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cspan id=\"passwordHelpInline\" class=\"form-text\">\n Must be 8-20 characters long.\n \u003C/span>\n \u003C/div>\n\u003C/div>`} />\n\n## Disabled\n\nAdd the `disabled` boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing.\n\n\u003CExample code={`\u003Cinput class=\"form-control\" type=\"text\" placeholder=\"Disabled input\" aria-label=\"Disabled input example\" disabled>\n\u003Cinput class=\"form-control\" type=\"text\" value=\"Disabled readonly input\" aria-label=\"Disabled input example\" disabled readonly>`} />\n\n## Readonly\n\nAdd the `readonly` boolean attribute on an input to prevent modification of the input's value. `readonly` inputs can still be focused and selected, while `disabled` inputs cannot.\n\n\u003CExample code={`\u003Cinput class=\"form-control\" type=\"text\" value=\"Readonly input here...\" aria-label=\"readonly input example\" readonly>`} />\n\n## Readonly plain text\n\nIf you want to have `\u003Cinput readonly>` elements in your form styled as plain text, replace `.form-control` with `.form-control-plaintext` to remove the default form field styling and preserve the correct `margin` and `padding`.\n\n\u003CExample code={` \u003Cdiv class=\"mb-3 row\">\n \u003Clabel for=\"staticEmail\" class=\"col-sm-2 col-form-label\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"text\" readonly class=\"form-control-plaintext\" id=\"staticEmail\" value=\"email@example.com\">\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"mb-3 row\">\n \u003Clabel for=\"inputPassword\" class=\"col-sm-2 col-form-label\">Password\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"password\" class=\"form-control\" id=\"inputPassword\">\n \u003C/div>\n \u003C/div>`} />\n\n\u003CExample code={`\u003Cform class=\"row g-3\">\n \u003Cdiv class=\"col-auto\">\n \u003Clabel for=\"staticEmail2\" class=\"visually-hidden\">Email\u003C/label>\n \u003Cinput type=\"text\" readonly class=\"form-control-plaintext\" id=\"staticEmail2\" value=\"email@example.com\">\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Clabel for=\"inputPassword2\" class=\"visually-hidden\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"inputPassword2\" placeholder=\"Password\">\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary mb-3\">Confirm identity\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## File input\n\n\u003CExample code={`\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formFile\" class=\"form-label\">Default file input example\u003C/label>\n \u003Cinput class=\"form-control\" type=\"file\" id=\"formFile\">\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formFileMultiple\" class=\"form-label\">Multiple files input example\u003C/label>\n \u003Cinput class=\"form-control\" type=\"file\" id=\"formFileMultiple\" multiple>\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formFileDisabled\" class=\"form-label\">Disabled file input example\u003C/label>\n \u003Cinput class=\"form-control\" type=\"file\" id=\"formFileDisabled\" disabled>\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formFileSm\" class=\"form-label\">Small file input example\u003C/label>\n \u003Cinput class=\"form-control form-control-sm\" id=\"formFileSm\" type=\"file\">\n\u003C/div>\n\u003Cdiv>\n \u003Clabel for=\"formFileLg\" class=\"form-label\">Large file input example\u003C/label>\n \u003Cinput class=\"form-control form-control-lg\" id=\"formFileLg\" type=\"file\">\n\u003C/div>`} />\n\n## Color\n\nSet the `type=\"color\"` and add `.form-control-color` to the `\u003Cinput>`. We use the modifier class to set fixed `height`s and override some inconsistencies between browsers.\n\n\u003CExample code={`\u003Clabel for=\"exampleColorInput\" class=\"form-label\">Color picker\u003C/label>\n\u003Cinput type=\"color\" class=\"form-control form-control-color\" id=\"exampleColorInput\" value=\"#563d7c\" title=\"Choose your color\">`} />\n\n## Datalists\n\nDatalists allow you to create a group of `\u003Coption>`s that can be accessed (and autocompleted) from within an `\u003Cinput>`. These are similar to `\u003Cselect>` elements, but come with more menu styling limitations and differences. While most browsers and operating systems include some support for `\u003Cdatalist>` elements, their styling is inconsistent at best.\n\nLearn more about [support for datalist elements](https://caniuse.com/datalist).\n\n\u003CExample code={`\u003Clabel for=\"exampleDataList\" class=\"form-label\">Datalist example\u003C/label>\n\u003Cinput class=\"form-control\" list=\"datalistOptions\" id=\"exampleDataList\" placeholder=\"Type to search...\">\n\u003Cdatalist id=\"datalistOptions\">\n \u003Coption value=\"San Francisco\">\n \u003Coption value=\"New York\">\n \u003Coption value=\"Seattle\">\n \u003Coption value=\"Los Angeles\">\n \u003Coption value=\"Chicago\">\n\u003C/datalist>`} />\n\n## CSS\n\n### Sass variables\n\n`$input-*` are shared across most of our form controls (and not buttons).\n\n\u003CScssDocs name=\"form-input-variables\" file=\"scss/_variables.scss\" />\n\n`$form-label-*` and `$form-text-*` are for our `\u003Clabel>`s and `.form-text` component.\n\n\u003CScssDocs name=\"form-label-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"form-text-variables\" file=\"scss/_variables.scss\" />\n\n`$form-file-*` are for file input.\n\n\u003CScssDocs name=\"form-file-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/form-control.mdx","4987aebc6b778fef","forms/form-control.mdx","forms/overview",{"id":608,"data":610,"body":637,"filePath":638,"digest":639,"legacyId":640,"deferredRender":139},{"aliases":611,"description":612,"sections":613,"title":636,"toc":139},"/docs/[[config:docs_version]]/forms/","Examples and usage guidelines for form control styles, layout options, and custom components for creating a wide variety of forms.",[614,617,620,623,626,629,630,633],{"description":615,"title":616},"Style textual inputs and textareas with support for multiple states.","Form control",{"description":618,"title":619},"Improve browser default select elements with a custom initial appearance.","Select",{"description":621,"title":622},"Use our custom radio buttons and checkboxes in forms for selecting input options.","Checks & radios",{"description":624,"title":625},"Replace browser default range inputs with our custom version.","Range",{"description":627,"title":628},"Attach labels and buttons to your inputs for increased semantic value.","Input group",{"description":583,"title":584},{"description":631,"title":632},"Create inline, horizontal, or complex grid-based layouts with your forms.","Layout",{"description":634,"title":635},"Validate your forms with custom or native validation behaviors and styles.","Validation","Forms","## Overview\n\nBootstrap's form controls expand on [our Rebooted form styles]([[docsref:/content/reboot#forms]]) with classes. Use these classes to opt into their customized displays for a more consistent rendering across browsers and devices.\n\nBe sure to use an appropriate `type` attribute on all inputs (e.g., `email` for email address or `number` for numerical information) to take advantage of newer input controls like email verification, number selection, and more.\n\nHere's a quick example to demonstrate Bootstrap's form styles. Keep reading for documentation on required classes, form layout, and more.\n\n\u003CExample code={`\u003Cform>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleInputEmail1\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"exampleInputEmail1\" aria-describedby=\"emailHelp\">\n \u003Cdiv id=\"emailHelp\" class=\"form-text\">We'll never share your email with anyone else.\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"exampleInputPassword1\" class=\"form-label\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"exampleInputPassword1\">\n \u003C/div>\n \u003Cdiv class=\"mb-3 form-check\">\n \u003Cinput type=\"checkbox\" class=\"form-check-input\" id=\"exampleCheck1\">\n \u003Clabel class=\"form-check-label\" for=\"exampleCheck1\">Check me out\u003C/label>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n\u003C/form>`} />\n\n## Disabled forms\n\nAdd the `disabled` boolean attribute on an input to prevent user interactions and make it appear lighter.\n\n```html\n\u003Cinput class=\"form-control\" id=\"disabledInput\" type=\"text\" placeholder=\"Disabled input here...\" disabled>\n```\n\nAdd the `disabled` attribute to a `\u003Cfieldset>` to disable all the controls within. Browsers treat all native form controls (`\u003Cinput>`, `\u003Cselect>`, and `\u003Cbutton>` elements) inside a `\u003Cfieldset disabled>` as disabled, preventing both keyboard and mouse interactions on them.\n\nHowever, if your form also includes custom button-like elements such as `\u003Ca class=\"btn btn-*\">...\u003C/a>`, these will only be given a style of `pointer-events: none`, meaning they are still focusable and operable using the keyboard. In this case, you must manually modify these controls by adding `tabindex=\"-1\"` to prevent them from receiving focus and `aria-disabled=\"disabled\"` to signal their state to assistive technologies.\n\n\u003CExample code={`\u003Cform>\n \u003Cfieldset disabled>\n \u003Clegend>Disabled fieldset example\u003C/legend>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"disabledTextInput\" class=\"form-label\">Disabled input\u003C/label>\n \u003Cinput type=\"text\" id=\"disabledTextInput\" class=\"form-control\" placeholder=\"Disabled input\">\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"disabledSelect\" class=\"form-label\">Disabled select menu\u003C/label>\n \u003Cselect id=\"disabledSelect\" class=\"form-select\">\n \u003Coption>Disabled select\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"mb-3\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"disabledFieldsetCheck\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"disabledFieldsetCheck\">\n Can't check this\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n \u003C/fieldset>\n\u003C/form>`} />\n\n## Accessibility\n\nEnsure that all form controls have an appropriate accessible name so that their purpose can be conveyed to users of assistive technologies. The simplest way to achieve this is to use a `\u003Clabel>` element, or—in the case of buttons—to include sufficiently descriptive text as part of the `\u003Cbutton>...\u003C/button>` content.\n\nFor situations where it's not possible to include a visible `\u003Clabel>` or appropriate text content, there are alternative ways of still providing an accessible name, such as:\n\n- `\u003Clabel>` elements hidden using the `.visually-hidden` class\n- Pointing to an existing element that can act as a label using `aria-labelledby`\n- Providing a `title` attribute\n- Explicitly setting the accessible name on an element using `aria-label`\n\nIf none of these are present, assistive technologies may resort to using the `placeholder` attribute as a fallback for the accessible name on `\u003Cinput>` and `\u003Ctextarea>` elements. The examples in this section provide a few suggested, case-specific approaches.\n\nWhile using visually hidden content (`.visually-hidden`, `aria-label`, and even `placeholder` content, which disappears once a form field has content) will benefit assistive technology users, a lack of visible label text may still be problematic for certain users. Some form of visible label is generally the best approach, both for accessibility and usability.\n\n## CSS\n\nMany form variables are set at a general level to be re-used and extended by individual form components. You'll see these most often as `$input-btn-*` and `$input-*` variables.\n\n### Sass variables\n\n`$input-btn-*` variables are shared global variables between our [buttons]([[docsref:/components/buttons]]) and our form components. You'll find these frequently reassigned as values to other component-specific variables.\n\n\u003CScssDocs name=\"input-btn-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/overview.mdx","85fcf727e9350191","forms/overview.mdx","forms/input-group",{"id":641,"data":643,"body":645,"filePath":646,"digest":647,"legacyId":648,"deferredRender":139},{"description":644,"title":628,"toc":139},"Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs, custom selects, and custom file inputs.","## Basic example\n\nPlace one add-on or button on either side of an input. You may also place one on both sides of an input. Remember to place `\u003Clabel>`s outside the input group.\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\" id=\"basic-addon1\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-label=\"Username\" aria-describedby=\"basic-addon1\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-label=\"Recipient's username\" aria-describedby=\"basic-addon2\">\n \u003Cspan class=\"input-group-text\" id=\"basic-addon2\">@example.com\u003C/span>\n\u003C/div>\n\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"basic-url\" class=\"form-label\">Your vanity URL\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\" id=\"basic-addon3\">https://example.com/users/\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"basic-url\" aria-describedby=\"basic-addon3 basic-addon4\">\n \u003C/div>\n \u003Cdiv class=\"form-text\" id=\"basic-addon4\">Example help text goes outside the input group.\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\">$\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Amount (to the nearest dollar)\">\n \u003Cspan class=\"input-group-text\">.00\u003C/span>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-label=\"Username\">\n \u003Cspan class=\"input-group-text\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Server\" aria-label=\"Server\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\">With textarea\u003C/span>\n \u003Ctextarea class=\"form-control\" aria-label=\"With textarea\">\u003C/textarea>\n\u003C/div>`} />\n\n## Wrapping\n\nInput groups wrap by default via `flex-wrap: wrap` in order to accommodate custom form field validation within an input group. You may disable this with `.flex-nowrap`.\n\n\u003CExample code={`\u003Cdiv class=\"input-group flex-nowrap\">\n \u003Cspan class=\"input-group-text\" id=\"addon-wrapping\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Username\" aria-label=\"Username\" aria-describedby=\"addon-wrapping\">\n\u003C/div>`} />\n\n## Sizing\n\nAdd the relative form sizing classes to the `.input-group` itself and contents within will automatically resize—no need for repeating the form control size classes on each element.\n\n**Sizing on the individual input group elements isn't supported.**\n\n\u003CExample code={`\u003Cdiv class=\"input-group input-group-sm mb-3\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroup-sizing-sm\">Small\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Sizing example input\" aria-describedby=\"inputGroup-sizing-sm\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroup-sizing-default\">Default\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Sizing example input\" aria-describedby=\"inputGroup-sizing-default\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group input-group-lg\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroup-sizing-lg\">Large\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Sizing example input\" aria-describedby=\"inputGroup-sizing-lg\">\n\u003C/div>`} />\n\n## Checkboxes and radios\n\nPlace any checkbox or radio option within an input group's addon instead of text. We recommend adding `.mt-0` to the `.form-check-input` when there's no visible text next to the input.\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cdiv class=\"input-group-text\">\n \u003Cinput class=\"form-check-input mt-0\" type=\"checkbox\" value=\"\" aria-label=\"Checkbox for following text input\">\n \u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with checkbox\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\">\n \u003Cinput class=\"form-check-input mt-0\" type=\"radio\" value=\"\" aria-label=\"Radio button for following text input\">\n \u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with radio button\">\n\u003C/div>`} />\n\n## Multiple inputs\n\nWhile multiple `\u003Cinput>`s are supported visually, validation styles are only available for input groups with a single `\u003Cinput>`.\n\n\u003CExample code={`\u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\">First and last name\u003C/span>\n \u003Cinput type=\"text\" aria-label=\"First name\" class=\"form-control\">\n \u003Cinput type=\"text\" aria-label=\"Last name\" class=\"form-control\">\n\u003C/div>`} />\n\n## Multiple addons\n\nMultiple add-ons are supported and can be mixed with checkbox and radio input versions.\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cspan class=\"input-group-text\">$\u003C/span>\n \u003Cspan class=\"input-group-text\">0.00\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Dollar amount (with dot and two decimal places)\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Dollar amount (with dot and two decimal places)\">\n \u003Cspan class=\"input-group-text\">$\u003C/span>\n \u003Cspan class=\"input-group-text\">0.00\u003C/span>\n\u003C/div>`} />\n\n## Button addons\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\" id=\"button-addon1\">Button\u003C/button>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"\" aria-label=\"Example text with button addon\" aria-describedby=\"button-addon1\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-label=\"Recipient's username\" aria-describedby=\"button-addon2\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\" id=\"button-addon2\">Button\u003C/button>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"\" aria-label=\"Example text with two button addons\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Recipient's username\" aria-label=\"Recipient's username with two button addons\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\n## Buttons with dropdowns\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with dropdown button\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with dropdown button\">\n \u003Cbutton class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown\u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cbutton class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown\u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action before\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action before\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with 2 dropdown buttons\">\n \u003Cbutton class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown\u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## Segmented buttons\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">Action\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with segmented dropdown button\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cinput type=\"text\" class=\"form-control\" aria-label=\"Text input with segmented dropdown button\">\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">Action\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n \u003Cspan class=\"visually-hidden\">Toggle Dropdown\u003C/span>\n \u003C/button>\n \u003Cul class=\"dropdown-menu dropdown-menu-end\">\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Another action\u003C/a>\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Something else here\u003C/a>\u003C/li>\n \u003Cli>\u003Chr class=\"dropdown-divider\">\u003C/li>\n \u003Cli>\u003Ca class=\"dropdown-item\" href=\"#\">Separated link\u003C/a>\u003C/li>\n \u003C/ul>\n\u003C/div>`} />\n\n## Custom forms\n\nInput groups include support for custom selects and custom file inputs. Browser default versions of these are not supported.\n\n### Custom select\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Clabel class=\"input-group-text\" for=\"inputGroupSelect01\">Options\u003C/label>\n \u003Cselect class=\"form-select\" id=\"inputGroupSelect01\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cselect class=\"form-select\" id=\"inputGroupSelect02\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Clabel class=\"input-group-text\" for=\"inputGroupSelect02\">Options\u003C/label>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n \u003Cselect class=\"form-select\" id=\"inputGroupSelect03\" aria-label=\"Example select with button addon\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cselect class=\"form-select\" id=\"inputGroupSelect04\" aria-label=\"Example select with button addon\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\">Button\u003C/button>\n\u003C/div>`} />\n\n### Custom file input\n\n\u003CExample code={`\u003Cdiv class=\"input-group mb-3\">\n \u003Clabel class=\"input-group-text\" for=\"inputGroupFile01\">Upload\u003C/label>\n \u003Cinput type=\"file\" class=\"form-control\" id=\"inputGroupFile01\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cinput type=\"file\" class=\"form-control\" id=\"inputGroupFile02\">\n \u003Clabel class=\"input-group-text\" for=\"inputGroupFile02\">Upload\u003C/label>\n\u003C/div>\n\n\u003Cdiv class=\"input-group mb-3\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\" id=\"inputGroupFileAddon03\">Button\u003C/button>\n \u003Cinput type=\"file\" class=\"form-control\" id=\"inputGroupFile03\" aria-describedby=\"inputGroupFileAddon03\" aria-label=\"Upload\">\n\u003C/div>\n\n\u003Cdiv class=\"input-group\">\n \u003Cinput type=\"file\" class=\"form-control\" id=\"inputGroupFile04\" aria-describedby=\"inputGroupFileAddon04\" aria-label=\"Upload\">\n \u003Cbutton class=\"btn btn-outline-secondary\" type=\"button\" id=\"inputGroupFileAddon04\">Button\u003C/button>\n\u003C/div>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"input-group-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/input-group.mdx","a1c2e0335046e722","forms/input-group.mdx","forms/layout",{"id":649,"data":651,"body":653,"filePath":654,"digest":655,"legacyId":656,"deferredRender":139},{"description":652,"title":632,"toc":139},"Give your forms some structure—from inline to horizontal to custom grid implementations—with our form layout options.","## Forms\n\nEvery group of form fields should reside in a `\u003Cform>` element. Bootstrap provides no default styling for the `\u003Cform>` element, but there are some powerful browser features that are provided by default.\n\n- New to browser forms? Consider reviewing [the MDN form docs](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) for an overview and complete list of available attributes.\n- `\u003Cbutton>`s within a `\u003Cform>` default to `type=\"submit\"`, so strive to be specific and always include a `type`.\n\nSince Bootstrap applies `display: block` and `width: 100%` to almost all our form controls, forms will by default stack vertically. Additional classes can be used to vary this layout on a per-form basis.\n\n## Utilities\n\n[Margin utilities]([[docsref:/utilities/spacing]]) are the easiest way to add some structure to forms. They provide basic grouping of labels, controls, optional form text, and form validation messaging. We recommend sticking to `margin-bottom` utilities, and using a single direction throughout the form for consistency.\n\nFeel free to build your forms however you like, with `\u003Cfieldset>`s, `\u003Cdiv>`s, or nearly any other element.\n\n\u003CExample code={`\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formGroupExampleInput\" class=\"form-label\">Example label\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"formGroupExampleInput\" placeholder=\"Example input placeholder\">\n\u003C/div>\n\u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"formGroupExampleInput2\" class=\"form-label\">Another label\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"formGroupExampleInput2\" placeholder=\"Another input placeholder\">\n\u003C/div>`} />\n\n## Form grid\n\nMore complex forms can be built using our grid classes. Use these for form layouts that require multiple columns, varied widths, and additional alignment options. **Requires the `$enable-grid-classes` Sass variable to be enabled** (on by default).\n\n\u003CExample code={`\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"First name\" aria-label=\"First name\">\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Last name\" aria-label=\"Last name\">\n \u003C/div>\n\u003C/div>`} />\n\n## Gutters\n\nBy adding [gutter modifier classes]([[docsref:/layout/gutters]]), you can have control over the gutter width in as well the inline as block direction. **Also requires the `$enable-grid-classes` Sass variable to be enabled** (on by default).\n\n\u003CExample code={`\u003Cdiv class=\"row g-3\">\n \u003Cdiv class=\"col\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"First name\" aria-label=\"First name\">\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Last name\" aria-label=\"Last name\">\n \u003C/div>\n\u003C/div>`} />\n\nMore complex layouts can also be created with the grid system.\n\n\u003CExample code={`\u003Cform class=\"row g-3\">\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"inputEmail4\" class=\"form-label\">Email\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control\" id=\"inputEmail4\">\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"inputPassword4\" class=\"form-label\">Password\u003C/label>\n \u003Cinput type=\"password\" class=\"form-control\" id=\"inputPassword4\">\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Clabel for=\"inputAddress\" class=\"form-label\">Address\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inputAddress\" placeholder=\"1234 Main St\">\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Clabel for=\"inputAddress2\" class=\"form-label\">Address 2\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inputAddress2\" placeholder=\"Apartment, studio, or floor\">\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"inputCity\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inputCity\">\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"inputState\" class=\"form-label\">State\u003C/label>\n \u003Cselect id=\"inputState\" class=\"form-select\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"col-md-2\">\n \u003Clabel for=\"inputZip\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inputZip\">\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"gridCheck\">\n \u003Clabel class=\"form-check-label\" for=\"gridCheck\">\n Check me out\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Sign in\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Horizontal form\n\nCreate horizontal forms with the grid by adding the `.row` class to form groups and using the `.col-*-*` classes to specify the width of your labels and controls. Be sure to add `.col-form-label` to your `\u003Clabel>`s as well so they're vertically centered with their associated form controls.\n\nAt times, you maybe need to use margin or padding utilities to create that perfect alignment you need. For example, we've removed the `padding-top` on our stacked radio inputs label to better align the text baseline.\n\n\u003CExample code={`\u003Cform>\n \u003Cdiv class=\"row mb-3\">\n \u003Clabel for=\"inputEmail3\" class=\"col-sm-2 col-form-label\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"inputEmail3\">\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row mb-3\">\n \u003Clabel for=\"inputPassword3\" class=\"col-sm-2 col-form-label\">Password\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"password\" class=\"form-control\" id=\"inputPassword3\">\n \u003C/div>\n \u003C/div>\n \u003Cfieldset class=\"row mb-3\">\n \u003Clegend class=\"col-form-label col-sm-2 pt-0\">Radios\u003C/legend>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios1\" value=\"option1\" checked>\n \u003Clabel class=\"form-check-label\" for=\"gridRadios1\">\n First radio\n \u003C/label>\n \u003C/div>\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios2\" value=\"option2\">\n \u003Clabel class=\"form-check-label\" for=\"gridRadios2\">\n Second radio\n \u003C/label>\n \u003C/div>\n \u003Cdiv class=\"form-check disabled\">\n \u003Cinput class=\"form-check-input\" type=\"radio\" name=\"gridRadios\" id=\"gridRadios3\" value=\"option3\" disabled>\n \u003Clabel class=\"form-check-label\" for=\"gridRadios3\">\n Third disabled radio\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003C/fieldset>\n \u003Cdiv class=\"row mb-3\">\n \u003Cdiv class=\"col-sm-10 offset-sm-2\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"gridCheck1\">\n \u003Clabel class=\"form-check-label\" for=\"gridCheck1\">\n Example checkbox\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Sign in\u003C/button>\n\u003C/form>`} />\n\n### Horizontal form label sizing\n\nBe sure to use `.col-form-label-sm` or `.col-form-label-lg` to your `\u003Clabel>`s or `\u003Clegend>`s to correctly follow the size of `.form-control-lg` and `.form-control-sm`.\n\n\u003CExample code={`\u003Cdiv class=\"row mb-3\">\n \u003Clabel for=\"colFormLabelSm\" class=\"col-sm-2 col-form-label col-form-label-sm\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"email\" class=\"form-control form-control-sm\" id=\"colFormLabelSm\" placeholder=\"col-form-label-sm\">\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"row mb-3\">\n \u003Clabel for=\"colFormLabel\" class=\"col-sm-2 col-form-label\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"email\" class=\"form-control\" id=\"colFormLabel\" placeholder=\"col-form-label\">\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"row\">\n \u003Clabel for=\"colFormLabelLg\" class=\"col-sm-2 col-form-label col-form-label-lg\">Email\u003C/label>\n \u003Cdiv class=\"col-sm-10\">\n \u003Cinput type=\"email\" class=\"form-control form-control-lg\" id=\"colFormLabelLg\" placeholder=\"col-form-label-lg\">\n \u003C/div>\n\u003C/div>`} />\n\n## Column sizing\n\nAs shown in the previous examples, our grid system allows you to place any number of `.col`s within a `.row`. They'll split the available width equally between them. You may also pick a subset of your columns to take up more or less space, while the remaining `.col`s equally split the rest, with specific column classes like `.col-sm-7`.\n\n\u003CExample code={`\u003Cdiv class=\"row g-3\">\n \u003Cdiv class=\"col-sm-7\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"City\" aria-label=\"City\">\n \u003C/div>\n \u003Cdiv class=\"col-sm\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"State\" aria-label=\"State\">\n \u003C/div>\n \u003Cdiv class=\"col-sm\">\n \u003Cinput type=\"text\" class=\"form-control\" placeholder=\"Zip\" aria-label=\"Zip\">\n \u003C/div>\n\u003C/div>`} />\n\n## Auto-sizing\n\nThe example below uses a flexbox utility to vertically center the contents and changes `.col` to `.col-auto` so that your columns only take up as much space as needed. Put another way, the column sizes itself based on the contents.\n\n\u003CExample code={`\u003Cform class=\"row gy-2 gx-3 align-items-center\">\n \u003Cdiv class=\"col-auto\">\n \u003Clabel class=\"visually-hidden\" for=\"autoSizingInput\">Name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"autoSizingInput\" placeholder=\"Jane Doe\">\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Clabel class=\"visually-hidden\" for=\"autoSizingInputGroup\">Username\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"autoSizingInputGroup\" placeholder=\"Username\">\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Clabel class=\"visually-hidden\" for=\"autoSizingSelect\">Preference\u003C/label>\n \u003Cselect class=\"form-select\" id=\"autoSizingSelect\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"autoSizingCheck\">\n \u003Clabel class=\"form-check-label\" for=\"autoSizingCheck\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\nYou can then remix that once again with size-specific column classes.\n\n\u003CExample code={`\u003Cform class=\"row gx-3 gy-2 align-items-center\">\n \u003Cdiv class=\"col-sm-3\">\n \u003Clabel class=\"visually-hidden\" for=\"specificSizeInputName\">Name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"specificSizeInputName\" placeholder=\"Jane Doe\">\n \u003C/div>\n \u003Cdiv class=\"col-sm-3\">\n \u003Clabel class=\"visually-hidden\" for=\"specificSizeInputGroupUsername\">Username\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"specificSizeInputGroupUsername\" placeholder=\"Username\">\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-sm-3\">\n \u003Clabel class=\"visually-hidden\" for=\"specificSizeSelect\">Preference\u003C/label>\n \u003Cselect class=\"form-select\" id=\"specificSizeSelect\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"autoSizingCheck2\">\n \u003Clabel class=\"form-check-label\" for=\"autoSizingCheck2\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-auto\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Inline forms\n\nUse the `.row-cols-*` classes to create responsive horizontal layouts. By adding [gutter modifier classes]([[docsref:/layout/gutters]]), we'll have gutters in horizontal and vertical directions. On narrow mobile viewports, the `.col-12` helps stack the form controls and more. The `.align-items-center` aligns the form elements to the middle, making the `.form-check` align properly.\n\n\u003CExample code={`\u003Cform class=\"row row-cols-lg-auto g-3 align-items-center\">\n \u003Cdiv class=\"col-12\">\n \u003Clabel class=\"visually-hidden\" for=\"inlineFormInputGroupUsername\">Username\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cdiv class=\"input-group-text\">@\u003C/div>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"inlineFormInputGroupUsername\" placeholder=\"Username\">\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"col-12\">\n \u003Clabel class=\"visually-hidden\" for=\"inlineFormSelectPref\">Preference\u003C/label>\n \u003Cselect class=\"form-select\" id=\"inlineFormSelectPref\">\n \u003Coption selected>Choose...\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003C/div>\n\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" id=\"inlineFormCheck\">\n \u003Clabel class=\"form-check-label\" for=\"inlineFormCheck\">\n Remember me\n \u003C/label>\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"col-12\">\n \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Submit\u003C/button>\n \u003C/div>\n\u003C/form>`} />","src/content/docs/forms/layout.mdx","99ba926149fa95d8","forms/layout.mdx","getting-started/accessibility",{"id":657,"data":659,"body":662,"filePath":663,"digest":664,"legacyId":665,"deferredRender":139},{"description":660,"title":661,"toc":139},"A brief overview of Bootstrap's features and limitations for the creation of accessible content.","Accessibility","Bootstrap provides an easy-to-use framework of ready-made styles, layout tools, and interactive components, allowing developers to create websites and applications that are visually appealing, functionally rich, and accessible out of the box.\n\n## Overview and limitations\n\nThe overall accessibility of any project built with Bootstrap depends in large part on the author's markup, additional styling, and scripting they've included. However, provided that these have been implemented correctly, it should be perfectly possible to create websites and applications with Bootstrap that fulfill [\u003Cabbr title=\"Web Content Accessibility Guidelines\">WCAG\u003C/abbr> 2.2](https://www.w3.org/TR/WCAG/) (A/AA/AAA), [Section 508](https://www.section508.gov/), and similar accessibility standards and requirements.\n\n### Structural markup\n\nBootstrap's styling and layout can be applied to a wide range of markup structures. This documentation aims to provide developers with best practice examples to demonstrate the use of Bootstrap itself and illustrate appropriate semantic markup, including ways in which potential accessibility concerns can be addressed.\n\n### Interactive components\n\nBootstrap's interactive components—such as modal dialogs, dropdown menus, and custom tooltips—are designed to work for touch, mouse, and keyboard users. Through the use of relevant [\u003Cabbr title=\"Web Accessibility Initiative\">WAI\u003C/abbr>-\u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr>](https://www.w3.org/WAI/standards-guidelines/aria/) roles and attributes, these components should also be understandable and operable using assistive technologies (such as screen readers).\n\nBecause Bootstrap's components are purposely designed to be fairly generic, authors may need to include further \u003Cabbr title=\"Accessible Rich Internet Applications\">ARIA\u003C/abbr> roles and attributes, as well as JavaScript behavior, to more accurately convey the precise nature and functionality of their component. This is usually noted in the documentation.\n\n### Color contrast\n\nSome combinations of colors that currently make up Bootstrap's default palette—used throughout the framework for things such as button variations, alert variations, form validation indicators—may lead to *insufficient* color contrast (below the recommended [WCAG 2.2 text color contrast ratio of 4.5:1](https://www.w3.org/TR/WCAG/#contrast-minimum) and the [WCAG 2.2 non-text color contrast ratio of 3:1](https://www.w3.org/TR/WCAG/#non-text-contrast)), particularly when used against a light background. Authors are encouraged to test their specific uses of color and, where necessary, manually modify/extend these default colors to ensure adequate color contrast ratios.\n\n### Visually hidden content\n\nContent which should be visually hidden, but remain accessible to assistive technologies such as screen readers, can be styled using the `.visually-hidden` class. This can be useful in situations where additional visual information or cues (such as meaning denoted through the use of color) need to also be conveyed to non-visual users.\n\n```html\n\u003Cp class=\"text-danger\">\n \u003Cspan class=\"visually-hidden\">Danger: \u003C/span>\n This action is not reversible\n\u003C/p>\n```\n\nFor visually hidden interactive controls, such as traditional \"skip\" links, use the `.visually-hidden-focusable` class. This will ensure that the control becomes visible once focused (for sighted keyboard users). **Watch out, compared to the equivalent `.sr-only` and `.sr-only-focusable` classes in past versions, Bootstrap 5's `.visually-hidden-focusable` is a standalone class, and must not be used in combination with the `.visually-hidden` class.**\n\n```html\n\u003Ca class=\"visually-hidden-focusable\" href=\"#content\">Skip to main content\u003C/a>\n```\n\n### Reduced motion\n\nBootstrap includes support for the [`prefers-reduced-motion` media feature](https://www.w3.org/TR/mediaqueries-5/#prefers-reduced-motion). In browsers/environments that allow the user to specify their preference for reduced motion, most CSS transition effects in Bootstrap (for instance, when a modal dialog is opened or closed, or the sliding animation in carousels) will be disabled, and meaningful animations (such as spinners) will be slowed down.\n\nOn browsers that support `prefers-reduced-motion`, and where the user has *not* explicitly signaled that they'd prefer reduced motion (i.e. where `prefers-reduced-motion: no-preference`), Bootstrap enables smooth scrolling using the `scroll-behavior` property.\n\n## Additional resources\n\n- [Web Content Accessibility Guidelines (WCAG) 2.2](https://www.w3.org/TR/WCAG/)\n- [The A11Y Project](https://www.a11yproject.com/)\n- [MDN accessibility documentation](https://developer.mozilla.org/en-US/docs/Web/Accessibility)\n- [Tenon.io Accessibility Checker](https://tenon.io/)\n- [Color Contrast Analyser (CCA)](https://www.tpgi.com/color-contrast-checker/)\n- [\"HTML Codesniffer\" bookmarklet for identifying accessibility issues](https://github.com/squizlabs/HTML_CodeSniffer)\n- [Microsoft Accessibility Insights](https://accessibilityinsights.io/)\n- [Deque Axe testing tools](https://www.deque.com/axe/)\n- [Introduction to Web Accessibility](https://www.w3.org/WAI/fundamentals/accessibility-intro/)","src/content/docs/getting-started/accessibility.mdx","7297ba669fe1faac","getting-started/accessibility.mdx","forms/validation",{"id":666,"data":668,"body":673,"filePath":674,"digest":675,"legacyId":676,"deferredRender":139},{"description":669,"extra_js":670,"title":635,"toc":139},"Provide valuable, actionable feedback to your users with HTML5 form validation, via browser default behaviors or custom styles and JavaScript.",[671],{"async":139,"src":672},"[[docsref:/assets/js/validate-forms.js]]","import { getDocsRelativePath } from '@libs/path'\n\n\u003CCallout type=\"warning\">\nWe are aware that currently the client-side custom validation styles and tooltips are not accessible, since they are not exposed to assistive technologies. While we work on a solution, we'd recommend either using the server-side option or the default browser validation method.\n\u003C/Callout>\n\n## How it works\n\nHere's how form validation works with Bootstrap:\n\n- HTML form validation is applied via CSS's two pseudo-classes, `:invalid` and `:valid`. It applies to `\u003Cinput>`, `\u003Cselect>`, and `\u003Ctextarea>` elements.\n- Bootstrap scopes the `:invalid` and `:valid` styles to parent `.was-validated` class, usually applied to the `\u003Cform>`. Otherwise, any required field without a value shows up as invalid on page load. This way, you may choose when to activate them (typically after form submission is attempted).\n- To reset the appearance of the form (for instance, in the case of dynamic form submissions using Ajax), remove the `.was-validated` class from the `\u003Cform>` again after submission.\n- As a fallback, `.is-invalid` and `.is-valid` classes may be used instead of the pseudo-classes for [server-side validation](#server-side). They do not require a `.was-validated` parent class.\n- Due to constraints in how CSS works, we cannot (at present) apply styles to a `\u003Clabel>` that comes before a form control in the DOM without the help of custom JavaScript.\n- All modern browsers support the [constraint validation API](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-constraint-validation-api), a series of JavaScript methods for validating form controls.\n- Feedback messages may utilize the [browser defaults](#browser-defaults) (different for each browser, and unstylable via CSS) or our custom feedback styles with additional HTML and CSS.\n- You may provide custom validity messages with `setCustomValidity` in JavaScript.\n\nWith that in mind, consider the following demos for our custom form validation styles, optional server-side classes, and browser defaults.\n\n## Custom styles\n\nFor custom Bootstrap form validation messages, you'll need to add the `novalidate` boolean attribute to your `\u003Cform>`. This disables the browser default feedback tooltips, but still provides access to the form validation APIs in JavaScript. Try to submit the form below; our JavaScript will intercept the submit button and relay feedback to you. When attempting to submit, you'll see the `:invalid` and `:valid` styles applied to your form controls.\n\nCustom feedback styles apply custom colors, borders, focus styles, and background icons to better communicate feedback. Background icons for `\u003Cselect>`s are only available with `.form-select`, and not `.form-control`.\n\n\u003CExample code={`\u003Cform class=\"row g-3 needs-validation\" novalidate>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationCustom01\" class=\"form-label\">First name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustom01\" value=\"Mark\" required>\n \u003Cdiv class=\"valid-feedback\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationCustom02\" class=\"form-label\">Last name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustom02\" value=\"Otto\" required>\n \u003Cdiv class=\"valid-feedback\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationCustomUsername\" class=\"form-label\">Username\u003C/label>\n \u003Cdiv class=\"input-group has-validation\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroupPrepend\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustomUsername\" aria-describedby=\"inputGroupPrepend\" required>\n \u003Cdiv class=\"invalid-feedback\">\n Please choose a username.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"validationCustom03\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustom03\" required>\n \u003Cdiv class=\"invalid-feedback\">\n Please provide a valid city.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationCustom04\" class=\"form-label\">State\u003C/label>\n \u003Cselect class=\"form-select\" id=\"validationCustom04\" required>\n \u003Coption selected disabled value=\"\">Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003Cdiv class=\"invalid-feedback\">\n Please select a valid state.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationCustom05\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationCustom05\" required>\n \u003Cdiv class=\"invalid-feedback\">\n Please provide a valid zip.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"invalidCheck\" required>\n \u003Clabel class=\"form-check-label\" for=\"invalidCheck\">\n Agree to terms and conditions\n \u003C/label>\n \u003Cdiv class=\"invalid-feedback\">\n You must agree before submitting.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\">Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n\u003CCode containerClass=\"bd-example-snippet\" lang=\"js\" filePath={getDocsRelativePath('/static/docs/[version]/assets/js/validate-forms.js')} />\n\n## Browser defaults\n\nNot interested in custom validation feedback messages or writing JavaScript to change form behaviors? All good, you can use the browser defaults. Try submitting the form below. Depending on your browser and OS, you'll see a slightly different style of feedback.\n\nWhile these feedback styles cannot be styled with CSS, you can still customize the feedback text through JavaScript.\n\n\u003CExample code={`\u003Cform class=\"row g-3\">\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationDefault01\" class=\"form-label\">First name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefault01\" value=\"Mark\" required>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationDefault02\" class=\"form-label\">Last name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefault02\" value=\"Otto\" required>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationDefaultUsername\" class=\"form-label\">Username\u003C/label>\n \u003Cdiv class=\"input-group\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroupPrepend2\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefaultUsername\" aria-describedby=\"inputGroupPrepend2\" required>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"validationDefault03\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefault03\" required>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationDefault04\" class=\"form-label\">State\u003C/label>\n \u003Cselect class=\"form-select\" id=\"validationDefault04\" required>\n \u003Coption selected disabled value=\"\">Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationDefault05\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationDefault05\" required>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"invalidCheck2\" required>\n \u003Clabel class=\"form-check-label\" for=\"invalidCheck2\">\n Agree to terms and conditions\n \u003C/label>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\">Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Server-side\n\nWe recommend using client-side validation, but in case you require server-side validation, you can indicate invalid and valid form fields with `.is-invalid` and `.is-valid`. Note that `.invalid-feedback` is also supported with these classes.\n\nFor invalid fields, ensure that the invalid feedback/error message is associated with the relevant form field using `aria-describedby` (noting that this attribute allows more than one `id` to be referenced, in case the field already points to additional form text).\n\nTo fix [issues with border radius](https://github.com/twbs/bootstrap/issues/25110), input groups require an additional `.has-validation` class.\n\n\u003CExample code={`\u003Cform class=\"row g-3\">\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationServer01\" class=\"form-label\">First name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control is-valid\" id=\"validationServer01\" value=\"Mark\" required>\n \u003Cdiv class=\"valid-feedback\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationServer02\" class=\"form-label\">Last name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control is-valid\" id=\"validationServer02\" value=\"Otto\" required>\n \u003Cdiv class=\"valid-feedback\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4\">\n \u003Clabel for=\"validationServerUsername\" class=\"form-label\">Username\u003C/label>\n \u003Cdiv class=\"input-group has-validation\">\n \u003Cspan class=\"input-group-text\" id=\"inputGroupPrepend3\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control is-invalid\" id=\"validationServerUsername\" aria-describedby=\"inputGroupPrepend3 validationServerUsernameFeedback\" required>\n \u003Cdiv id=\"validationServerUsernameFeedback\" class=\"invalid-feedback\">\n Please choose a username.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-6\">\n \u003Clabel for=\"validationServer03\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control is-invalid\" id=\"validationServer03\" aria-describedby=\"validationServer03Feedback\" required>\n \u003Cdiv id=\"validationServer03Feedback\" class=\"invalid-feedback\">\n Please provide a valid city.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationServer04\" class=\"form-label\">State\u003C/label>\n \u003Cselect class=\"form-select is-invalid\" id=\"validationServer04\" aria-describedby=\"validationServer04Feedback\" required>\n \u003Coption selected disabled value=\"\">Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003Cdiv id=\"validationServer04Feedback\" class=\"invalid-feedback\">\n Please select a valid state.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3\">\n \u003Clabel for=\"validationServer05\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control is-invalid\" id=\"validationServer05\" aria-describedby=\"validationServer05Feedback\" required>\n \u003Cdiv id=\"validationServer05Feedback\" class=\"invalid-feedback\">\n Please provide a valid zip.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cdiv class=\"form-check\">\n \u003Cinput class=\"form-check-input is-invalid\" type=\"checkbox\" value=\"\" id=\"invalidCheck3\" aria-describedby=\"invalidCheck3Feedback\" required>\n \u003Clabel class=\"form-check-label\" for=\"invalidCheck3\">\n Agree to terms and conditions\n \u003C/label>\n \u003Cdiv id=\"invalidCheck3Feedback\" class=\"invalid-feedback\">\n You must agree before submitting.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\">Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Supported elements\n\nValidation styles are available for the following form controls and components:\n\n- `\u003Cinput>`s and `\u003Ctextarea>`s with `.form-control` (including up to one `.form-control` in input groups)\n- `\u003Cselect>`s with `.form-select`\n- `.form-check`s\n\n\u003CExample code={`\u003Cform class=\"was-validated\">\n \u003Cdiv class=\"mb-3\">\n \u003Clabel for=\"validationTextarea\" class=\"form-label\">Textarea\u003C/label>\n \u003Ctextarea class=\"form-control\" id=\"validationTextarea\" placeholder=\"Required example textarea\" required>\u003C/textarea>\n \u003Cdiv class=\"invalid-feedback\">\n Please enter a message in the textarea.\n \u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"form-check mb-3\">\n \u003Cinput type=\"checkbox\" class=\"form-check-input\" id=\"validationFormCheck1\" required>\n \u003Clabel class=\"form-check-label\" for=\"validationFormCheck1\">Check this checkbox\u003C/label>\n \u003Cdiv class=\"invalid-feedback\">Example invalid feedback text\u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"form-check\">\n \u003Cinput type=\"radio\" class=\"form-check-input\" id=\"validationFormCheck2\" name=\"radio-stacked\" required>\n \u003Clabel class=\"form-check-label\" for=\"validationFormCheck2\">Toggle this radio\u003C/label>\n \u003C/div>\n \u003Cdiv class=\"form-check mb-3\">\n \u003Cinput type=\"radio\" class=\"form-check-input\" id=\"validationFormCheck3\" name=\"radio-stacked\" required>\n \u003Clabel class=\"form-check-label\" for=\"validationFormCheck3\">Or toggle this other radio\u003C/label>\n \u003Cdiv class=\"invalid-feedback\">More example invalid feedback text\u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"mb-3\">\n \u003Cselect class=\"form-select\" required aria-label=\"select example\">\n \u003Coption value=\"\">Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n \u003C/select>\n \u003Cdiv class=\"invalid-feedback\">Example invalid select feedback\u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"mb-3\">\n \u003Cinput type=\"file\" class=\"form-control\" aria-label=\"file example\" required>\n \u003Cdiv class=\"invalid-feedback\">Example invalid form file feedback\u003C/div>\n \u003C/div>\n\n \u003Cdiv class=\"mb-3\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\" disabled>Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## Tooltips\n\nIf your form layout allows it, you can swap the `.{valid|invalid}-feedback` classes for `.{valid|invalid}-tooltip` classes to display validation feedback in a styled tooltip. Be sure to have a parent with `position: relative` on it for tooltip positioning. In the example below, our column classes have this already, but your project may require an alternative setup.\n\n\u003CExample code={`\u003Cform class=\"row g-3 needs-validation\" novalidate>\n \u003Cdiv class=\"col-md-4 position-relative\">\n \u003Clabel for=\"validationTooltip01\" class=\"form-label\">First name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltip01\" value=\"Mark\" required>\n \u003Cdiv class=\"valid-tooltip\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4 position-relative\">\n \u003Clabel for=\"validationTooltip02\" class=\"form-label\">Last name\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltip02\" value=\"Otto\" required>\n \u003Cdiv class=\"valid-tooltip\">\n Looks good!\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-4 position-relative\">\n \u003Clabel for=\"validationTooltipUsername\" class=\"form-label\">Username\u003C/label>\n \u003Cdiv class=\"input-group has-validation\">\n \u003Cspan class=\"input-group-text\" id=\"validationTooltipUsernamePrepend\">@\u003C/span>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltipUsername\" aria-describedby=\"validationTooltipUsernamePrepend\" required>\n \u003Cdiv class=\"invalid-tooltip\">\n Please choose a unique and valid username.\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-6 position-relative\">\n \u003Clabel for=\"validationTooltip03\" class=\"form-label\">City\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltip03\" required>\n \u003Cdiv class=\"invalid-tooltip\">\n Please provide a valid city.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3 position-relative\">\n \u003Clabel for=\"validationTooltip04\" class=\"form-label\">State\u003C/label>\n \u003Cselect class=\"form-select\" id=\"validationTooltip04\" required>\n \u003Coption selected disabled value=\"\">Choose...\u003C/option>\n \u003Coption>...\u003C/option>\n \u003C/select>\n \u003Cdiv class=\"invalid-tooltip\">\n Please select a valid state.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-md-3 position-relative\">\n \u003Clabel for=\"validationTooltip05\" class=\"form-label\">Zip\u003C/label>\n \u003Cinput type=\"text\" class=\"form-control\" id=\"validationTooltip05\" required>\n \u003Cdiv class=\"invalid-tooltip\">\n Please provide a valid zip.\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-12\">\n \u003Cbutton class=\"btn btn-primary\" type=\"submit\">Submit form\u003C/button>\n \u003C/div>\n\u003C/form>`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.3.0\"/>\n\nAs part of Bootstrap's evolving CSS variables approach, forms now use local CSS variables for validation for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.\n\n\u003CScssDocs name=\"root-form-validation-variables\" file=\"scss/_root.scss\" />\n\nThese variables are also color mode adaptive, meaning they change color while in dark mode.\n\n### Sass variables\n\n\u003CScssDocs name=\"form-feedback-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"form-validation-colors\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"form-validation-colors-dark\" file=\"scss/_variables-dark.scss\" />\n\n### Sass mixins\n\nTwo mixins are combined, through our [loop](#sass-loops), to generate our form validation feedback styles.\n\n\u003CScssDocs name=\"form-validation-mixins\" file=\"scss/mixins/_forms.scss\" />\n\n### Sass maps\n\nThis is the validation Sass map from `_variables.scss`. Override or extend this to generate different or additional states.\n\n\u003CScssDocs name=\"form-validation-states\" file=\"scss/_variables.scss\" />\n\nMaps of `$form-validation-states` can contain three optional parameters to override tooltips and focus styles.\n\n### Sass loops\n\nUsed to iterate over `$form-validation-states` map values to generate our validation styles. Any modifications to the above Sass map will be reflected in your compiled CSS via this loop.\n\n\u003CScssDocs name=\"form-validation-states-loop\" file=\"scss/forms/_validation.scss\" />\n\n### Customizing\n\nValidation states can be customized via Sass with the `$form-validation-states` map. Located in our `_variables.scss` file, this Sass map is how we generate the default `valid`/`invalid` validation states. Included is a nested map for customizing each state's color, icon, tooltip color, and focus shadow. While no other states are supported by browsers, those using custom styles can easily add more complex form feedback.","src/content/docs/forms/validation.mdx","44adadb296886ccc","forms/validation.mdx","forms/range",{"id":677,"data":679,"body":681,"filePath":682,"digest":683,"legacyId":684,"deferredRender":139},{"description":680,"title":625,"toc":139},"Use our custom range inputs for consistent cross-browser styling and built-in customization.","## Overview\n\nCreate custom `\u003Cinput type=\"range\">` controls with `.form-range`. The track (the background) and thumb (the value) are both styled to appear the same across browsers. As only Firefox supports \"filling\" their track from the left or right of the thumb as a means to visually indicate progress, we do not currently support it.\n\n\u003CExample code={`\u003Clabel for=\"customRange1\" class=\"form-label\">Example range\u003C/label>\n\u003Cinput type=\"range\" class=\"form-range\" id=\"customRange1\">`} />\n\n## Disabled\n\nAdd the `disabled` boolean attribute on an input to give it a grayed out appearance, remove pointer events, and prevent focusing.\n\n\u003CExample code={`\u003Clabel for=\"disabledRange\" class=\"form-label\">Disabled range\u003C/label>\n\u003Cinput type=\"range\" class=\"form-range\" id=\"disabledRange\" disabled>`} />\n\n## Min and max\n\nRange inputs have implicit values for `min` and `max`—`0` and `100`, respectively. You may specify new values for those using the `min` and `max` attributes.\n\n\u003CExample code={`\u003Clabel for=\"customRange2\" class=\"form-label\">Example range\u003C/label>\n\u003Cinput type=\"range\" class=\"form-range\" min=\"0\" max=\"5\" id=\"customRange2\">`} />\n\n## Steps\n\nBy default, range inputs \"snap\" to integer values. To change this, you can specify a `step` value. In the example below, we double the number of steps by using `step=\"0.5\"`.\n\n\u003CExample code={`\u003Clabel for=\"customRange3\" class=\"form-label\">Example range\u003C/label>\n\u003Cinput type=\"range\" class=\"form-range\" min=\"0\" max=\"5\" step=\"0.5\" id=\"customRange3\">`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"form-range-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/range.mdx","b9f76cb9529cddf9","forms/range.mdx","forms/select",{"id":685,"data":687,"body":689,"filePath":690,"digest":691,"legacyId":692,"deferredRender":139},{"description":688,"title":619,"toc":139},"Customize the native `\u003Cselect>`s with custom CSS that changes the element's initial appearance.","## Default\n\nCustom `\u003Cselect>` menus need only a custom class, `.form-select` to trigger the custom styles. Custom styles are limited to the `\u003Cselect>`'s initial appearance and cannot modify the `\u003Coption>`s due to browser limitations.\n\n\u003CExample code={`\u003Cselect class=\"form-select\" aria-label=\"Default select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\n## Sizing\n\nYou may also choose from small and large custom selects to match our similarly sized text inputs.\n\n\u003CExample code={`\u003Cselect class=\"form-select form-select-lg mb-3\" aria-label=\"Large select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>\n\n\u003Cselect class=\"form-select form-select-sm\" aria-label=\"Small select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\nThe `multiple` attribute is also supported:\n\n\u003CExample code={`\u003Cselect class=\"form-select\" multiple aria-label=\"Multiple select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\nAs is the `size` attribute:\n\n\u003CExample code={`\u003Cselect class=\"form-select\" size=\"3\" aria-label=\"Size 3 select example\">\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\n## Disabled\n\nAdd the `disabled` boolean attribute on a select to give it a grayed out appearance and remove pointer events.\n\n\u003CExample code={`\u003Cselect class=\"form-select\" aria-label=\"Disabled select example\" disabled>\n \u003Coption selected>Open this select menu\u003C/option>\n \u003Coption value=\"1\">One\u003C/option>\n \u003Coption value=\"2\">Two\u003C/option>\n \u003Coption value=\"3\">Three\u003C/option>\n\u003C/select>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"form-select-variables\" file=\"scss/_variables.scss\" />","src/content/docs/forms/select.mdx","b86bc209d7512ae1","forms/select.mdx","getting-started/best-practices",{"id":693,"data":695,"body":698,"filePath":699,"digest":700,"legacyId":701,"deferredRender":139},{"description":696,"title":697},"Learn about some of the best practices we've gathered from years of working on and using Bootstrap.","Best practices","We've designed and developed Bootstrap to work in a number of environments. Here are some of the best practices we've gathered from years of working on and using it ourselves.\n\n\u003CCallout>\n**Heads up!** This copy is a work in progress.\n\u003C/Callout>\n\n### General outline\n\n- Working with CSS\n- Working with Sass files\n- Building new CSS components\n- Working with flexbox\n- Ask in [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions)","src/content/docs/getting-started/best-practices.mdx","9554737dfd91abde","getting-started/best-practices.mdx","getting-started/browsers-devices",{"id":702,"data":704,"body":707,"filePath":708,"digest":709,"legacyId":710,"deferredRender":139},{"description":705,"title":706,"toc":139},"Learn about the browsers and devices, from modern to old, that are supported by Bootstrap, including known quirks and bugs for each.","Browsers and devices","## Supported browsers\n\nBootstrap supports the **latest, stable releases** of all major browsers and platforms.\n\nAlternative browsers which use the latest version of WebKit, Blink, or Gecko, whether directly or via the platform's web view API, are not explicitly supported. However, Bootstrap should (in most cases) display and function correctly in these browsers as well. More specific support information is provided below.\n\nYou can find our supported range of browsers and their versions [in our `.browserslistrc file`]([[config:repo]]/blob/v[[config:current_version]]/.browserslistrc):\n\n\u003CCode lang=\"plaintext\" filePath=\".browserslistrc\" />\n\nWe use [Autoprefixer](https://github.com/postcss/autoprefixer) to handle intended browser support via CSS prefixes, which uses [Browserslist](https://github.com/browserslist/browserslist) to manage these browser versions. Consult their documentation for how to integrate these tools into your projects.\n\n### Mobile devices\n\nGenerally speaking, Bootstrap supports the latest versions of each major platform's default browsers. Note that proxy browsers (such as Opera Mini, Opera Mobile's Turbo mode, UC Browser Mini, Amazon Silk) are not supported.\n\n\u003CBsTable class=\"table\">\n| | Chrome | Firefox | Safari | Android Browser & WebView |\n| --- | --- | --- | --- | --- |\n| **Android** | Supported | Supported | \u003Cspan class=\"text-body-secondary\">—\u003C/span> | v6.0+ |\n| **iOS** | Supported | Supported | Supported | \u003Cspan class=\"text-body-secondary\">—\u003C/span> |\n\u003C/BsTable>\n\n### Desktop browsers\n\nSimilarly, the latest versions of most desktop browsers are supported.\n\n\u003CBsTable class=\"table\">\n| | Chrome | Firefox | Microsoft Edge | Opera | Safari |\n| --- | --- | --- | --- | --- | --- |\n| **Mac** | Supported | Supported | Supported | Supported | Supported |\n| **Windows** | Supported | Supported | Supported | Supported | \u003Cspan class=\"text-body-secondary\">—\u003C/span> |\n\u003C/BsTable>\n\nFor Firefox, in addition to the latest normal stable release, we also support the latest [Extended Support Release (ESR)](https://www.mozilla.org/en-US/firefox/enterprise/) version of Firefox.\n\nUnofficially, Bootstrap should look and behave well enough in Chromium and Chrome for Linux, and Firefox for Linux, though they are not officially supported.\n\n## Internet Explorer\n\nInternet Explorer is not supported. **If you require Internet Explorer support, please use Bootstrap v4.**\n\n## Modals and dropdowns on mobile\n\n### Overflow and scrolling\n\nSupport for `overflow: hidden;` on the `\u003Cbody>` element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices' browsers, the `\u003Cbody>` content will begin to scroll. See [Chrome bug #175502](https://issues.chromium.org/issues/40301599) (fixed in Chrome v40) and [WebKit bug #153852](https://bugs.webkit.org/show_bug.cgi?id=153852).\n\n### iOS text fields and scrolling\n\nAs of iOS 9.2, while a modal is open, if the initial touch of a scroll gesture is within the boundary of a textual `\u003Cinput>` or a `\u003Ctextarea>`, the `\u003Cbody>` content underneath the modal will be scrolled instead of the modal itself. See [WebKit bug #153856](https://bugs.webkit.org/show_bug.cgi?id=153856).\n\n### Navbar Dropdowns\n\nThe `.dropdown-backdrop` element isn't used on iOS in the nav because of the complexity of z-indexing. Thus, to close dropdowns in navbars, you must directly click the dropdown element (or [any other element which will fire a click event in iOS](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile)).\n\n## Browser zooming\n\nPage zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.\n\n## Validators\n\nIn order to provide the best possible experience to old and buggy browsers, Bootstrap uses [CSS browser hacks](http://browserhacks.com/) in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.\n\nThese validation warnings don't matter in practice since the non-hacky portion of our CSS does fully validate and the hacky portions don't interfere with the proper functioning of the non-hacky portion, hence why we deliberately ignore these particular warnings.\n\nOur HTML docs likewise have some trivial and inconsequential HTML validation warnings due to our inclusion of a workaround for [a certain Firefox bug](https://bugzilla.mozilla.org/show_bug.cgi?id=654072).","src/content/docs/getting-started/browsers-devices.mdx","9d81f7891458ea64","getting-started/browsers-devices.mdx","getting-started/contents",{"id":711,"data":713,"body":716,"filePath":717,"digest":718,"legacyId":719,"deferredRender":139},{"description":714,"title":715,"toc":139},"Discover what's included in Bootstrap, including our compiled and source code flavors.","Contents","## Compiled Bootstrap\n\nOnce downloaded, unzip the compressed folder and you'll see something like this:\n\n{/* NOTE: This info is intentionally duplicated in the README. Copy any changes made here over to the README too, but be sure to keep in mind to add the `dist` folder. */}\n\n```text\nbootstrap/\n├── css/\n│ ├── bootstrap-grid.css\n│ ├── bootstrap-grid.css.map\n│ ├── bootstrap-grid.min.css\n│ ├── bootstrap-grid.min.css.map\n│ ├── bootstrap-grid.rtl.css\n│ ├── bootstrap-grid.rtl.css.map\n│ ├── bootstrap-grid.rtl.min.css\n│ ├── bootstrap-grid.rtl.min.css.map\n│ ├── bootstrap-reboot.css\n│ ├── bootstrap-reboot.css.map\n│ ├── bootstrap-reboot.min.css\n│ ├── bootstrap-reboot.min.css.map\n│ ├── bootstrap-reboot.rtl.css\n│ ├── bootstrap-reboot.rtl.css.map\n│ ├── bootstrap-reboot.rtl.min.css\n│ ├── bootstrap-reboot.rtl.min.css.map\n│ ├── bootstrap-utilities.css\n│ ├── bootstrap-utilities.css.map\n│ ├── bootstrap-utilities.min.css\n│ ├── bootstrap-utilities.min.css.map\n│ ├── bootstrap-utilities.rtl.css\n│ ├── bootstrap-utilities.rtl.css.map\n│ ├── bootstrap-utilities.rtl.min.css\n│ ├── bootstrap-utilities.rtl.min.css.map\n│ ├── bootstrap.css\n│ ├── bootstrap.css.map\n│ ├── bootstrap.min.css\n│ ├── bootstrap.min.css.map\n│ ├── bootstrap.rtl.css\n│ ├── bootstrap.rtl.css.map\n│ ├── bootstrap.rtl.min.css\n│ └── bootstrap.rtl.min.css.map\n└── js/\n ├── bootstrap.bundle.js\n ├── bootstrap.bundle.js.map\n ├── bootstrap.bundle.min.js\n ├── bootstrap.bundle.min.js.map\n ├── bootstrap.esm.js\n ├── bootstrap.esm.js.map\n ├── bootstrap.esm.min.js\n ├── bootstrap.esm.min.js.map\n ├── bootstrap.js\n ├── bootstrap.js.map\n ├── bootstrap.min.js\n └── bootstrap.min.js.map\n```\n\nThis is the most basic form of Bootstrap: compiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). Source maps](https://web.dev/articles/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/docs/v2/).\n\n### CSS files\n\nBootstrap includes a handful of options for including some or all of our compiled CSS.\n\n\u003CBsTable class=\"table\">\n| CSS files | Layout | Content | Components | Utilities |\n| --- | --- | --- | --- | --- |\n| `bootstrap.css`\u003Cbr/> `bootstrap.min.css`\u003Cbr/> `bootstrap.rtl.css`\u003Cbr/> `bootstrap.rtl.min.css` | Included | Included | Included | Included |\n| `bootstrap-grid.css`\u003Cbr/> `bootstrap-grid.rtl.css`\u003Cbr/> `bootstrap-grid.min.css`\u003Cbr/> `bootstrap-grid.rtl.min.css` | [Only grid system]([[docsref:/layout/grid]]) | — | — | [Only flex utilities]([[docsref:/utilities/flex]]) |\n| `bootstrap-utilities.css`\u003Cbr/> `bootstrap-utilities.rtl.css`\u003Cbr/> `bootstrap-utilities.min.css`\u003Cbr/> `bootstrap-utilities.rtl.min.css` | — | — | — | Included |\n| `bootstrap-reboot.css`\u003Cbr/> `bootstrap-reboot.rtl.css`\u003Cbr/> `bootstrap-reboot.min.css`\u003Cbr/> `bootstrap-reboot.rtl.min.css` | — | [Only Reboot]([[docsref:/content/reboot]]) | — | — |\n\u003C/BsTable>\n\n### JS files\n\nSimilarly, we have options for including some or all of our compiled JavaScript.\n\n\u003CBsTable class=\"table\">\n| JS Files | Popper |\n| --- | --- |\n| `bootstrap.bundle.js`\u003Cbr/> `bootstrap.bundle.min.js`\u003Cbr/> | Included |\n| `bootstrap.js`\u003Cbr/> `bootstrap.min.js`\u003Cbr/> | – |\n\u003C/BsTable>\n\n## Bootstrap source code\n\nThe Bootstrap source code download includes the compiled CSS and JavaScript assets, along with source Sass, JavaScript, and documentation. More specifically, it includes the following and more:\n\n```text\nbootstrap/\n├── dist/\n│ ├── css/\n│ └── js/\n├── site/\n│ └──content/\n│ └── docs/\n│ └── [[config:docs_version]]/\n│ └── examples/\n├── js/\n└── scss/\n```\n\nThe `scss/` and `js/` are the source code for our CSS and JavaScript. The `dist/` folder includes everything listed in the compiled download section above. The `site/content/docs/` folder includes the source code for our hosted documentation, including our live examples of Bootstrap usage.\n\nBeyond that, any other included file provides support for packages, license information, and development.","src/content/docs/getting-started/contents.mdx","89c302ad293a57d7","getting-started/contents.mdx","getting-started/contribute",{"id":720,"data":722,"body":727,"filePath":728,"digest":729,"legacyId":730,"deferredRender":139},{"added":723,"aliases":724,"description":725,"title":726,"toc":139},{"show_badge":325,"version":499},"/docs/[[config:docs_version]]/getting-started/build-tools/","Help develop Bootstrap with our documentation build scripts and tests.","Contribute","## Tooling setup\n\nBootstrap uses [npm scripts](https://docs.npmjs.com/misc/scripts/) to build the documentation and compile source files. Our [package.json]([[config:repo]]/blob/v[[config:current_version]]/package.json) houses these scripts for compiling code, running tests, and more. These aren't intended for use outside our repository and documentation.\n\nTo use our build system and run our documentation locally, you'll need a copy of Bootstrap's source files and Node. Follow these steps and you should be ready to rock:\n\n1. [Download and install Node.js](https://nodejs.org/en/download/), which we use to manage our dependencies.\n2. Either [download Bootstrap's sources]([[config:download.source]]) or fork and clone [Bootstrap's repository]([[config:repo]]).\n3. Navigate to the root `/bootstrap` directory and run `npm install` to install our local dependencies listed in [package.json]([[config:repo]]/blob/v[[config:current_version]]/package.json).\n\nWhen completed, you'll be able to run the various commands provided from the command line.\n\n## Using npm scripts\n\nOur [package.json]([[config:repo]]/blob/v[[config:current_version]]/package.json) includes numerous tasks for developing the project. Run `npm run` to see all the npm scripts in your terminal. **Primary tasks include:**\n\n\u003CBsTable>\n| Task | Description |\n| --- | --- |\n| `npm start` | Compiles CSS and JavaScript, builds the documentation, and starts a local server. |\n| `npm run dist` | Creates the `dist/` directory with compiled files. Uses [Sass](https://sass-lang.com/), [Autoprefixer](https://github.com/postcss/autoprefixer), and [terser](https://github.com/terser/terser). |\n| `npm test` | Runs tests locally after running `npm run dist` |\n| `npm run docs-serve` | Builds and runs the documentation locally. |\n\u003C/BsTable>\n\n\u003CCallout name=\"info-npm-starter\" />\n\n## Sass\n\nBootstrap uses [Dart Sass](https://sass-lang.com/dart-sass/) for compiling our Sass source files into CSS files (included in our build process), and we recommend you do the same if you're compiling Sass using your own asset pipeline. We previously used Node Sass for Bootstrap v4, but LibSass and packages built on top of it, including Node Sass, are now [deprecated](https://sass-lang.com/blog/libsass-is-deprecated/).\n\nDart Sass uses a rounding precision of 10 and for efficiency reasons does not allow adjustment of this value. We don't lower this precision during further processing of our generated CSS, such as during minification, but if you chose to do so we recommend maintaining a precision of at least 6 to prevent issues with browser rounding.\n\n## Autoprefixer\n\nBootstrap uses [Autoprefixer](https://github.com/postcss/autoprefixer) (included in our build process) to automatically add vendor prefixes to some CSS properties at build time. Doing so saves us time and code by allowing us to write key parts of our CSS a single time while eliminating the need for vendor mixins like those found in v3.\n\nWe maintain the list of browsers supported through Autoprefixer in a separate file within our GitHub repository. See [.browserslistrc]([[config:repo]]/blob/v[[config:current_version]]/.browserslistrc) for details.\n\n## RTLCSS\n\nBootstrap uses [RTLCSS](https://rtlcss.com/) to process compiled CSS and convert them to RTL – basically replacing horizontal direction aware properties (e.g. `padding-left`) with their opposite. It allows us only write our CSS a single time and make minor tweaks using RTLCSS [control](https://rtlcss.com/learn/usage-guide/control-directives/) and [value](https://rtlcss.com/learn/usage-guide/value-directives/) directives.\n\n## Local documentation\n\nRunning our documentation locally requires the use of Astro. Astro is a modern static site generator that allows us to build our documentation with a combination of Markdown and React components. Here's how to get it started:\n\n1. Run through the [tooling setup](#tooling-setup) above to install all dependencies.\n2. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line.\n3. Open `http://localhost:4321/` in your browser, and voilà.\n\nLearn more about using Astro by reading its [documentation](https://docs.astro.build/en/getting-started/).\n\n## Troubleshooting\n\nShould you encounter problems with installing dependencies, uninstall all previous dependency versions (global and local). Then, rerun `npm install`.","src/content/docs/getting-started/contribute.mdx","8bc124b03a3fa880","getting-started/contribute.mdx","getting-started/download",{"id":731,"data":733,"body":736,"filePath":737,"digest":738,"legacyId":739,"deferredRender":139},{"description":734,"title":735,"toc":139},"Download Bootstrap to get the compiled CSS and JavaScript, source code, or include it with your favorite package managers like npm, RubyGems, and more.","Download","## Compiled CSS and JS\n\nDownload ready-to-use compiled code for **Bootstrap v[[config:current_version]]** to easily drop into your project, which includes:\n\n- Compiled and minified CSS bundles (see [CSS files comparison]([[docsref:/getting-started/contents#css-files]]))\n- Compiled and minified JavaScript plugins (see [JS files comparison]([[docsref:/getting-started/contents#js-files]]))\n\nThis doesn't include documentation, source files, or any optional JavaScript dependencies like Popper.\n\n\u003Ca href=\"[[config:download.dist]]\" class=\"btn btn-bd-primary\">Download\u003C/a>\n\n## Source files\n\nCompile Bootstrap with your own asset pipeline by downloading our source Sass, JavaScript, and documentation files. This option requires some additional tooling:\n\n- [Sass compiler]([[docsref:/getting-started/contribute#sass]]) for compiling Sass source files into CSS files\n- [Autoprefixer](https://github.com/postcss/autoprefixer) for CSS vendor prefixing\n\nShould you require our full set of [build tools]([[docsref:/getting-started/contribute#tooling-setup]]), they are included for developing Bootstrap and its docs, but they're likely unsuitable for your own purposes.\n\n\u003Ca href=\"[[config:download.source]]\" class=\"btn btn-bd-primary\">Download source\u003C/a>\n\n## Examples\n\nIf you want to download and examine our [examples]([[docsref:/examples]]), you can grab the already built examples:\n\n\u003Ca href=\"[[config:download.dist_examples]]\" class=\"btn btn-bd-primary\">Download Examples\u003C/a>\n\n## CDN via jsDelivr\n\nSkip the download with [jsDelivr](https://www.jsdelivr.com/) to deliver cached version of Bootstrap's compiled CSS and JS to your project.\n\n```html\n\u003Clink href=\"[[config:cdn.css]]\" rel=\"stylesheet\" integrity=\"[[config:cdn.css_hash]]\" crossorigin=\"anonymous\">\n\u003Cscript src=\"[[config:cdn.js_bundle]]\" integrity=\"[[config:cdn.js_bundle_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n```\n\nIf you're using our compiled JavaScript and prefer to include Popper separately, add Popper before our JS, via a CDN preferably.\n\n```html\n\u003Cscript src=\"[[config:cdn.popper]]\" integrity=\"[[config:cdn.popper_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n\u003Cscript src=\"[[config:cdn.js]]\" integrity=\"[[config:cdn.js_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n```\n\n### Alternative CDNs\n\nWe recommend [jsDelivr](https://www.jsdelivr.com/) and use it ourselves in our documentation. However, in some cases—like in some specific countries or environments—you may need to use other CDN providers like [cdnjs](https://cdnjs.com/) or [unpkg](https://unpkg.com/).\n\nYou'll find the same files on these CDN providers, albeit with different URLs. With cdnjs, you can [use this direct Bootstrap package link](https://cdnjs.com/libraries/bootstrap) to copy and paste ready-to-use HTML snippets for each dist file from any version of Bootstrap.\n\n\u003CCallout type=\"warning\">\n**If the SRI hashes differ for a given file, you shouldn't use the files from that CDN, because it means that the file was modified by someone else.**\n\u003C/Callout>\n\nNote that you should compare same length hashes, e.g. `sha384` with `sha384`, otherwise it's expected for them to be different.\nAs such, you can use an online tool like [SRI Hash Generator](https://www.srihash.org/) to make sure that the hashes are the same for a given file.\nAlternatively, assuming you have OpenSSL installed, you can achieve the same from the CLI, for example:\n\n```sh\nopenssl dgst -sha384 -binary bootstrap.min.js | openssl base64 -A\n```\n\n## Package managers\n\nPull in Bootstrap's **source files** into nearly any project with some of the most popular package managers. No matter the package manager, Bootstrap will **require a [Sass compiler]([[docsref:/getting-started/contribute#sass]]) and [Autoprefixer](https://github.com/postcss/autoprefixer)** for a setup that matches our official compiled versions.\n\n### npm\n\nInstall Bootstrap in your Node.js powered apps with [the npm package](https://www.npmjs.com/package/bootstrap):\n\n```sh\nnpm install bootstrap@[[config:current_version]]\n```\n\n`const bootstrap = require('bootstrap')` or `import bootstrap from 'bootstrap'` will load all of Bootstrap's plugins onto a `bootstrap` object.\nThe `bootstrap` module itself exports all of our plugins. You can manually load Bootstrap's plugins individually by loading the `/js/dist/*.js` files under the package's top-level directory.\n\nBootstrap's `package.json` contains some additional metadata under the following keys:\n\n- `sass` - path to Bootstrap's main [Sass](https://sass-lang.com/) source file\n- `style` - path to Bootstrap's non-minified CSS that's been compiled using the default settings (no customization)\n\n\u003CCallout name=\"info-npm-starter\" />\n\n### yarn\n\nInstall Bootstrap in your Node.js powered apps with [the yarn package](https://yarnpkg.com/en/package/bootstrap):\n\n```sh\nyarn add bootstrap@[[config:current_version]]\n```\n\n\u003CCallout type=\"warning\">\n**Yarn 2+ (aka Yarn Berry) doesn't support the `node_modules` directory by default**: using our [Sass & JS example](https://github.com/twbs/examples/tree/main/sass-js) needs some adjustments:\n\n```sh\nyarn config set nodeLinker node-modules # Use the node_modules linker\ntouch yarn.lock # Create an empty yarn.lock file\nyarn install # Install the dependencies\nyarn start # Start the project\n```\n\u003C/Callout>\n\n### RubyGems\n\nInstall Bootstrap in your Ruby apps using [Bundler](https://bundler.io/) (**recommended**) and [RubyGems](https://rubygems.org/) by adding the following line to your [`Gemfile`](https://bundler.io/guides/gemfile.html):\n\n```ruby\ngem 'bootstrap', '~> [[config:current_ruby_version]]'\n```\n\nAlternatively, if you're not using Bundler, you can install the gem by running this command:\n\n```sh\ngem install bootstrap -v [[config:current_ruby_version]]\n```\n\n[See the gem's README](https://github.com/twbs/bootstrap-rubygem/blob/main/README.md) for further details.\n\n### Composer\n\nYou can also install and manage Bootstrap's Sass and JavaScript using [Composer](https://getcomposer.org/):\n\n```sh\ncomposer require twbs/bootstrap:[[config:current_version]]\n```\n\n### NuGet\n\nIf you develop in .NET Framework, you can also install and manage Bootstrap's [CSS](https://www.nuget.org/packages/bootstrap/) or [Sass](https://www.nuget.org/packages/bootstrap.sass/) and JavaScript using [NuGet](https://www.nuget.org/). Newer projects should use [libman](https://learn.microsoft.com/en-us/aspnet/core/client-side/libman/) or another method as NuGet is designed for compiled code, not frontend assets.\n\n```powershell\nInstall-Package bootstrap\n```\n\n```powershell\nInstall-Package bootstrap.sass\n```","src/content/docs/getting-started/download.mdx","4b42e9d2b86449f9","getting-started/download.mdx","getting-started/introduction",{"id":740,"data":742,"body":749,"filePath":750,"digest":751,"legacyId":752,"deferredRender":139},{"aliases":743,"description":747,"title":748,"toc":139},[744,745,746],"/docs/[[config:docs_version]]/getting-started/","/docs/getting-started/","/getting-started/","Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in minutes.","Get started with Bootstrap","## Quick start\n\nGet started by including Bootstrap's production-ready CSS and JavaScript via CDN without the need for any build steps. See it in practice with this [Bootstrap CodePen demo](https://codepen.io/team/bootstrap/pen/qBamdLj).\n\n\u003Cbr/>\n\n1. **Create a new `index.html` file in your project root.** Include the `\u003Cmeta name=\"viewport\">` tag as well for [proper responsive behavior](https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag) in mobile devices.\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap demo\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, world!\u003C/h1>\n \u003C/body>\n \u003C/html>\n ```\n\n2. **Include Bootstrap's CSS and JS.** Place the `\u003Clink>` tag in the `\u003Chead>` for our CSS, and the `\u003Cscript>` tag for our JavaScript bundle (including Popper for positioning dropdowns, popovers, and tooltips) before the closing `\u003C/body>`. Learn more about our [CDN links](#cdn-links).\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap demo\u003C/title>\n \u003Clink href=\"[[config:cdn.css]]\" rel=\"stylesheet\" integrity=\"[[config:cdn.css_hash]]\" crossorigin=\"anonymous\">\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, world!\u003C/h1>\n \u003Cscript src=\"[[config:cdn.js_bundle]]\" integrity=\"[[config:cdn.js_bundle_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n \u003C/body>\n \u003C/html>\n ```\n\n You can also include [Popper](https://popper.js.org/docs/v2/) and our JS separately. If you don't plan to use dropdowns, popovers, or tooltips, save some kilobytes by not including Popper.\n\n ```html\n \u003Cscript src=\"[[config:cdn.popper]]\" integrity=\"[[config:cdn.popper_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n \u003Cscript src=\"[[config:cdn.js]]\" integrity=\"[[config:cdn.js_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n ```\n\n3. **Hello, world!** Open the page in your browser of choice to see your Bootstrapped page. Now you can start building with Bootstrap by creating your own [layout]([[docsref:/layout/grid]]), adding dozens of [components]([[docsref:/components/buttons]]), and utilizing [our official examples]([[docsref:/examples]]).\n\n## CDN links\n\nAs reference, here are our primary CDN links.\n\n\u003CBsTable>\n| Description | URL |\n| --- | --- |\n| CSS | `[[config:cdn.css]]` |\n| JS | `[[config:cdn.js_bundle]]` |\n\u003C/BsTable>\n\nYou can also use the CDN to fetch any of our [additional builds listed in the Contents page]([[docsref:/getting-started/contents]]).\n\n## Next steps\n\n- Read a bit more about some [important global environment settings](#important-globals) that Bootstrap utilizes.\n- Read about what's included in Bootstrap in our [contents section]([[docsref:/getting-started/contents/]]) and the list of [components that require JavaScript](#js-components) below.\n- Need a little more power? Consider building with Bootstrap by [including the source files via package manager]([[docsref:/getting-started/download#package-managers]]).\n- Looking to use Bootstrap as a module with `\u003Cscript type=\"module\">`? Please refer to our [using Bootstrap as a module]([[docsref:/getting-started/javascript#using-bootstrap-as-a-module]]) section.\n\n## JS components\n\nCurious which components explicitly require our JavaScript and Popper? If you're at all unsure about the general page structure, keep reading for an example page template.\n\n- Accordions for extending our Collapse plugin\n- Alerts for dismissing\n- Buttons for toggling states and checkbox/radio functionality\n- Carousel for all slide behaviors, controls, and indicators\n- Collapse for toggling visibility of content\n- Dropdowns for displaying and positioning (also requires [Popper](https://popper.js.org/docs/v2/))\n- Modals for displaying, positioning, and scroll behavior\n- Navbar for extending our Collapse and Offcanvas plugins to implement responsive behaviors\n- Navs with the Tab plugin for toggling content panes\n- Offcanvases for displaying, positioning, and scroll behavior\n- Scrollspy for scroll behavior and navigation updates\n- Toasts for displaying and dismissing\n- Tooltips and popovers for displaying and positioning (also requires [Popper](https://popper.js.org/docs/v2/))\n\n## Important globals\n\nBootstrap employs a handful of important global styles and settings, all of which are almost exclusively geared towards the *normalization* of cross browser styles. Let's dive in.\n\n### HTML5 doctype\n\nBootstrap requires the use of the HTML5 doctype. Without it, you'll see some funky and incomplete styling.\n\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"en\">\n ...\n\u003C/html>\n```\n\n### Viewport meta\n\nBootstrap is developed *mobile first*, a strategy in which we optimize code for mobile devices first and then scale up components as necessary using CSS media queries. To ensure proper rendering and touch zooming for all devices, add the responsive viewport meta tag to your `\u003Chead>`.\n\n```html\n\u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n```\n\nYou can see an example of this in action in the [quick start](#quick-start).\n\n### Box-sizing\n\nFor more straightforward sizing in CSS, we switch the global `box-sizing` value from `content-box` to `border-box`. This ensures `padding` does not affect the final computed width of an element, but it can cause problems with some third-party software like Google Maps and Google Custom Search Engine.\n\nOn the rare occasion you need to override it, use something like the following:\n\n```css\n.selector-for-some-widget {\n box-sizing: content-box;\n}\n```\n\nWith the above snippet, nested elements—including generated content via `::before` and `::after`—will all inherit the specified `box-sizing` for that `.selector-for-some-widget`.\n\nLearn more about [box model and sizing at CSS Tricks](https://css-tricks.com/box-sizing/).\n\n### Reboot\n\nFor improved cross-browser rendering, we use [Reboot]([[docsref:/content/reboot]]) to correct inconsistencies across browsers and devices while providing slightly more opinionated resets to common HTML elements.\n\n## Community\n\nStay up-to-date on the development of Bootstrap and reach out to the community with these helpful resources.\n\n- Read and subscribe to [The Official Bootstrap Blog]([[config:blog]]).\n- Ask questions and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).\n- Discuss, ask questions, and more on [the community Discord](https://discord.gg/bZUvakRU3M) or [Bootstrap subreddit](https://www.reddit.com/r/bootstrap/).\n- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.\n- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)).\n- Developers should use the keyword `bootstrap` on packages that modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/search?q=keywords:bootstrap) or similar delivery mechanisms for maximum discoverability.\n\nYou can also follow [@getbootstrap on Twitter](https://twitter.com/[[config:twitter]]) for the latest gossip and awesome music videos.","src/content/docs/getting-started/introduction.mdx","76999280ffc14984","getting-started/introduction.mdx","getting-started/javascript",{"id":753,"data":755,"body":758,"filePath":759,"digest":760,"legacyId":761,"deferredRender":139},{"description":756,"title":757,"toc":139},"Bring Bootstrap to life with our optional JavaScript plugins. Learn about each plugin, our data and programmatic API options, and more.","JavaScript","## Individual or compiled\n\nPlugins can be included individually (using Bootstrap's individual `js/dist/*.js`), or all at once using `bootstrap.js` or the minified `bootstrap.min.js` (don't include both).\n\nIf you use a bundler (Webpack, Parcel, Vite...), you can use `/js/dist/*.js` files which are UMD ready.\n\n## Usage with JavaScript frameworks\n\nWhile the Bootstrap CSS can be used with any framework, **the Bootstrap JavaScript is not fully compatible with JavaScript frameworks like React, Vue, and Angular** which assume full knowledge of the DOM. Both Bootstrap and the framework may attempt to mutate the same DOM element, resulting in bugs like dropdowns that are stuck in the \"open\" position.\n\nA better alternative for those using this type of frameworks is to use a framework-specific package **instead of** the Bootstrap JavaScript. Here are some of the most popular options:\n\n- React: [React Bootstrap](https://react-bootstrap.github.io/)\n \u003CCallout>\n **Try it yourself!** Download the source code and working demo for using Bootstrap with React, Next.js, and React Bootstrap from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/react-nextjs). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/react-nextjs?file=src%2Fpages%2Findex.tsx).\n \u003C/Callout>\n- Vue: [BootstrapVue](https://bootstrap-vue.org/) (Bootstrap 4)\n- Vue 3: [BootstrapVueNext](https://bootstrap-vue-next.github.io/bootstrap-vue-next/) (Bootstrap 5, currently in alpha)\n- Angular: [ng-bootstrap](https://ng-bootstrap.github.io/) or [ngx-bootstrap](https://valor-software.com/ngx-bootstrap)\n\n## Using Bootstrap as a module\n\n\u003CCallout>\n**Try it yourself!** Download the source code and working demo for using Bootstrap as an ES module from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/sass-js-esm). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/sass-js-esm?file=index.html).\n\u003C/Callout>\n\nWe provide a version of Bootstrap built as `ESM` (`bootstrap.esm.js` and `bootstrap.esm.min.js`) which allows you to use Bootstrap as a module in the browser, if your [targeted browsers support it](https://caniuse.com/es6-module).\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```html\n\u003Cscript type=\"module\">\n import { Toast } from 'bootstrap.esm.min.js'\n\n Array.from(document.querySelectorAll('.toast'))\n .forEach(toastNode => new Toast(toastNode))\n\u003C/script>\n```\n\nCompared to JS bundlers, using ESM in the browser requires you to use the full path and filename instead of the module name. [Read more about JS modules in the browser.](https://v8.dev/features/modules#specifiers) That's why we use `'bootstrap.esm.min.js'` instead of `'bootstrap'` above. However, this is further complicated by our Popper dependency, which imports Popper into our JavaScript like so:\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```js\nimport * as Popper from \"@popperjs/core\"\n```\n\nIf you try this as-is, you'll see an error in the console like the following:\n\n```text\nUncaught TypeError: Failed to resolve module specifier \"@popperjs/core\". Relative references must start with either \"/\", \"./\", or \"../\".\n```\n\nTo fix this, you can use an `importmap` to resolve the arbitrary module names to complete paths. If your [targeted browsers](https://caniuse.com/?search=importmap) do not support `importmap`, you'll need to use the [es-module-shims](https://github.com/guybedford/es-module-shims) project. Here's how it works for Bootstrap and Popper:\n\n{/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Clink href=\"[[config:cdn.css]]\" rel=\"stylesheet\" integrity=\"[[config:cdn.css_hash]]\" crossorigin=\"anonymous\">\n \u003Ctitle>Hello, modularity!\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Ch1>Hello, modularity!\u003C/h1>\n \u003Cbutton id=\"popoverButton\" type=\"button\" class=\"btn btn-primary btn-lg\" data-bs-toggle=\"popover\" title=\"ESM in Browser\" data-bs-content=\"Bang!\">Custom popover\u003C/button>\n\n \u003Cscript async src=\"https://cdn.jsdelivr.net/npm/es-module-shims@1/dist/es-module-shims.min.js\" crossorigin=\"anonymous\">\u003C/script>\n \u003Cscript type=\"importmap\">\n {\n \"imports\": {\n \"@popperjs/core\": \"[[config:cdn.popper_esm]]\",\n \"bootstrap\": \"https://cdn.jsdelivr.net/npm/bootstrap@[[config:current_version]]/dist/js/bootstrap.esm.min.js\"\n }\n }\n \u003C/script>\n \u003Cscript type=\"module\">\n import * as bootstrap from 'bootstrap'\n\n new bootstrap.Popover(document.getElementById('popoverButton'))\n \u003C/script>\n \u003C/body>\n\u003C/html>\n```\n\n## Dependencies\n\nSome plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs.\n\nOur dropdowns, popovers, and tooltips also depend on [Popper](https://popper.js.org/docs/v2/).\n\n## Data attributes\n\nNearly all Bootstrap plugins can be enabled and configured through HTML alone with data attributes (our preferred way of using JavaScript functionality). Be sure to **only use one set of data attributes on a single element** (e.g., you cannot trigger a tooltip and modal from the same button.)\n\n\u003CJsDataAttributes />\n\n## Selectors\n\nWe use the native `querySelector` and `querySelectorAll` methods to query DOM elements for performance reasons, so you must use [valid selectors](https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier). If you use special selectors like `collapse:Example`, be sure to escape them.\n\n## Events\n\nBootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. `show`) is triggered at the start of an event, and its past participle form (ex. `shown`) is triggered on the completion of an action.\n\nAll infinitive events provide [`preventDefault()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) functionality. This provides the ability to stop the execution of an action before it starts. Returning false from an event handler will also automatically call `preventDefault()`.\n\n```js\nconst myModal = document.querySelector('#myModal')\n\nmyModal.addEventListener('show.bs.modal', event => {\n return event.preventDefault() // stops modal from being shown\n})\n```\n\n## Programmatic API\n\nAll constructors accept an optional options object or nothing (which initiates a plugin with its default behavior):\n\n```js\nconst myModalEl = document.querySelector('#myModal')\nconst modal = new bootstrap.Modal(myModalEl) // initialized with defaults\n\nconst configObject = { keyboard: false }\nconst modal1 = new bootstrap.Modal(myModalEl, configObject) // initialized with no keyboard\n```\n\nIf you'd like to get a particular plugin instance, each plugin exposes a `getInstance` method. For example, to retrieve an instance directly from an element:\n\n```js\nbootstrap.Popover.getInstance(myPopoverEl)\n```\n\nThis method will return `null` if an instance is not initiated over the requested element.\n\nAlternatively, `getOrCreateInstance` can be used to get the instance associated with a DOM element, or create a new one in case it wasn't initialized.\n\n```js\nbootstrap.Popover.getOrCreateInstance(myPopoverEl, configObject)\n```\n\nIn case an instance wasn't initialized, it may accept and use an optional configuration object as second argument.\n\n### CSS selectors in constructors\n\nIn addition to the `getInstance` and `getOrCreateInstance` methods, all plugin constructors can accept a DOM element or a valid [CSS selector](#selectors) as the first argument. Plugin elements are found with the `querySelector` method since our plugins only support a single element.\n\n```js\nconst modal = new bootstrap.Modal('#myModal')\nconst dropdown = new bootstrap.Dropdown('[data-bs-toggle=\"dropdown\"]')\nconst offcanvas = bootstrap.Offcanvas.getInstance('#myOffcanvas')\nconst alert = bootstrap.Alert.getOrCreateInstance('#myAlert')\n```\n\n### Asynchronous functions and transitions\n\nAll programmatic API methods are **asynchronous** and return to the caller once the transition is started, but **before it ends**. In order to execute an action once the transition is complete, you can listen to the corresponding event.\n\n```js\nconst myCollapseEl = document.querySelector('#myCollapse')\n\nmyCollapseEl.addEventListener('shown.bs.collapse', event => {\n // Action to execute once the collapsible area is expanded\n})\n```\n\nIn addition, a method call on a **transitioning component will be ignored**.\n\n```js\nconst myCarouselEl = document.querySelector('#myCarousel')\nconst carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance\n\nmyCarouselEl.addEventListener('slid.bs.carousel', event => {\n carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished\n})\n\ncarousel.to('1') // Will start sliding to the slide 1 and returns to the caller\ncarousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!\n```\n\n#### `dispose` method\n\nWhile it may seem correct to use the `dispose` method immediately after `hide()`, it will lead to incorrect results. Here's an example of the problem use:\n\n```js\nconst myModal = document.querySelector('#myModal')\nmyModal.hide() // it is asynchronous\n\nmyModal.addEventListener('shown.bs.hidden', event => {\n myModal.dispose()\n})\n```\n\n### Default settings\n\nYou can change the default settings for a plugin by modifying the plugin's `Constructor.Default` object:\n\n```js\n// changes default for the modal plugin's `keyboard` option to false\nbootstrap.Modal.Default.keyboard = false\n```\n\n## Methods and properties\n\nEvery Bootstrap plugin exposes the following methods and static properties.\n\n\u003CBsTable class=\"table\">\n| Method | Description |\n| --- | --- |\n| `dispose` | Destroys an element's modal. (Removes stored data on the DOM element) |\n| `getInstance` | *Static* method which allows you to get the modal instance associated with a DOM element. |\n| `getOrCreateInstance` | *Static* method which allows you to get the modal instance associated with a DOM element, or create a new one in case it wasn't initialized. |\n\u003C/BsTable>\n\n\u003CBsTable class=\"table\">\n| Static property | Description |\n| --- | --- |\n| `NAME` | Returns the plugin name. (Example: `bootstrap.Tooltip.NAME`) |\n| `VERSION` | The version of each of Bootstrap's plugins can be accessed via the `VERSION` property of the plugin's constructor (Example: `bootstrap.Tooltip.VERSION`) |\n\u003C/BsTable>\n\n## Sanitizer\n\nTooltips and Popovers use our built-in sanitizer to sanitize options which accept HTML.\n\nThe default `allowList` value is the following:\n\n\u003CJsDocs name=\"allow-list\" file=\"js/src/util/sanitizer.js\" />\n\nIf you want to add new values to this default `allowList` you can do the following:\n\n```js\nconst myDefaultAllowList = bootstrap.Tooltip.Default.allowList\n\n// To allow table elements\nmyDefaultAllowList.table = []\n\n// To allow td elements and data-bs-option attributes on td elements\nmyDefaultAllowList.td = ['data-bs-option']\n\n// You can push your custom regex to validate your attributes.\n// Be careful about your regular expressions being too lax\nconst myCustomRegex = /^data-my-app-[\\w-]+/\nmyDefaultAllowList['*'].push(myCustomRegex)\n```\n\nIf you want to bypass our sanitizer because you prefer to use a dedicated library, for example [DOMPurify](https://www.npmjs.com/package/dompurify), you should do the following:\n\n```js\nconst yourTooltipEl = document.querySelector('#yourTooltip')\nconst tooltip = new bootstrap.Tooltip(yourTooltipEl, {\n sanitizeFn(content) {\n return DOMPurify.sanitize(content)\n }\n})\n```\n\n## Optionally using jQuery\n\n**You don't need jQuery in Bootstrap 5**, but it's still possible to use our components with jQuery. If Bootstrap detects `jQuery` in the `window` object, it'll add all of our components in jQuery's plugin system. This allows you to do the following:\n\n```js\n// to enable tooltips with the default configuration\n$('[data-bs-toggle=\"tooltip\"]').tooltip()\n\n// to initialize tooltips with given configuration\n$('[data-bs-toggle=\"tooltip\"]').tooltip({\n boundary: 'clippingParents',\n customClass: 'myClass'\n})\n\n// to trigger the `show` method\n$('#myTooltip').tooltip('show')\n```\n\nThe same goes for our other components.\n\n### No conflict\n\nSometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call `.noConflict` on the plugin you wish to revert the value of.\n\n```js\nconst bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value\n$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality\n```\n\nBootstrap does not officially support third-party JavaScript libraries like Prototype or jQuery UI. Despite `.noConflict` and namespaced events, there may be compatibility problems that you need to fix on your own.\n\n### jQuery events\n\nBootstrap will detect jQuery if `jQuery` is present in the `window` object and there is no `data-bs-no-jquery` attribute set on `\u003Cbody>`. If jQuery is found, Bootstrap will emit events thanks to jQuery's event system. So if you want to listen to Bootstrap's events, you'll have to use the jQuery methods (`.on`, `.one`) instead of `addEventListener`.\n\n```js\n$('#myTab a').on('shown.bs.tab', () => {\n // do something...\n})\n```\n\n## Disabled JavaScript\n\nBootstrap's plugins have no special fallback when JavaScript is disabled. If you care about the user experience in this case, use [`\u003Cnoscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript) to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks.","src/content/docs/getting-started/javascript.mdx","d34e7c86e8f62107","getting-started/javascript.mdx","getting-started/parcel",{"id":762,"data":764,"body":768,"filePath":769,"digest":770,"legacyId":771,"deferredRender":139},{"description":765,"thumbnail":766,"title":767,"toc":139},"The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Parcel.","guides/bootstrap-parcel@2x.png","Bootstrap and Parcel","\u003Cimg class=\"d-block mx-auto mb-4 img-fluid rounded-3\" srcset=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-parcel.png, /docs/[[config:docs_version]]/assets/img/guides/bootstrap-parcel@2x.png 2x\" src=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-parcel.png\" width=\"800\" height=\"400\" alt=\"\"/>\n\n\u003CCallout>\n**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/parcel). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/parcel?file=index.html) but not run it because Parcel isn't currently supported there.\n\u003C/Callout>\n\n## What is Parcel?\n\n[Parcel](https://parceljs.org/) is a web application bundler designed to simplify the development process with a zero-configuration setup out of the box. It offers features found in more advanced bundlers while focusing on ease of use, making it ideal for developers seeking a quick start.\n\n## Setup\n\nWe're building a Parcel project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.\n\n1. **Create a project folder and set up npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions.\n\n ```sh\n mkdir my-project && cd my-project\n npm init -y\n ```\n\n2. **Install Parcel.** Unlike our Webpack guide, there's only a single build tool dependency here. Parcel will automatically install language transformers (like Sass) as it detects them. We use `--save-dev` to signal that this dependency is only for development use and not for production.\n\n ```sh\n npm i --save-dev parcel\n ```\n\n3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.\n\n ```sh\n npm i --save bootstrap @popperjs/core\n ```\n\nNow that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap.\n\n## Project structure\n\nWe've already created the `my-project` folder and initialized npm. Now we'll also create our `src` folder, stylesheet, and JavaScript file to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below.\n\n```sh\nmkdir {src,src/js,src/scss}\ntouch src/index.html src/js/main.js src/scss/styles.scss\n```\n\nWhen you're done, your complete project should look like this:\n\n```text\nmy-project/\n├── src/\n│ ├── js/\n│ │ └── main.js\n│ ├── scss/\n│ │ └── styles.scss\n│ └── index.html\n├── package-lock.json\n└── package.json\n```\n\nAt this point, everything is in the right place, but Parcel needs an HTML page and npm script to start our server.\n\n## Configure Parcel\n\nWith dependencies installed and our project folder ready for us to start coding, we can now configure Parcel and run our project locally. Parcel itself requires no configuration file by design, but we do need an npm script and an HTML file to start our server.\n\n1. **Fill in the `src/index.html` file.** Parcel needs a page to render, so we use our `index.html` page to set up some basic HTML, including our CSS and JavaScript files.\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap w/ Parcel\u003C/title>\n \u003Clink rel=\"stylesheet\" href=\"scss/styles.scss\">\n \u003Cscript type=\"module\" src=\"js/main.js\">\u003C/script>\n \u003C/head>\n \u003Cbody>\n \u003Cdiv class=\"container py-4 px-3 mx-auto\">\n \u003Ch1>Hello, Bootstrap and Parcel!\u003C/h1>\n \u003Cbutton class=\"btn btn-primary\">Primary button\u003C/button>\n \u003C/div>\n \u003C/body>\n \u003C/html>\n ```\n\n We're including a little bit of Bootstrap styling here with the `div class=\"container\"` and `\u003Cbutton>` so that we see when Bootstrap's CSS is loaded by Parcel.\n\n Parcel will automatically detect we're using Sass and install the [Sass Parcel plugin](https://parceljs.org/languages/sass/) to support it. However, if you wish, you can also manually run `npm i --save-dev @parcel/transformer-sass`.\n\n2. **Add the Parcel npm scripts.** Open the `package.json` and add the following `start` script to the `scripts` object. We'll use this script to start our Parcel development server and render the HTML file we created after it's compiled into the `dist` directory.\n\n ```json\n {\n // ...\n \"scripts\": {\n \"start\": \"parcel serve src/index.html --public-url / --dist-dir dist\",\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n // ...\n }\n ```\n\n3. **And finally, we can start Parcel.** From the `my-project` folder in your terminal, run that newly added npm script:\n\n ```sh\n npm start\n ```\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/parcel-dev-server.png\" alt=\"Parcel dev server running\" />\n\nIn the next and final section to this guide, we'll import all of Bootstrap's CSS and JavaScript.\n\n## Import Bootstrap\n\nImporting Bootstrap into Parcel requires two imports, one into our `styles.scss` and one into our `main.js`.\n\n1. **Import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass.\n\n ```scss\n // Import all of Bootstrap's CSS\n @import \"bootstrap/scss/bootstrap\";\n ```\n\n *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*\n\n2. **Import Bootstrap's JS.** Add the following to `src/js/main.js` to import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n // Import all of Bootstrap's JS\n import * as bootstrap from 'bootstrap'\n ```\n\n You can also import JavaScript plugins individually as needed to keep bundle sizes down:\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n import Alert from 'bootstrap/js/dist/alert'\n\n // or, specify which plugins you need:\n import { Tooltip, Toast, Popover } from 'bootstrap'\n ```\n\n *[Read our JavaScript docs]([[docsref:/getting-started/javascript/]]) for more information on how to use Bootstrap's plugins.*\n\n3. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/parcel-dev-server-bootstrap.png\" alt=\"Parcel dev server running with Bootstrap\" />\n\n Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Parcel example project](https://github.com/twbs/examples/tree/main/parcel) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.\n\n\u003CGuideFooter />","src/content/docs/getting-started/parcel.mdx","e03bf37ddb4c933c","getting-started/parcel.mdx","getting-started/rfs",{"id":772,"data":774,"body":777,"filePath":778,"digest":779,"legacyId":780,"deferredRender":139},{"description":775,"title":776,"toc":139},"Bootstrap's resizing engine responsively scales common CSS properties to better utilize available space across viewports and devices.","RFS","## What is RFS?\n\nBootstrap's side project [RFS](https://github.com/twbs/rfs/tree/[[config:rfs_version]]) is a unit resizing engine which was initially developed to resize font sizes (hence its abbreviation for Responsive Font Sizes). Nowadays RFS is capable of rescaling most CSS properties with unit values like `margin`, `padding`, `border-radius`, or even `box-shadow`.\n\nThe mechanism automatically calculates the appropriate values based on the dimensions of the browser viewport. It will be compiled into `calc()` functions with a mix of `rem` and viewport units to enable the responsive scaling behavior.\n\n## Using RFS\n\nThe mixins are included in Bootstrap and are available once you include Bootstrap's `scss`. RFS can also be [installed standalone](https://github.com/twbs/rfs/tree/[[config:rfs_version]]#installation) if needed.\n\n### Using the mixins\n\nThe `rfs()` mixin has shorthands for `font-size`, `margin`, `margin-top`, `margin-right`, `margin-bottom`, `margin-left`, `padding`, `padding-top`, `padding-right`, `padding-bottom`, and `padding-left`. See the example below for source Sass and compiled CSS.\n\n```scss\n.title {\n @include font-size(4rem);\n}\n```\n\n```css\n.title {\n font-size: calc(1.525rem + 3.3vw);\n}\n\n@media (min-width: 1200px) {\n .title {\n font-size: 4rem;\n }\n}\n```\n\nAny other property can be passed to the `rfs()` mixin like this:\n\n```scss\n.selector {\n @include rfs(4rem, border-radius);\n}\n```\n\n`!important` can also just be added to whatever value you want:\n\n```scss\n.selector {\n @include padding(2.5rem !important);\n}\n```\n\n### Using the functions\n\nWhen you don't want to use the includes, there are also two functions:\n\n- `rfs-value()` converts a value into a `rem` value if a `px` value is passed, in other cases it returns the same result.\n- `rfs-fluid-value()` returns the fluid version of a value if the property needs rescaling.\n\nIn this example, we use one of Bootstrap's built-in [responsive breakpoint mixins]([[docsref:/layout/breakpoints]]) to only apply styling below the `lg` breakpoint.\n\n```scss\n.selector {\n @include media-breakpoint-down(lg) {\n padding: rfs-fluid-value(2rem);\n font-size: rfs-fluid-value(1.125rem);\n }\n}\n```\n\n```css\n@media (max-width: 991.98px) {\n .selector {\n padding: calc(1.325rem + 0.9vw);\n font-size: 1.125rem; /* 1.125rem is small enough, so RFS won't rescale this */\n }\n}\n```\n\n## Extended documentation\n\nRFS is a separate project under the Bootstrap organization. More about RFS and its configuration can be found on its [GitHub repository](https://github.com/twbs/rfs/tree/[[config:rfs_version]]).","src/content/docs/getting-started/rfs.mdx","50fcab42d402abc9","getting-started/rfs.mdx","getting-started/rtl",{"id":781,"data":783,"body":786,"filePath":787,"digest":788,"legacyId":789,"deferredRender":139},{"description":784,"title":785,"toc":139},"Learn how to enable support for right-to-left text in Bootstrap across our layout, components, and utilities.","RTL","## Get familiar\n\nWe recommend getting familiar with Bootstrap first by reading through our [Getting Started Introduction page]([[docsref:/getting-started/introduction]]). Once you've run through it, continue reading here for how to enable RTL.\n\nYou may also want to read up on [the RTLCSS project](https://rtlcss.com/), as it powers our approach to RTL.\n\n\u003CCallout type=\"warning\">\n**Bootstrap's RTL feature is still experimental** and will evolve based on user feedback. Spotted something or have an improvement to suggest? [Open an issue]([[config:repo]]/issues/new/choose), we'd love to get your insights.\n\u003C/Callout>\n\n## Required HTML\n\nThere are two strict requirements for enabling RTL in Bootstrap-powered pages.\n\n1. Set `dir=\"rtl\"` on the `\u003Chtml>` element.\n2. Add an appropriate `lang` attribute, like `lang=\"ar\"`, on the `\u003Chtml>` element.\n\nFrom there, you'll need to include an RTL version of our CSS. For example, here's the stylesheet for our compiled and minified CSS with RTL enabled:\n\n```html\n\u003Clink rel=\"stylesheet\" href=\"[[config:cdn.css_rtl]]\" integrity=\"[[config:cdn.css_rtl_hash]]\" crossorigin=\"anonymous\">\n```\n\n### Starter template\n\nYou can see the above requirements reflected in this modified RTL starter template.\n\n```html\n\u003C!doctype html>\n\u003Chtml lang=\"ar\" dir=\"rtl\">\n \u003Chead>\n \u003C!-- Required meta tags -->\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n \u003C!-- Bootstrap CSS -->\n \u003Clink rel=\"stylesheet\" href=\"[[config:cdn.css_rtl]]\" integrity=\"[[config:cdn.css_rtl_hash]]\" crossorigin=\"anonymous\">\n\n \u003Ctitle>مرحبًا بالعالم!\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Ch1>مرحبًا بالعالم!\u003C/h1>\n\n \u003C!-- Optional JavaScript; choose one of the two! -->\n\n \u003C!-- Option 1: Bootstrap Bundle with Popper -->\n \u003Cscript src=\"[[config:cdn.js_bundle]]\" integrity=\"[[config:cdn.js_bundle_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n\n \u003C!-- Option 2: Separate Popper and Bootstrap JS -->\n \u003C!--\n \u003Cscript src=\"[[config:cdn.popper]]\" integrity=\"[[config:cdn.popper_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n \u003Cscript src=\"[[config:cdn.js]]\" integrity=\"[[config:cdn.js_hash]]\" crossorigin=\"anonymous\">\u003C/script>\n -->\n \u003C/body>\n\u003C/html>\n```\n\n### RTL examples\n\nGet started with one of our several [RTL examples]([[docsref:/examples/#rtl]]).\n\n## Approach\n\nOur approach to building RTL support into Bootstrap comes with two important decisions that impact how we write and use our CSS:\n\n1. **First, we decided to build it with the [RTLCSS](https://rtlcss.com/) project.** This gives us some powerful features for managing changes and overrides when moving from LTR to RTL. It also allows us to build two versions of Bootstrap from one codebase.\n\n2. **Second, we've renamed a handful of directional classes to adopt a logical properties approach.** Most of you have already interacted with logical properties thanks to our flex utilities—they replace direction properties like `left` and `right` in favor `start` and `end`. That makes the class names and values appropriate for LTR and RTL without any overhead.\n\n For example, instead of `.ml-3` for `margin-left`, use `.ms-3`.\n\nWorking with RTL, through our source Sass or compiled CSS, shouldn't be much different from our default LTR though.\n\n## Customize from source\n\nWhen it comes to [customization]([[docsref:/customize/sass]]), the preferred way is to take advantage of variables, maps, and mixins. This approach works the same for RTL, even if it's post-processed from the compiled files, thanks to [how RTLCSS works](https://rtlcss.com/learn/getting-started/why-rtlcss/).\n\n### Custom RTL values\n\nUsing [RTLCSS value directives](https://rtlcss.com/learn/usage-guide/value-directives/), you can make a variable output a different value for RTL. For example, to decrease the weight for `$font-weight-bold` throughout the codebase, you may use the `/*rtl: {value}*/` syntax:\n\n```scss\n$font-weight-bold: 700 #{/* rtl:600 */} !default;\n```\n\nWhich would output to the following for our default CSS and RTL CSS:\n\n```css\n/* bootstrap.css */\ndt {\n font-weight: 700 /* rtl:600 */;\n}\n\n/* bootstrap.rtl.css */\ndt {\n font-weight: 600;\n}\n```\n\n### Alternative font stack\n\nIn the case you're using a custom font, be aware that not all fonts support the non-Latin alphabet. To switch from Pan-European to Arabic family, you may need to use `/*rtl:insert: {value}*/` in your font stack to modify the names of font families.\n\nFor example, to switch from `Helvetica Neue` font for LTR to `Helvetica Neue Arabic` for RTL, your Sass code could look like this:\n\n```scss\n$font-family-sans-serif:\n Helvetica Neue #{\"/* rtl:insert:Arabic */\"},\n // Cross-platform generic font family (default user interface font)\n system-ui,\n // Safari for macOS and iOS (San Francisco)\n -apple-system,\n // Chrome \u003C 56 for macOS (San Francisco)\n BlinkMacSystemFont,\n // Windows\n \"Segoe UI\",\n // Android\n Roboto,\n // Basic web fallback\n Arial,\n // Linux\n \"Noto Sans\",\n // Sans serif fallback\n sans-serif,\n // Emoji fonts\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n```\n\n### LTR and RTL at the same time\n\nNeed both LTR and RTL on the same page? Thanks to [RTLCSS String Maps](https://rtlcss.com/learn/usage-guide/string-map/), this is pretty straightforward. Wrap your `@import`s with a class, and set a custom rename rule for RTLCSS:\n\n```scss\n/* rtl:begin:options: {\n \"autoRename\": true,\n \"stringMap\":[ {\n \"name\": \"ltr-rtl\",\n \"priority\": 100,\n \"search\": [\"ltr\"],\n \"replace\": [\"rtl\"],\n \"options\": {\n \"scope\": \"*\",\n \"ignoreCase\": false\n }\n } ]\n} */\n.ltr {\n @import \"../node_modules/bootstrap/scss/bootstrap\";\n}\n/*rtl:end:options*/\n```\n\nAfter running Sass then RTLCSS, each selector in your CSS files will be prepended by `.ltr`, and `.rtl` for RTL files. Now you're able to use both files on the same page, and simply use `.ltr` or `.rtl` on your components wrappers to use one or the other direction.\n\n\u003CCallout type=\"warning\">\n**Edge cases and known limitations** to consider when working with a combined LTR and RTL implementation:\n\n1. When switching `.ltr` and `.rtl`, make sure you add `dir` and `lang` attributes accordingly.\n2. Loading both files can be a real performance bottleneck: consider some [optimization]([[docsref:/customize/optimize]]), and maybe try to [load one of those files asynchronously](https://www.filamentgroup.com/lab/load-css-simpler/).\n3. Nesting styles this way will prevent our `form-validation-state()` mixin from working as intended, thus require you tweak it a bit by yourself. [See #31223](https://github.com/twbs/bootstrap/issues/31223).\n\u003C/Callout>\n\nDo you want to automate this process and address several edge cases involving both directions within a single stylesheet? Then, consider using [PostCSS RTLCSS](https://github.com/elchininet/postcss-rtlcss) as a [PostCSS](https://github.com/postcss/postcss) plugin to process your source files. PostCSS RTLCSS uses [RTLCSS](https://rtlcss.com) behind the scenes to manage the direction flipping process, but it separates the flipped declarations into rules with a different prefix for LTR and RTL, something that allows you to have both directions within the same stylesheet file. By doing this, you can switch between LTR and RTL orientations by simply changing the `dir` of the page (or even by modifying a specific class if you configure the plugin accordingly).\n\n\u003CCallout type=\"warning\">\n**Important things to take into account** when using PostCSS RTLCSS to build a combined LTR and RTL implementation:\n\n1. It is recommended that you add the `dir` attribute to the `html` element. This way, the entire page will be affected when you change the direction. Also, make sure you add the `lang` attribute accordingly.\n2. Having a single bundle with both directions will increase the size of the final stylesheet (on average, by 20%-30%): consider some [optimization]([[docsref:/customize/optimize]]).\n3. Take into account that PostCSS RTLCSS is not compatible with `/* rtl:remove */` directives because it doesn't remove any CSS rule. You should replace your `/* rtl:remove */`, `/* rtl:begin:remove */` and `/* rtl:end:remove */` directives with `/* rtl:freeze */`, `/* rtl:begin:freeze */` and `/* rtl:end:freeze */` directives respectively. These directives will prefix the targeted rules or declarations with the current direction but will not create an RTL counterpart (same result as the `remove` ones in RTLCSS).\n\u003C/Callout>\n\n## The breadcrumb case\n\nThe [breadcrumb separator]([[docsref:/components/breadcrumb]]#dividers) is the only case requiring its own brand-new variable— namely `$breadcrumb-divider-flipped` —defaulting to `$breadcrumb-divider`.\n\n## Additional resources\n\n- [RTLCSS](https://rtlcss.com/)\n- [RTL Styling 101](https://rtlstyling.com/posts/rtl-styling)","src/content/docs/getting-started/rtl.mdx","17b1bab3d6c46a1a","getting-started/rtl.mdx","getting-started/webpack",{"id":790,"data":792,"body":796,"filePath":797,"digest":798,"legacyId":799,"deferredRender":139},{"description":793,"thumbnail":794,"title":795,"toc":139},"The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Webpack.","guides/bootstrap-webpack@2x.png","Bootstrap and Webpack","\u003Cimg class=\"d-block mx-auto mb-4 img-fluid rounded-3\" srcset=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-webpack.png, /docs/[[config:docs_version]]/assets/img/guides/bootstrap-webpack@2x.png 2x\" src=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-webpack.png\" width=\"800\" height=\"400\" alt=\"\"/>\n\n\u003CCallout>\n**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/webpack). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/webpack?file=index.html) for live editing.\n\u003C/Callout>\n\n## What is Webpack?\n\n[Webpack](https://webpack.js.org/) is a JavaScript module bundler that processes modules and their dependencies to generate static assets. It simplifies managing complex web applications with multiple files and dependencies.\n\n## Setup\n\nWe're building a Webpack project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.\n\n1. **Create a project folder and set up npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions.\n\n ```sh\n mkdir my-project && cd my-project\n npm init -y\n ```\n\n2. **Install Webpack.** Next we need to install our Webpack development dependencies: `webpack` for the core of Webpack, `webpack-cli` so we can run Webpack commands from the terminal, and `webpack-dev-server` so we can run a local development server. Additionally, we'll install `html-webpack-plugin` to be able to store our `index.html` in `src` directory instead of the default `dist` one. We use `--save-dev` to signal that these dependencies are only for development use and not for production.\n\n ```sh\n npm i --save-dev webpack webpack-cli webpack-dev-server html-webpack-plugin\n ```\n\n3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.\n\n ```sh\n npm i --save bootstrap @popperjs/core\n ```\n\n4. **Install additional dependencies.** In addition to Webpack and Bootstrap, we need a few more dependencies to properly import and bundle Bootstrap's CSS and JS with Webpack. These include Sass, some loaders, and Autoprefixer.\n\n ```sh\n npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader\n ```\n\nNow that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap.\n\n## Project structure\n\nWe've already created the `my-project` folder and initialized npm. Now we'll also create our `src` and `dist` folders to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below.\n\n```sh\nmkdir {src,src/js,src/scss}\ntouch src/index.html src/js/main.js src/scss/styles.scss webpack.config.js\n```\n\nWhen you're done, your complete project should look like this:\n\n```text\nmy-project/\n├── src/\n│ ├── js/\n│ │ └── main.js\n│ ├── scss/\n│ │ └── styles.scss\n│ └── index.html\n├── package-lock.json\n├── package.json\n└── webpack.config.js\n```\n\nAt this point, everything is in the right place, but Webpack won't work because we haven't filled in our `webpack.config.js` yet.\n\n## Configure Webpack\n\nWith dependencies installed and our project folder ready for us to start coding, we can now configure Webpack and run our project locally.\n\n1. **Open `webpack.config.js` in your editor.** Since it's blank, we'll need to add some boilerplate config to it so we can start our server. This part of the config tells Webpack where to look for our project's JavaScript, where to output the compiled code to (`dist`), and how the development server should behave (pulling from the `dist` folder with hot reload).\n\n ```js\n 'use strict'\n const path = require('path')\n const HtmlWebpackPlugin = require('html-webpack-plugin')\n\n module.exports = {\n mode: 'development',\n entry: './src/js/main.js',\n output: {\n filename: 'main.js',\n path: path.resolve(__dirname, 'dist')\n },\n devServer: {\n static: path.resolve(__dirname, 'dist'),\n port: 8080,\n hot: true\n },\n plugins: [\n new HtmlWebpackPlugin({ template: './src/index.html' })\n ]\n }\n ```\n\n2. **Next we fill in our `src/index.html`.** This is the HTML page Webpack will load in the browser to utilize the bundled CSS and JS we'll add to it in later steps. Before we can do that, we have to give it something to render and include the `output` JS from the previous step.\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap w/ Webpack\u003C/title>\n \u003C/head>\n \u003Cbody>\n \u003Cdiv class=\"container py-4 px-3 mx-auto\">\n \u003Ch1>Hello, Bootstrap and Webpack!\u003C/h1>\n \u003Cbutton class=\"btn btn-primary\">Primary button\u003C/button>\n \u003C/div>\n \u003C/body>\n \u003C/html>\n ```\n\n We're including a little bit of Bootstrap styling here with the `div class=\"container\"` and `\u003Cbutton>` so that we see when Bootstrap's CSS is loaded by Webpack.\n\n3. **Now we need an npm script to run Webpack.** Open `package.json` and add the `start` script shown below (you should already have the test script). We'll use this script to start our local Webpack dev server. You can also add a `build` script shown below to build your project.\n\n ```json\n {\n // ...\n \"scripts\": {\n \"start\": \"webpack serve\",\n \"build\": \"webpack build --mode=production\",\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n // ...\n }\n ```\n\n4. **And finally, we can start Webpack.** From the `my-project` folder in your terminal, run that newly added npm script:\n\n ```sh\n npm start\n ```\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/webpack-dev-server.png\" alt=\"Webpack dev server running\"/>\n\nIn the next and final section to this guide, we'll set up the Webpack loaders and import all of Bootstrap's CSS and JavaScript.\n\n## Import Bootstrap\n\nImporting Bootstrap into Webpack requires the loaders we installed in the first section. We've installed them with npm, but now Webpack needs to be configured to use them.\n\n1. **Set up the loaders in `webpack.config.js`.** Your configuration file is now complete and should match the snippet below. The only new part here is the `module` section.\n\n ```js\n 'use strict'\n const path = require('path')\n const autoprefixer = require('autoprefixer')\n const HtmlWebpackPlugin = require('html-webpack-plugin')\n\n module.exports = {\n mode: 'development',\n entry: './src/js/main.js',\n output: {\n filename: 'main.js',\n path: path.resolve(__dirname, 'dist')\n },\n devServer: {\n static: path.resolve(__dirname, 'dist'),\n port: 8080,\n hot: true\n },\n plugins: [\n new HtmlWebpackPlugin({ template: './src/index.html' })\n ],\n module: {\n rules: [\n {\n test: /\\.(scss)$/,\n use: [\n {\n // Adds CSS to the DOM by injecting a `\u003Cstyle>` tag\n loader: 'style-loader'\n },\n {\n // Interprets `@import` and `url()` like `import/require()` and will resolve them\n loader: 'css-loader'\n },\n {\n // Loader for webpack to process CSS with PostCSS\n loader: 'postcss-loader',\n options: {\n postcssOptions: {\n plugins: [\n autoprefixer\n ]\n }\n }\n },\n {\n // Loads a SASS/SCSS file and compiles it to CSS\n loader: 'sass-loader'\n }\n ]\n }\n ]\n }\n }\n ```\n\n Here's a recap of why we need all these loaders. `style-loader` injects the CSS into a `\u003Cstyle>` element in the `\u003Chead>` of the HTML page, `css-loader` helps with using `@import` and `url()`, `postcss-loader` is required for Autoprefixer, and `sass-loader` allows us to use Sass.\n\n2. **Now, let's import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass.\n\n ```scss\n // Import all of Bootstrap's CSS\n @import \"bootstrap/scss/bootstrap\";\n ```\n\n *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*\n\n3. **Next we load the CSS and import Bootstrap's JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n // Import our custom CSS\n import '../scss/styles.scss'\n\n // Import all of Bootstrap's JS\n import * as bootstrap from 'bootstrap'\n ```\n\n You can also import JavaScript plugins individually as needed to keep bundle sizes down:\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n import Alert from 'bootstrap/js/dist/alert'\n\n // or, specify which plugins you need:\n import { Tooltip, Toast, Popover } from 'bootstrap'\n ```\n\n *[Read our JavaScript docs]([[docsref:/getting-started/javascript/]]) for more information on how to use Bootstrap's plugins.*\n\n4. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/webpack-dev-server-bootstrap.png\" alt=\"Webpack dev server running with Bootstrap\"/>\n\n Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Webpack example project](https://github.com/twbs/examples/tree/main/webpack) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.\n\n## Production optimizations\n\nDepending on your setup, you may want to implement some additional security and speed optimizations useful for running the project in production. Note that these optimizations are not applied on [the Webpack example project](https://github.com/twbs/examples/tree/main/webpack) and are up to you to implement.\n\n### Extracting CSS\n\nThe `style-loader` we configured above conveniently emits CSS into the bundle so that manually loading a CSS file in `dist/index.html` isn't necessary. This approach may not work with a strict Content Security Policy, however, and it may become a bottleneck in your application due to the large bundle size.\n\nTo separate the CSS so that we can load it directly from `dist/index.html`, use the `mini-css-extract-loader` Webpack plugin.\n\nFirst, install the plugin:\n\n```sh\nnpm install --save-dev mini-css-extract-plugin\n```\n\nThen instantiate and use the plugin in the Webpack configuration:\n\n```diff\n--- a/webpack.config.js\n+++ b/webpack.config.js\n@@ -3,6 +3,7 @@\n const path = require('path')\n const autoprefixer = require('autoprefixer')\n const HtmlWebpackPlugin = require('html-webpack-plugin')\n+const miniCssExtractPlugin = require('mini-css-extract-plugin')\n\n module.exports = {\n mode: 'development',\n@@ -17,7 +18,8 @@ module.exports = {\n hot: true\n },\n plugins: [\n- new HtmlWebpackPlugin({ template: './src/index.html' })\n+ new HtmlWebpackPlugin({ template: './src/index.html' }),\n+ new miniCssExtractPlugin()\n ],\n module: {\n rules: [\n@@ -25,8 +27,8 @@ module.exports = {\n test: /\\.(scss)$/,\n use: [\n {\n- // Adds CSS to the DOM by injecting a `\u003Cstyle>` tag\n- loader: 'style-loader'\n+ // Extracts CSS for each JS file that includes CSS\n+ loader: miniCssExtractPlugin.loader\n },\n {\n```\n\nAfter running `npm run build` again, there will be a new file `dist/main.css`, which will contain all of the CSS imported by `src/js/main.js`. If you view `dist/index.html` in your browser now, the style will be missing, as it is now in `dist/main.css`. You can include the generated CSS in `dist/index.html` like this:\n\n```diff\n--- a/dist/index.html\n+++ b/dist/index.html\n@@ -3,6 +3,7 @@\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ \u003Clink rel=\"stylesheet\" href=\"./main.css\">\n \u003Ctitle>Bootstrap w/ Webpack\u003C/title>\n \u003C/head>\n \u003Cbody>\n```\n\n### Extracting SVG files\n\nBootstrap's CSS includes multiple references to SVG files via inline `data:` URIs. If you define a Content Security Policy for your project that blocks `data:` URIs for images, then these SVG files will not load. You can get around this problem by extracting the inline SVG files using Webpack's asset modules feature.\n\nConfigure Webpack to extract inline SVG files like this:\n\n```diff\n--- a/webpack.config.js\n+++ b/webpack.config.js\n@@ -23,6 +23,14 @@ module.exports = {\n },\n module: {\n rules: [\n+ {\n+ mimetype: 'image/svg+xml',\n+ scheme: 'data',\n+ type: 'asset/resource',\n+ generator: {\n+ filename: 'icons/[hash].svg'\n+ }\n+ },\n {\n test: /\\.(scss)$/,\n use: [\n```\n\nAfter running `npm run build` again, you'll find the SVG files extracted into `dist/icons` and properly referenced from CSS.\n\n\u003CGuideFooter />","src/content/docs/getting-started/webpack.mdx","5f3e7e8daa0c2838","getting-started/webpack.mdx","getting-started/vite",{"id":800,"data":802,"body":808,"filePath":809,"digest":810,"legacyId":811,"deferredRender":139},{"added":803,"description":805,"thumbnail":806,"title":807,"toc":139},{"show_badge":325,"version":804},"5.2","The official guide for how to include and bundle Bootstrap's CSS and JavaScript in your project using Vite.","guides/bootstrap-vite@2x.png","Bootstrap and Vite","\u003Cimg class=\"d-block mx-auto mb-4 img-fluid rounded-3\" srcset=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-vite.png, /docs/[[config:docs_version]]/assets/img/guides/bootstrap-vite@2x.png 2x\" src=\"/docs/[[config:docs_version]]/assets/img/guides/bootstrap-vite.png\" width=\"800\" height=\"400\" alt=\"\" />\n\n\u003CCallout>\n**Want to skip to the end?** Download the source code and working demo for this guide from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/vite). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/vite?file=index.html) for live editing.\n\u003C/Callout>\n\n## What is Vite?\n\n[Vite](https://vite.dev/) is a modern frontend build tool designed for speed and simplicity. It provides an efficient and streamlined development experience, especially for modern JavaScript frameworks.\n\n## Setup\n\nWe're building a Vite project with Bootstrap from scratch, so there are some prerequisites and upfront steps before we can really get started. This guide requires you to have Node.js installed and some familiarity with the terminal.\n\n1. **Create a project folder and set up npm.** We'll create the `my-project` folder and initialize npm with the `-y` argument to avoid it asking us all the interactive questions.\n\n ```sh\n mkdir my-project && cd my-project\n npm init -y\n ```\n\n2. **Install Vite.** Unlike our Webpack guide, there’s only a single build tool dependency here. We use `--save-dev` to signal that this dependency is only for development use and not for production.\n\n ```sh\n npm i --save-dev vite\n ```\n\n3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Popper since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don't plan on using those components, you can omit Popper here.\n\n ```sh\n npm i --save bootstrap @popperjs/core\n ```\n\n4. **Install additional dependency.** In addition to Vite and Bootstrap, we need another dependency (Sass) to properly import and bundle Bootstrap's CSS.\n\n ```sh\n npm i --save-dev sass\n ```\n\nNow that we have all the necessary dependencies installed and set up, we can get to work creating the project files and importing Bootstrap.\n\n## Project structure\n\nWe've already created the `my-project` folder and initialized npm. Now we'll also create our `src` folder, stylesheet, and JavaScript file to round out the project structure. Run the following from `my-project`, or manually create the folder and file structure shown below.\n\n```sh\nmkdir {src,src/js,src/scss}\ntouch src/index.html src/js/main.js src/scss/styles.scss vite.config.js\n```\n\nWhen you're done, your complete project should look like this:\n\n```text\nmy-project/\n├── src/\n│ ├── js/\n│ │ └── main.js\n│ └── scss/\n│ | └── styles.scss\n| └── index.html\n├── package-lock.json\n├── package.json\n└── vite.config.js\n```\n\nAt this point, everything is in the right place, but Vite won't work because we haven't filled in our `vite.config.js` yet.\n\n## Configure Vite\n\nWith dependencies installed and our project folder ready for us to start coding, we can now configure Vite and run our project locally.\n\n1. **Open `vite.config.js` in your editor.** Since it's blank, we'll need to add some boilerplate config to it so we can start our server. This part of the config tells Vite where to look for our project's JavaScript and how the development server should behave (pulling from the `src` folder with hot reload).\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n import { resolve } from 'path'\n\n export default {\n root: resolve(__dirname, 'src'),\n build: {\n outDir: '../dist'\n },\n server: {\n port: 8080\n }\n }\n ```\n\n2. **Next we fill in `src/index.html`.** This is the HTML page Vite will load in the browser to utilize the bundled CSS and JS we'll add to it in later steps.\n\n ```html\n \u003C!doctype html>\n \u003Chtml lang=\"en\">\n \u003Chead>\n \u003Cmeta charset=\"utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n \u003Ctitle>Bootstrap w/ Vite\u003C/title>\n \u003Cscript type=\"module\" src=\"./js/main.js\">\u003C/script>\n \u003C/head>\n \u003Cbody>\n \u003Cdiv class=\"container py-4 px-3 mx-auto\">\n \u003Ch1>Hello, Bootstrap and Vite!\u003C/h1>\n \u003Cbutton class=\"btn btn-primary\">Primary button\u003C/button>\n \u003C/div>\n \u003C/body>\n \u003C/html>\n ```\n\n We're including a little bit of Bootstrap styling here with the `div class=\"container\"` and `\u003Cbutton>` so that we see when Bootstrap's CSS is loaded by Vite.\n\n3. **Now we need an npm script to run Vite.** Open `package.json` and add the `start` script shown below (you should already have the test script). We'll use this script to start our local Vite dev server.\n\n ```json\n {\n // ...\n \"scripts\": {\n \"start\": \"vite\",\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n // ...\n }\n ```\n\n4. **And finally, we can start Vite.** From the `my-project` folder in your terminal, run that newly added npm script:\n\n ```sh\n npm start\n ```\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/vite-dev-server.png\" alt=\"Vite dev server running\" />\n\nIn the next and final section to this guide, we’ll import all of Bootstrap’s CSS and JavaScript.\n\n## Import Bootstrap\n\n1. **Import Bootstrap's CSS.** Add the following to `src/scss/styles.scss` to import all of Bootstrap's source Sass.\n\n ```scss\n // Import all of Bootstrap's CSS\n @import \"bootstrap/scss/bootstrap\";\n ```\n\n *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*\n\n3. **Next we load the CSS and import Bootstrap's JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap's JS. Popper will be imported automatically through Bootstrap.\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n // Import our custom CSS\n import '../scss/styles.scss'\n\n // Import all of Bootstrap's JS\n import * as bootstrap from 'bootstrap'\n ```\n\n You can also import JavaScript plugins individually as needed to keep bundle sizes down:\n\n {/* TODO(Astro migration): \u003C!-- eslint-skip --> */}\n ```js\n import Alert from 'bootstrap/js/dist/alert';\n\n // or, specify which plugins you need:\n import { Tooltip, Toast, Popover } from 'bootstrap';\n ```\n\n *[Read our JavaScript docs]([[docsref:/getting-started/javascript/]]) for more information on how to use Bootstrap's plugins.*\n\n4. **And you're done! 🎉** With Bootstrap's source Sass and JS fully loaded, your local development server should now look like this:\n\n \u003Cimg class=\"img-fluid\" src=\"/docs/[[config:docs_version]]/assets/img/guides/vite-dev-server-bootstrap.png\" alt=\"Vite dev server running with Bootstrap\" />\n\n Now you can start adding any Bootstrap components you want to use. Be sure to [check out the complete Vite example project](https://github.com/twbs/examples/tree/main/vite) for how to include additional custom Sass and optimize your build by importing only the parts of Bootstrap's CSS and JS that you need.\n\n\u003CGuideFooter />","src/content/docs/getting-started/vite.mdx","0823f7675719deb1","getting-started/vite.mdx","helpers/clearfix",{"id":812,"data":814,"body":818,"filePath":819,"digest":820,"legacyId":821,"deferredRender":139},{"aliases":815,"description":816,"title":817},"/docs/[[config:docs_version]]/helpers/","Quickly and easily clear floated content within a container by adding a clearfix utility.","Clearfix","Easily clear `float`s by adding `.clearfix` **to the parent element**. Can also be used as a mixin.\n\nUse in HTML:\n\n```html\n\u003Cdiv class=\"clearfix\">...\u003C/div>\n```\n\nThe mixin source code:\n\n\u003CScssDocs name=\"clearfix\" file=\"scss/mixins/_clearfix.scss\" />\n\nUse the mixin in SCSS:\n\n```scss\n.element {\n @include clearfix;\n}\n```\n\nThe following example shows how the clearfix can be used. Without the clearfix the wrapping div would not span around the buttons which would cause a broken layout.\n\n\u003CExample code={`\u003Cdiv class=\"bg-info clearfix\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary float-start\">Example Button floated left\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-secondary float-end\">Example Button floated right\u003C/button>\n\u003C/div>`} />","src/content/docs/helpers/clearfix.mdx","3f1c961cb85d0fcb","helpers/clearfix.mdx","helpers/color-background",{"id":822,"data":824,"body":828,"filePath":829,"digest":830,"legacyId":831,"deferredRender":139},{"added":825,"description":826,"title":827,"toc":139},{"version":804},"Set a background color with contrasting foreground color.","Color and background","import { getData } from '@libs/data'\n\n## Overview\n\nColor and background helpers combine the power of our [`.text-*` utilities]([[docsref:/utilities/colors]]) and [`.bg-*` utilities]([[docsref:/utilities/background]]) in one class. Using our Sass `color-contrast()` function, we automatically determine a contrasting `color` for a particular `background-color`.\n\n\u003CCallout type=\"warning\">\n**Heads up!** There's currently no support for a CSS-native `color-contrast` function, so we use our own via Sass. This means that customizing our theme colors via CSS variables may cause color contrast issues with these utilities.\n\u003C/Callout>\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"text-bg-${themeColor.name} p-3\">${themeColor.title} with contrasting color\u003C/div>`)} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## With components\n\nUse them in place of combined `.text-*` and `.bg-*` classes, like on [badges]([[docsref:/components/badge#background-colors]]):\n\n\u003CExample code={`\u003Cspan class=\"badge text-bg-primary\">Primary\u003C/span>\n\u003Cspan class=\"badge text-bg-info\">Info\u003C/span>`} />\n\nOr on [cards]([[docsref:/components/card#background-and-color]]):\n\n\u003CExample code={`\u003Cdiv class=\"card text-bg-primary mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header\">Header\u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>\n\u003Cdiv class=\"card text-bg-info mb-3\" style=\"max-width: 18rem;\">\n \u003Cdiv class=\"card-header\">Header\u003C/div>\n \u003Cdiv class=\"card-body\">\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003C/div>\n\u003C/div>`} />","src/content/docs/helpers/color-background.mdx","d2735557bf0a602c","helpers/color-background.mdx","helpers/colored-links",{"id":832,"data":834,"body":837,"filePath":838,"digest":839,"legacyId":840,"deferredRender":139},{"description":835,"title":836,"toc":139},"Colored links with hover states","Colored links","import { getData } from '@libs/data'\n\n## Link colors\n\nYou can use the `.link-*` classes to colorize links. Unlike the [`.text-*` classes]([[docsref:/utilities/colors]]), these classes have a `:hover` and `:focus` state. Some of the link styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast.\n\n\u003CCallout>\n**Heads up!** `.link-body-emphasis` is currently the only colored link that adapts to color modes. It's treated as a special case until v6 arrives and we can more thoroughly rebuild our theme colors for color modes. Until then, it's a unique, high-contrast link color with custom `:hover` and `:focus` styles. However, it still responds to the new link utilities.\n\u003C/Callout>\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"link-${themeColor.name}\">${themeColor.title} link\u003C/a>\u003C/p>`),\n `\u003Cp>\u003Ca href=\"#\" class=\"link-body-emphasis\">Emphasis link\u003C/a>\u003C/p>`\n]} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Link utilities\n\n\u003CAddedIn version=\"5.3.0\"/>\n\nColored links can also be modified by our [link utilities]([[docsref:/utilities/link/]]).\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"link-${themeColor.name} link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover\">${themeColor.title} link\u003C/a>\u003C/p>`),\n `\u003Cp>\u003Ca href=\"#\" class=\"link-body-emphasis link-offset-2 link-underline-opacity-25 link-underline-opacity-75-hover\">Emphasis link\u003C/a>\u003C/p>`\n]} />","src/content/docs/helpers/colored-links.mdx","aa46fbbe4d927d43","helpers/colored-links.mdx","helpers/icon-link",{"id":841,"data":843,"body":847,"filePath":848,"digest":849,"legacyId":850,"deferredRender":139},{"added":844,"description":845,"title":846,"toc":139},{"version":252},"Quickly create stylized hyperlinks with Bootstrap Icons or other icons.","Icon link","The icon link helper component modifies our default link styles to enhance their appearance and quickly align any pairing of icon and text. Alignment is set via inline flexbox styling and a default `gap` value. We stylize the underline with a custom offset and color. Icons are automatically sized to `1em` to best match their associated text's `font-size`.\n\nIcon links assume [Bootstrap Icons](https://icons.getbootstrap.com) are being used, but you can use any icon or image you like.\n\n\u003CCallout>\nWhen icons are purely decorative, they should be hidden from assistive technologies using `aria-hidden=\"true\"`, as we've done in our examples. For icons that convey meaning, provide an appropriate text alternative by adding `role=\"img\"` and an appropriate `aria-label=\"...\"` to the SVGs.\n\u003C/Callout>\n\n## Example\n\nTake a regular `\u003Ca>` element, add `.icon-link`, and insert an icon on either the left or right of your link text. The icon is automatically sized, placed, and colored.\n\n\u003CExample code={`\u003Ca class=\"icon-link\" href=\"#\">\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#box-seam\">\u003C/use>\u003C/svg>\n Icon link\n\u003C/a>`} />\n\n\u003CExample code={`\u003Ca class=\"icon-link\" href=\"#\">\n Icon link\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#arrow-right\">\u003C/use>\u003C/svg>\n\u003C/a>`} />\n\n## Style on hover\n\nAdd `.icon-link-hover` to move the icon to the right on hover.\n\n\u003CExample code={`\u003Ca class=\"icon-link icon-link-hover\" href=\"#\">\n Icon link\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#arrow-right\">\u003C/use>\u003C/svg>\n\u003C/a>`} />\n\n## Customize\n\nModify the styling of an icon link with our link CSS variables, Sass variables, utilities, or custom styles.\n\n### CSS variables\n\nModify the `--bs-link-*` and `--bs-icon-link-*` CSS variables as needed to change the default appearance.\n\nCustomize the hover `transform` by overriding the `--bs-icon-link-transform` CSS variable:\n\n\u003CExample code={`\u003Ca class=\"icon-link icon-link-hover\" style=\"--bs-icon-link-transform: translate3d(0, -.125rem, 0);\" href=\"#\">\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#clipboard\">\u003C/use>\u003C/svg>\n Icon link\n\u003C/a>`} />\n\nCustomize the color by overriding the `--bs-link-*` CSS variable:\n\n\u003CExample code={`\u003Ca class=\"icon-link icon-link-hover\" style=\"--bs-link-hover-color-rgb: 25, 135, 84;\" href=\"#\">\n Icon link\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#arrow-right\">\u003C/use>\u003C/svg>\n\u003C/a>`} />\n\n## Sass variables\n\nCustomize the icon link Sass variables to modify all icon link styles across your Bootstrap-powered project.\n\n\u003CScssDocs name=\"icon-link-variables\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nModify icon links with any of [our link utilities]([[docsref:/utilities/link/]]) for modifying underline color and offset.\n\n\u003CExample code={`\u003Ca class=\"icon-link icon-link-hover link-success link-underline-success link-underline-opacity-25\" href=\"#\">\n Icon link\n \u003Csvg class=\"bi\" aria-hidden=\"true\">\u003Cuse xlink:href=\"#arrow-right\">\u003C/use>\u003C/svg>\n\u003C/a>`} />","src/content/docs/helpers/icon-link.mdx","f91aca8a5b8b3dbc","helpers/icon-link.mdx","helpers/focus-ring",{"id":851,"data":853,"body":857,"filePath":858,"digest":859,"legacyId":860,"deferredRender":139},{"added":854,"description":855,"title":856,"toc":139},{"version":252},"Utility classes that allows you to add and modify custom focus ring styles to elements and components.","Focus ring","import { getData } from '@libs/data'\n\nThe `.focus-ring` helper removes the default `outline` on `:focus`, replacing it with a `box-shadow` that can be more broadly customized. The new shadow is made up of a series of CSS variables, inherited from the `:root` level, that can be modified for any element or component.\n\n## Example\n\nClick directly on the link below to see the focus ring in action, or into the example below and then press \u003Ckbd>Tab\u003C/kbd>.\n\n\u003CExample code={`\u003Ca href=\"#\" class=\"d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2\">\n Custom focus ring\n\u003C/a>`} />\n\n## Customize\n\nModify the styling of a focus ring with our CSS variables, Sass variables, utilities, or custom styles.\n\n### CSS variables\n\nModify the `--bs-focus-ring-*` CSS variables as needed to change the default appearance.\n\n\u003CExample code={`\u003Ca href=\"#\" class=\"d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2\" style=\"--bs-focus-ring-color: rgba(var(--bs-success-rgb), .25)\">\n Green focus ring\n\u003C/a>`} />\n\n`.focus-ring` sets styles via global CSS variables that can be overridden on any parent element, as shown above. These variables are generated from their Sass variable counterparts.\n\n\u003CScssDocs name=\"root-focus-variables\" file=\"scss/_root.scss\" />\n\nBy default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values. Modify them to change the default appearance.\n\n\u003CExample code={`\u003Ca href=\"#\" class=\"d-inline-flex focus-ring py-1 px-2 text-decoration-none border rounded-2\" style=\"--bs-focus-ring-x: 10px; --bs-focus-ring-y: 10px; --bs-focus-ring-blur: 4px\">\n Blurry offset focus ring\n\u003C/a>`} />\n\n### Sass variables\n\nCustomize the focus ring Sass variables to modify all usage of the focus ring styles across your Bootstrap-powered project.\n\n\u003CScssDocs name=\"focus-ring-variables\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nIn addition to `.focus-ring`, we have several `.focus-ring-*` utilities to modify the helper class defaults. Modify the color with any of our [theme colors]([[docsref:/customize/color#theme-colors]]). Note that the light and dark variants may not be visible on all background colors given current color mode support.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"d-inline-flex focus-ring focus-ring-${themeColor.name} py-1 px-2 text-decoration-none border rounded-2\">${themeColor.title} focus\u003C/a>\u003C/p>`)} />\n\nFocus ring utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-focus-ring\" file=\"scss/_utilities.scss\" />","src/content/docs/helpers/focus-ring.mdx","562a54ab99ec77a3","helpers/focus-ring.mdx","helpers/position",{"id":861,"data":863,"body":866,"filePath":867,"digest":868,"legacyId":869,"deferredRender":139},{"description":864,"title":865,"toc":139},"Use these helpers for quickly configuring the position of an element.","Position","## Fixed top\n\nPosition an element at the top of the viewport, from edge to edge. Be sure you understand the ramifications of fixed position in your project; you may need to add additional CSS.\n\n```html\n\u003Cdiv class=\"fixed-top\">...\u003C/div>\n```\n\n## Fixed bottom\n\nPosition an element at the bottom of the viewport, from edge to edge. Be sure you understand the ramifications of fixed position in your project; you may need to add additional CSS.\n\n```html\n\u003Cdiv class=\"fixed-bottom\">...\u003C/div>\n```\n\n## Sticky top\n\nPosition an element at the top of the viewport, from edge to edge, but only after you scroll past it.\n\n```html\n\u003Cdiv class=\"sticky-top\">...\u003C/div>\n```\n\n## Responsive sticky top\n\nResponsive variations also exist for `.sticky-top` utility.\n\n```html\n\u003Cdiv class=\"sticky-sm-top\">Stick to the top on viewports sized SM (small) or wider\u003C/div>\n\u003Cdiv class=\"sticky-md-top\">Stick to the top on viewports sized MD (medium) or wider\u003C/div>\n\u003Cdiv class=\"sticky-lg-top\">Stick to the top on viewports sized LG (large) or wider\u003C/div>\n\u003Cdiv class=\"sticky-xl-top\">Stick to the top on viewports sized XL (extra-large) or wider\u003C/div>\n\u003Cdiv class=\"sticky-xxl-top\">Stick to the top on viewports sized XXL (extra-extra-large) or wider\u003C/div>\n```\n\n## Sticky bottom\n\nPosition an element at the bottom of the viewport, from edge to edge, but only after you scroll past it.\n\n```html\n\u003Cdiv class=\"sticky-bottom\">...\u003C/div>\n```\n\n## Responsive sticky bottom\n\nResponsive variations also exist for `.sticky-bottom` utility.\n\n```html\n\u003Cdiv class=\"sticky-sm-bottom\">Stick to the bottom on viewports sized SM (small) or wider\u003C/div>\n\u003Cdiv class=\"sticky-md-bottom\">Stick to the bottom on viewports sized MD (medium) or wider\u003C/div>\n\u003Cdiv class=\"sticky-lg-bottom\">Stick to the bottom on viewports sized LG (large) or wider\u003C/div>\n\u003Cdiv class=\"sticky-xl-bottom\">Stick to the bottom on viewports sized XL (extra-large) or wider\u003C/div>\n\u003Cdiv class=\"sticky-xxl-bottom\">Stick to the bottom on viewports sized XXL (extra-extra-large) or wider\u003C/div>\n```","src/content/docs/helpers/position.mdx","283c24febbd99b27","helpers/position.mdx","helpers/ratio",{"id":870,"data":872,"body":875,"filePath":876,"digest":877,"legacyId":878,"deferredRender":139},{"description":873,"title":874,"toc":139},"Use generated pseudo elements to make an element maintain the aspect ratio of your choosing. Perfect for responsively handling video or slideshow embeds based on the width of the parent.","Ratios","## About\n\nUse the ratio helper to manage the aspect ratios of external content like `\u003Ciframe>`s, `\u003Cembed>`s, `\u003Cvideo>`s, and `\u003Cobject>`s. These helpers also can be used on any standard HTML child element (e.g., a `\u003Cdiv>` or `\u003Cimg>`). Styles are applied from the parent `.ratio` class directly to the child.\n\nAspect ratios are declared in a Sass map and included in each class via CSS variable, which also allows [custom aspect ratios](#custom-ratios).\n\n\u003CCallout>\n**Pro-Tip!** You don't need `frameborder=\"0\"` on your `\u003Ciframe>`s as we override that for you in [Reboot]([[docsref:/content/reboot]]).\n\u003C/Callout>\n\n## Example\n\nWrap any embed, like an `\u003Ciframe>`, in a parent element with `.ratio` and an aspect ratio class. The immediate child element is automatically sized thanks to our universal selector `.ratio > *`.\n\n\u003CExample code={`\u003Cdiv class=\"ratio ratio-16x9\">\n \u003Ciframe src=\"https://www.youtube.com/embed/zpOULjyy-n8?rel=0\" title=\"YouTube video\" allowfullscreen>\u003C/iframe>\n\u003C/div>`} />\n\n## Aspect ratios\n\nAspect ratios can be customized with modifier classes. By default the following ratio classes are provided:\n\n\u003CExample class=\"bd-example-ratios\" code={`\u003Cdiv class=\"ratio ratio-1x1\">\n \u003Cdiv>1x1\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"ratio ratio-4x3\">\n \u003Cdiv>4x3\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"ratio ratio-16x9\">\n \u003Cdiv>16x9\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"ratio ratio-21x9\">\n \u003Cdiv>21x9\u003C/div>\n\u003C/div>`} />\n\n## Custom ratios\n\nEach `.ratio-*` class includes a CSS custom property (or CSS variable) in the selector. You can override this CSS variable to create custom aspect ratios on the fly with some quick math on your part.\n\nFor example, to create a 2x1 aspect ratio, set `--bs-aspect-ratio: 50%` on the `.ratio`.\n\n\u003CExample class=\"bd-example-ratios\" code={`\u003Cdiv class=\"ratio\" style=\"--bs-aspect-ratio: 50%;\">\n \u003Cdiv>2x1\u003C/div>\n\u003C/div>`} />\n\nThis CSS variable makes it easy to modify the aspect ratio across breakpoints. The following is 4x3 to start, but changes to a custom 2x1 at the medium breakpoint.\n\n```scss\n.ratio-4x3 {\n @include media-breakpoint-up(md) {\n --bs-aspect-ratio: 50%; // 2x1\n }\n}\n```\n\n\u003CExample class=\"bd-example-ratios bd-example-ratios-breakpoint\" code={`\u003Cdiv class=\"ratio ratio-4x3\">\n \u003Cdiv>4x3, then 2x1\u003C/div>\n\u003C/div>`} />\n\n\n## Sass maps\n\nWithin `_variables.scss`, you can change the aspect ratios you want to use. Here's our default `$ratio-aspect-ratios` map. Modify the map as you like and recompile your Sass to put them to use.\n\n\u003CScssDocs name=\"aspect-ratios\" file=\"scss/_variables.scss\" />","src/content/docs/helpers/ratio.mdx","13873c288c73f69e","helpers/ratio.mdx","helpers/stacks",{"id":879,"data":881,"body":885,"filePath":886,"digest":887,"legacyId":888,"deferredRender":139},{"added":882,"description":883,"title":884,"toc":139},{"version":499},"Shorthand helpers that build on top of our flexbox utilities to make component layout faster and easier than ever.","Stacks","Stacks offer a shortcut for applying a number of flexbox properties to quickly and easily create layouts in Bootstrap. All credit for the concept and implementation goes to the open source [Pylon project](https://almonk.github.io/pylon/).\n\n\u003CCallout type=\"warning\">\n**Heads up!** Support for gap utilities with flexbox isn't available in Safari prior to 14.5, so consider verifying your intended browser support. Grid layout should have no issues. [Read more](https://caniuse.com/flexbox-gap).\n\u003C/Callout>\n\n## Vertical\n\nUse `.vstack` to create vertical layouts. Stacked items are full-width by default. Use `.gap-*` utilities to add space between items.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"vstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2\">Second item\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\n## Horizontal\n\nUse `.hstack` for horizontal layouts. Stacked items are vertically centered by default and only take up their necessary width. Use `.gap-*` utilities to add space between items.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2\">Second item\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\nUsing horizontal margin utilities like `.ms-auto` as spacers:\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2 ms-auto\">Second item\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\nAnd with [vertical rules]([[docsref:/helpers/vertical-rule]]):\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2 ms-auto\">Second item\u003C/div>\n \u003Cdiv class=\"vr\">\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\n## Examples\n\nUse `.vstack` to stack buttons and other elements:\n\n\u003CExample code={`\u003Cdiv class=\"vstack gap-2 col-md-5 mx-auto\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">Save changes\u003C/button>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-secondary\">Cancel\u003C/button>\n\u003C/div>`} />\n\nCreate an inline form with `.hstack`:\n\n\u003CExample code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cinput class=\"form-control me-auto\" type=\"text\" placeholder=\"Add your item here...\" aria-label=\"Add your item here...\">\n \u003Cbutton type=\"button\" class=\"btn btn-secondary\">Submit\u003C/button>\n \u003Cdiv class=\"vr\">\u003C/div>\n \u003Cbutton type=\"button\" class=\"btn btn-outline-danger\">Reset\u003C/button>\n\u003C/div>`} />\n\n## CSS\n\n\u003CScssDocs name=\"stacks\" file=\"scss/helpers/_stacks.scss\" />","src/content/docs/helpers/stacks.mdx","21c929105bed4df7","helpers/stacks.mdx","helpers/text-truncation",{"id":889,"data":891,"body":894,"filePath":895,"digest":896,"legacyId":897,"deferredRender":139},{"description":892,"title":893,"toc":325},"Truncate long strings of text with an ellipsis.","Text truncation","For longer content, you can add a `.text-truncate` class to truncate the text with an ellipsis. **Requires `display: inline-block` or `display: block`.**\n\n\u003CExample code={`\u003C!-- Block level -->\n\u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-2 text-truncate\">\n This text is quite long, and will be truncated once displayed.\n \u003C/div>\n\u003C/div>\n\n\u003C!-- Inline level -->\n\u003Cspan class=\"d-inline-block text-truncate\" style=\"max-width: 150px;\">\n This text is quite long, and will be truncated once displayed.\n\u003C/span>`} />","src/content/docs/helpers/text-truncation.mdx","8bc7768bd2eb2b6e","helpers/text-truncation.mdx","helpers/stretched-link",{"id":898,"data":900,"body":903,"filePath":904,"digest":905,"legacyId":906,"deferredRender":139},{"description":901,"title":902},"Make any HTML element or Bootstrap component clickable by \"stretching\" a nested link via CSS.","Stretched link","Add `.stretched-link` to a link to make its [containing block](https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block) clickable via a `::after` pseudo element. In most cases, this means that an element with `position: relative;` that contains a link with the `.stretched-link` class is clickable. Please note given [how CSS `position` works](https://www.w3.org/TR/CSS21/visuren.html#propdef-position), `.stretched-link` cannot be mixed with most table elements.\n\nCards have `position: relative` by default in Bootstrap, so in this case you can safely add the `.stretched-link` class to a link in the card without any other HTML changes.\n\nMultiple links and tap targets are not recommended with stretched links. However, some `position` and `z-index` styles can help should this be required.\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text={false} title=\"Card image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card with stretched link\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Ca href=\"#\" class=\"btn btn-primary stretched-link\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\nMost custom components do not have `position: relative` by default, so we need to add the `.position-relative` here to prevent the link from stretching outside the parent element.\n\n\u003CExample code={`\u003Cdiv class=\"d-flex position-relative\">\n \u003CPlaceholder width=\"144\" height=\"144\" class=\"flex-shrink-0 me-3\" text={false} title=\"Generic placeholder image22222\" />\n \u003Cdiv>\n \u003Ch5 class=\"mt-0\">Custom component with stretched link\u003C/h5>\n \u003Cp>This is some placeholder content for the custom component. It is intended to mimic what some real-world content would look like, and we're using it here to give the component a bit of body and size.\u003C/p>\n \u003Ca href=\"#\" class=\"stretched-link\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample code={`\u003Cdiv class=\"row g-0 bg-body-secondary position-relative\">\n \u003Cdiv class=\"col-md-6 mb-md-0 p-md-4\">\n \u003CPlaceholder width=\"100%\" height=\"200\" class=\"w-100\" text={false} title=\"Generic placeholder image\" />\n \u003C/div>\n \u003Cdiv class=\"col-md-6 p-4 ps-md-0\">\n \u003Ch5 class=\"mt-0\">Columns with stretched link\u003C/h5>\n \u003Cp>Another instance of placeholder content for this other custom component. It is intended to mimic what some real-world content would look like, and we're using it here to give the component a bit of body and size.\u003C/p>\n \u003Ca href=\"#\" class=\"stretched-link\">Go somewhere\u003C/a>\n \u003C/div>\n\u003C/div>`} />\n\n## Identifying the containing block\n\nIf the stretched link doesn't seem to work, the [containing block](https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#Identifying_the_containing_block) will probably be the cause. The following CSS properties will make an element the containing block:\n\n- A `position` value other than `static`\n- A `transform` or `perspective` value other than `none`\n- A `will-change` value of `transform` or `perspective`\n- A `filter` value other than `none` or a `will-change` value of `filter` (only works on Firefox)\n\n\u003CExample code={`\u003Cdiv class=\"card\" style=\"width: 18rem;\">\n \u003CPlaceholder width=\"100%\" height=\"180\" class=\"card-img-top\" text={false} title=\"Card image cap\" />\n \u003Cdiv class=\"card-body\">\n \u003Ch5 class=\"card-title\">Card with stretched links\u003C/h5>\n \u003Cp class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.\u003C/p>\n \u003Cp class=\"card-text\">\n \u003Ca href=\"#\" class=\"stretched-link text-danger\" style=\"position: relative;\">Stretched link will not work here, because \u003Ccode>position: relative\u003C/code> is added to the link\u003C/a>\n \u003C/p>\n \u003Cp class=\"card-text bg-body-tertiary\" style=\"transform: rotate(0);\">\n This \u003Ca href=\"#\" class=\"text-warning stretched-link\">stretched link\u003C/a> will only be spread over the \u003Ccode>p\u003C/code>-tag, because a transform is applied to it.\n \u003C/p>\n \u003C/div>\n\u003C/div>`} />","src/content/docs/helpers/stretched-link.mdx","8bf85fea5f693105","helpers/stretched-link.mdx","helpers/visually-hidden",{"id":907,"data":909,"body":913,"filePath":914,"digest":915,"legacyId":916,"deferredRender":139},{"aliases":910,"description":911,"title":912},"/docs/[[config:docs_version]]/helpers/screen-readers/","Use these helpers to visually hide elements but keep them accessible to assistive technologies.","Visually hidden","Visually hide an element while still allowing it to be exposed to assistive technologies (such as screen readers) with `.visually-hidden`. Use `.visually-hidden-focusable` to visually hide an element by default, but to display it when it's focused (e.g. by a keyboard-only user). `.visually-hidden-focusable` can also be applied to a container–thanks to `:focus-within`, the container will be displayed when any child element of the container receives focus.\n\n\u003CExample code={`\u003Ch2 class=\"visually-hidden\">Title for screen readers\u003C/h2>\n\u003Ca class=\"visually-hidden-focusable\" href=\"#content\">Skip to main content\u003C/a>\n\u003Cdiv class=\"visually-hidden-focusable\">A container with a \u003Ca href=\"#\">focusable element\u003C/a>.\u003C/div>`} />\n\nBoth `visually-hidden` and `visually-hidden-focusable` can also be used as mixins.\n\n```scss\n// Usage as a mixin\n\n.visually-hidden-title {\n @include visually-hidden;\n}\n\n.skip-navigation {\n @include visually-hidden-focusable;\n}\n```","src/content/docs/helpers/visually-hidden.mdx","ad52a33d7a019095","helpers/visually-hidden.mdx","helpers/vertical-rule",{"id":917,"data":919,"body":923,"filePath":924,"digest":925,"legacyId":926,"deferredRender":139},{"added":920,"description":921,"title":922,"toc":139},{"version":499},"Use the custom vertical rule helper to create vertical dividers like the `\u003Chr>` element.","Vertical rule","## How it works\n\nVertical rules are inspired by the `\u003Chr>` element, allowing you to create vertical dividers in common layouts. They're styled just like `\u003Chr>` elements:\n\n- They're `1px` wide\n- They have `min-height` of `1em`\n- Their color is set via `currentColor` and `opacity`\n\nCustomize them with additional styles as needed.\n\n## Example\n\n\u003CExample code={`\u003Cdiv class=\"vr\">\u003C/div>`} />\n\nVertical rules scale their height in flex layouts:\n\n\u003CExample code={`\u003Cdiv class=\"d-flex\" style=\"height: 200px;\">\n \u003Cdiv class=\"vr\">\u003C/div>\n\u003C/div>`} />\n\n## With stacks\n\nThey can also be used in [stacks]([[docsref:/helpers/stacks]]):\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"hstack gap-3\">\n \u003Cdiv class=\"p-2\">First item\u003C/div>\n \u003Cdiv class=\"p-2 ms-auto\">Second item\u003C/div>\n \u003Cdiv class=\"vr\">\u003C/div>\n \u003Cdiv class=\"p-2\">Third item\u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Sass variables\n\nCustomize the vertical rule Sass variable to change its width.\n\n\u003CScssDocs name=\"vr-variables\" file=\"scss/_variables.scss\" />","src/content/docs/helpers/vertical-rule.mdx","2cd5ea2f87727263","helpers/vertical-rule.mdx","layout/breakpoints",{"id":927,"data":929,"body":933,"filePath":934,"digest":935,"legacyId":936,"deferredRender":139},{"aliases":930,"description":931,"title":932,"toc":139},"/docs/[[config:docs_version]]/layout/","Breakpoints are customizable widths that determine how your responsive layout behaves across device or viewport sizes in Bootstrap.","Breakpoints","## Core concepts\n\n- **Breakpoints are the building blocks of responsive design.** Use them to control when your layout can be adapted at a particular viewport or device size.\n\n- **Use media queries to architect your CSS by breakpoint.** Media queries are a feature of CSS that allow you to conditionally apply styles based on a set of browser and operating system parameters. We most commonly use `min-width` in our media queries.\n\n- **Mobile first, responsive design is the goal.** Bootstrap's CSS aims to apply the bare minimum of styles to make a layout work at the smallest breakpoint, and then layers on styles to adjust that design for larger devices. This optimizes your CSS, improves rendering time, and provides a great experience for your visitors.\n\n## Available breakpoints\n\nBootstrap includes six default breakpoints, sometimes referred to as _grid tiers_, for building responsively. These breakpoints can be customized if you're using our source Sass files.\n\n\u003CBsTable>\n| Breakpoint | Class infix | Dimensions |\n| --- | --- | --- |\n| Extra small | \u003Cem>None\u003C/em> |<576px |\n| Small | `sm` | ≥576px |\n| Medium | `md` | ≥768px |\n| Large | `lg` | ≥992px |\n| Extra large | `xl` | ≥1200px |\n| Extra extra large | `xxl` | ≥1400px |\n\u003C/BsTable>\n\n\nEach breakpoint was chosen to comfortably hold containers whose widths are multiples of 12. Breakpoints are also representative of a subset of common device sizes and viewport dimensions—they don't specifically target every use case or device. Instead, the ranges provide a strong and consistent foundation to build on for nearly any device.\n\nThese breakpoints are customizable via Sass—you'll find them in a Sass map in our `_variables.scss` stylesheet.\n\n\u003CScssDocs name=\"grid-breakpoints\" file=\"scss/_variables.scss\" />\n\nFor more information and examples on how to modify our Sass maps and variables, please refer to [the CSS section of the Grid documentation]([[docsref:/layout/grid#css]]).\n\n## Media queries\n\nSince Bootstrap is developed to be mobile first, we use a handful of [media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries) to create sensible breakpoints for our layouts and interfaces. These breakpoints are mostly based on minimum viewport widths and allow us to scale up elements as the viewport changes.\n\n### Min-width\n\nBootstrap primarily uses the following media query ranges—or breakpoints—in our source Sass files for our layout, grid system, and components.\n\n```scss\n// Source mixins\n\n// No media query necessary for xs breakpoint as it's effectively `@media (min-width: 0) { ... }`\n@include media-breakpoint-up(sm) { ... }\n@include media-breakpoint-up(md) { ... }\n@include media-breakpoint-up(lg) { ... }\n@include media-breakpoint-up(xl) { ... }\n@include media-breakpoint-up(xxl) { ... }\n\n// Usage\n\n// Example: Hide starting at `min-width: 0`, and then show at the `sm` breakpoint\n.custom-class {\n display: none;\n}\n@include media-breakpoint-up(sm) {\n .custom-class {\n display: block;\n }\n}\n```\n\nThese Sass mixins translate in our compiled CSS using the values declared in our Sass variables. For example:\n\n```scss\n// X-Small devices (portrait phones, less than 576px)\n// No media query for `xs` since this is the default in Bootstrap\n\n// Small devices (landscape phones, 576px and up)\n@media (min-width: 576px) { ... }\n\n// Medium devices (tablets, 768px and up)\n@media (min-width: 768px) { ... }\n\n// Large devices (desktops, 992px and up)\n@media (min-width: 992px) { ... }\n\n// X-Large devices (large desktops, 1200px and up)\n@media (min-width: 1200px) { ... }\n\n// XX-Large devices (larger desktops, 1400px and up)\n@media (min-width: 1400px) { ... }\n```\n\n### Max-width\n\nWe occasionally use media queries that go in the other direction (the given screen size _or smaller_):\n\n```scss\n// No media query necessary for xs breakpoint as it's effectively `@media (max-width: 0) { ... }`\n@include media-breakpoint-down(sm) { ... }\n@include media-breakpoint-down(md) { ... }\n@include media-breakpoint-down(lg) { ... }\n@include media-breakpoint-down(xl) { ... }\n@include media-breakpoint-down(xxl) { ... }\n\n// Example: Style from medium breakpoint and down\n@include media-breakpoint-down(md) {\n .custom-class {\n display: block;\n }\n}\n```\n\nThese mixins take those declared breakpoints, subtract `.02px` from them, and use them as our `max-width` values. For example:\n\n```scss\n// `xs` returns only a ruleset and no media query\n// ... { ... }\n\n// `sm` applies to x-small devices (portrait phones, less than 576px)\n@media (max-width: 575.98px) { ... }\n\n// `md` applies to small devices (landscape phones, less than 768px)\n@media (max-width: 767.98px) { ... }\n\n// `lg` applies to medium devices (tablets, less than 992px)\n@media (max-width: 991.98px) { ... }\n\n// `xl` applies to large devices (desktops, less than 1200px)\n@media (max-width: 1199.98px) { ... }\n\n// `xxl` applies to x-large devices (large desktops, less than 1400px)\n@media (max-width: 1399.98px) { ... }\n```\n\n\u003CCallout name=\"info-mediaqueries-breakpoints\" type=\"warning\" />\n\n### Single breakpoint\n\nThere are also media queries and mixins for targeting a single segment of screen sizes using the minimum and maximum breakpoint widths.\n\n```scss\n@include media-breakpoint-only(xs) { ... }\n@include media-breakpoint-only(sm) { ... }\n@include media-breakpoint-only(md) { ... }\n@include media-breakpoint-only(lg) { ... }\n@include media-breakpoint-only(xl) { ... }\n@include media-breakpoint-only(xxl) { ... }\n```\n\nFor example the `@include media-breakpoint-only(md) { ... }` will result in :\n\n```scss\n@media (min-width: 768px) and (max-width: 991.98px) { ... }\n```\n\n### Between breakpoints\n\nSimilarly, media queries may span multiple breakpoint widths:\n\n```scss\n@include media-breakpoint-between(md, xl) { ... }\n```\n\nWhich results in:\n\n```scss\n// Example\n// Apply styles starting from medium devices and up to extra large devices\n@media (min-width: 768px) and (max-width: 1199.98px) { ... }\n```","src/content/docs/layout/breakpoints.mdx","dc7987c35c544d2f","layout/breakpoints.mdx","layout/containers",{"id":937,"data":939,"body":942,"filePath":943,"digest":944,"legacyId":945,"deferredRender":139},{"description":940,"title":941,"toc":139},"Containers are a fundamental building block of Bootstrap that contain, pad, and align your content within a given device or viewport.","Containers","## How they work\n\nContainers are the most basic layout element in Bootstrap and are **required when using our default grid system**. Containers are used to contain, pad, and (sometimes) center the content within them. While containers *can* be nested, most layouts do not require a nested container.\n\nBootstrap comes with three different containers:\n\n- `.container`, which sets a `max-width` at each responsive breakpoint\n- `.container-{breakpoint}`, which is `width: 100%` until the specified breakpoint\n- `.container-fluid`, which is `width: 100%` at all breakpoints\n\nThe table below illustrates how each container's `max-width` compares to the original `.container` and `.container-fluid` across each breakpoint.\n\nSee them in action and compare them in our [Grid example]([[docsref:/examples/grid#containers]]).\n\n\u003CBsTable>\n| | Extra small\u003Cdiv class=\"fw-normal\"><576px\u003C/div> | Small\u003Cdiv class=\"fw-normal\">≥576px\u003C/div> | Medium\u003Cdiv class=\"fw-normal\">≥768px\u003C/div> | Large\u003Cdiv class=\"fw-normal\">≥992px\u003C/div> | X-Large\u003Cdiv class=\"fw-normal\">≥1200px\u003C/div> | XX-Large\u003Cdiv class=\"fw-normal\">≥1400px\u003C/div> |\n| --- | --- | --- | --- | --- | --- | --- |\n| `.container` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 540px | 720px | 960px | 1140px | 1320px |\n| `.container-sm` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 540px | 720px | 960px | 1140px | 1320px |\n| `.container-md` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 720px | 960px | 1140px | 1320px |\n| `.container-lg` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 960px | 1140px | 1320px |\n| `.container-xl` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 1140px | 1320px |\n| `.container-xxl` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | 1320px |\n| `.container-fluid` | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> | \u003Cspan class=\"text-body-secondary\">100%\u003C/span> |\n\u003C/BsTable>\n\n## Default container\n\nOur default `.container` class is a responsive, fixed-width container, meaning its `max-width` changes at each breakpoint.\n\n```html\n\u003Cdiv class=\"container\">\n \u003C!-- Content here -->\n\u003C/div>\n```\n\n## Responsive containers\n\nResponsive containers allow you to specify a class that is 100% wide until the specified breakpoint is reached, after which we apply `max-width`s for each of the higher breakpoints. For example, `.container-sm` is 100% wide to start until the `sm` breakpoint is reached, where it will scale up with `md`, `lg`, `xl`, and `xxl`.\n\n```html\n\u003Cdiv class=\"container-sm\">100% wide until small breakpoint\u003C/div>\n\u003Cdiv class=\"container-md\">100% wide until medium breakpoint\u003C/div>\n\u003Cdiv class=\"container-lg\">100% wide until large breakpoint\u003C/div>\n\u003Cdiv class=\"container-xl\">100% wide until extra large breakpoint\u003C/div>\n\u003Cdiv class=\"container-xxl\">100% wide until extra extra large breakpoint\u003C/div>\n```\n\n## Fluid containers\n\nUse `.container-fluid` for a full width container, spanning the entire width of the viewport.\n\n```html\n\u003Cdiv class=\"container-fluid\">\n ...\n\u003C/div>\n```\n\n## CSS\n\n### Sass variables\n\nAs shown above, Bootstrap generates a series of predefined container classes to help you build the layouts you desire. You may customize these predefined container classes by modifying the Sass map (found in `_variables.scss`) that powers them:\n\nFor more information and examples on how to modify our Sass maps and variables, please refer to [the CSS section of the Grid documentation]([[docsref:/layout/grid#css]]).\n\n### Sass mixins\n\n\u003CScssDocs name=\"container-max-widths\" file=\"scss/_variables.scss\" />\n\nIn addition to customizing the Sass, you can also create your own containers with our Sass mixin.\n\n```scss\n// Source mixin\n@mixin make-container($padding-x: $container-padding-x) {\n width: 100%;\n padding-right: $padding-x;\n padding-left: $padding-x;\n margin-right: auto;\n margin-left: auto;\n}\n\n// Usage\n.custom-container {\n @include make-container();\n}\n```","src/content/docs/layout/containers.mdx","10b2f26ad50e3244","layout/containers.mdx","layout/columns",{"id":946,"data":948,"body":951,"filePath":952,"digest":953,"legacyId":954,"deferredRender":139},{"description":949,"title":950,"toc":139},"Learn how to modify columns with a handful of options for alignment, ordering, and offsetting thanks to our flexbox grid system. Plus, see how to use column classes to manage widths of non-grid elements.","Columns","\u003CCallout>\n**Heads up!** Be sure to [read the Grid page]([[docsref:/layout/grid]]) first before diving into how to modify and customize your grid columns.\n\u003C/Callout>\n\n## How they work\n\n- **Columns build on the grid's flexbox architecture.** Flexbox means we have options for changing individual columns and [modifying groups of columns at the row level]([[docsref:/layout/grid#row-columns]]). You choose how columns grow, shrink, or otherwise change.\n\n- **When building grid layouts, all content goes in columns.** The hierarchy of Bootstrap's grid goes from [container]([[docsref:/layout/containers]]) to row to column to your content. On rare occasions, you may combine content and column, but be aware there can be unintended consequences.\n\n- **Bootstrap includes predefined classes for creating fast, responsive layouts.** With [six breakpoints]([[docsref:/layout/breakpoints]]) and a dozen columns at each grid tier, we have dozens of classes already built for you to create your desired layouts. This can be disabled via Sass if you wish.\n\n## Alignment\n\nUse flexbox alignment utilities to vertically and horizontally align columns.\n\n### Vertical alignment\n\nChange the vertical alignment with any of the responsive `align-items-*` classes.\n\n\u003CExample class=\"bd-example-row bd-example-row-flex-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row align-items-start\">\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row bd-example-row-flex-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row align-items-center\">\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row bd-example-row-flex-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row align-items-end\">\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col\">\n One of three columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nOr, change the alignment of each column individually with any of the responsive `.align-self-*` classes.\n\n\u003CExample class=\"bd-example-row bd-example-row-flex-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col align-self-start\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col align-self-center\">\n One of three columns\n \u003C/div>\n \u003Cdiv class=\"col align-self-end\">\n One of three columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Horizontal alignment\n\nChange the horizontal alignment with any of the responsive `justify-content-*` classes.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row justify-content-start\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-center\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-end\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-around\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-between\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row justify-content-evenly\">\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003Cdiv class=\"col-4\">\n One of two columns\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Column wrapping\n\nIf more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-9\">.col-9\u003C/div>\n \u003Cdiv class=\"col-4\">.col-4\u003Cbr>Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.\u003C/div>\n \u003Cdiv class=\"col-6\">.col-6\u003Cbr>Subsequent columns continue along the new line.\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Column breaks\n\nBreaking columns to a new line in flexbox requires a small hack: add an element with `width: 100%` wherever you want to wrap your columns to a new line. Normally this is accomplished with multiple `.row`s, but not every implementation method can account for this.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-6 col-sm-3\">.col-6 .col-sm-3\u003C/div>\n \u003Cdiv class=\"col-6 col-sm-3\">.col-6 .col-sm-3\u003C/div>\n\n \u003C!-- Force next columns to break to new line -->\n \u003Cdiv class=\"w-100\">\u003C/div>\n\n \u003Cdiv class=\"col-6 col-sm-3\">.col-6 .col-sm-3\u003C/div>\n \u003Cdiv class=\"col-6 col-sm-3\">.col-6 .col-sm-3\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nYou may also apply this break at specific breakpoints with our [responsive display utilities]([[docsref:/utilities/display]]).\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-6 col-sm-4\">.col-6 .col-sm-4\u003C/div>\n \u003Cdiv class=\"col-6 col-sm-4\">.col-6 .col-sm-4\u003C/div>\n\n \u003C!-- Force next columns to break to new line at md breakpoint and up -->\n \u003Cdiv class=\"w-100 d-none d-md-block\">\u003C/div>\n\n \u003Cdiv class=\"col-6 col-sm-4\">.col-6 .col-sm-4\u003C/div>\n \u003Cdiv class=\"col-6 col-sm-4\">.col-6 .col-sm-4\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Reordering\n\n### Order classes\n\nUse `.order-` classes for controlling the **visual order** of your content. These classes are responsive, so you can set the `order` by breakpoint (e.g., `.order-1.order-md-2`). Includes support for `1` through `5` across all six grid tiers.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n First in DOM, no order applied\n \u003C/div>\n \u003Cdiv class=\"col order-5\">\n Second in DOM, with a larger order\n \u003C/div>\n \u003Cdiv class=\"col order-1\">\n Third in DOM, with an order of 1\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nThere are also responsive `.order-first` and `.order-last` classes that change the `order` of an element by applying `order: -1` and `order: 6`, respectively. These classes can also be intermixed with the numbered `.order-*` classes as needed.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col order-last\">\n First in DOM, ordered last\n \u003C/div>\n \u003Cdiv class=\"col\">\n Second in DOM, unordered\n \u003C/div>\n \u003Cdiv class=\"col order-first\">\n Third in DOM, ordered first\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\nIf you need more `.order-*` classes, you can add new ones by modifying our `$utilities` Sass map. [Read our Sass maps and loops docs]([[docsref:/customize/sass#maps-and-loops]]) or [our Modify utilities docs]([[docsref:/utilities/api#modify-utilities]]) for details.\n\n```scss\n$utilities: map-merge(\n $utilities,\n (\n \"order\": map-merge(\n map-get($utilities, \"order\"),\n (\n values: map-merge(\n map-get(map-get($utilities, \"order\"), \"values\"),\n (\n 6: 6, // Add a new `.order-{breakpoint}-6` utility\n last: 7 // Change the `.order-{breakpoint}-last` utility to use the next number\n )\n ),\n ),\n ),\n )\n);\n```\n\n### Offsetting columns\n\nYou can offset grid columns in two ways: our responsive `.offset-` grid classes and our [margin utilities]([[docsref:/utilities/spacing]]). Grid classes are sized to match columns while margins are more useful for quick layouts where the width of the offset is variable.\n\n#### Offset classes\n\nMove columns to the right using `.offset-md-*` classes. These classes increase the left margin of a column by `*` columns. For example, `.offset-md-4` moves `.col-md-4` over four columns.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-4\">.col-md-4\u003C/div>\n \u003Cdiv class=\"col-md-4 offset-md-4\">.col-md-4 .offset-md-4\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-3 offset-md-3\">.col-md-3 .offset-md-3\u003C/div>\n \u003Cdiv class=\"col-md-3 offset-md-3\">.col-md-3 .offset-md-3\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-6 offset-md-3\">.col-md-6 .offset-md-3\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nIn addition to column clearing at responsive breakpoints, you may need to reset offsets. See this in action in [the grid example]([[docsref:/examples/grid]]).\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-5 col-md-6\">.col-sm-5 .col-md-6\u003C/div>\n \u003Cdiv class=\"col-sm-5 offset-sm-2 col-md-6 offset-md-0\">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-6 col-md-5 col-lg-6\">.col-sm-6 .col-md-5 .col-lg-6\u003C/div>\n \u003Cdiv class=\"col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0\">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n#### Margin utilities\n\nWith the move to flexbox in v4, you can use margin utilities like `.me-auto` to force sibling columns away from one another.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-4\">.col-md-4\u003C/div>\n \u003Cdiv class=\"col-md-4 ms-auto\">.col-md-4 .ms-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-3 ms-md-auto\">.col-md-3 .ms-md-auto\u003C/div>\n \u003Cdiv class=\"col-md-3 ms-md-auto\">.col-md-3 .ms-md-auto\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-auto me-auto\">.col-auto .me-auto\u003C/div>\n \u003Cdiv class=\"col-auto\">.col-auto\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Standalone column classes\n\nThe `.col-*` classes can also be used outside a `.row` to give an element a specific width. Whenever column classes are used as non-direct children of a row, the paddings are omitted.\n\n\u003CExample class=\"bd-example-row\" code={`\n\u003Cdiv class=\"col-3 p-3 mb-2\">\n .col-3: width of 25%\n\u003C/div>\n\n\u003Cdiv class=\"col-sm-9 p-3\">\n .col-sm-9: width of 75% above sm breakpoint\n\u003C/div>`} />\n\nThe classes can be used together with utilities to create responsive floated images. Make sure to wrap the content in a [`.clearfix`]([[docsref:/helpers/clearfix]]) wrapper to clear the float if the text is shorter.\n\n\u003CExample code={`\u003Cdiv class=\"clearfix\">\n \u003CPlaceholder width=\"100%\" height=\"210\" class=\"col-md-6 float-md-end mb-3 ms-md-3\" text=\"Responsive floated image\" />\n\n \u003Cp>\n A paragraph of placeholder text. We're using it here to show the use of the clearfix class. We're adding quite a few meaningless phrases here to demonstrate how the columns interact here with the floated image.\n \u003C/p>\n\n \u003Cp>\n As you can see the paragraphs gracefully wrap around the floated image. Now imagine how this would look with some actual content in here, rather than just this boring placeholder text that goes on and on, but actually conveys no tangible information at. It simply takes up space and should not really be read.\n \u003C/p>\n\n \u003Cp>\n And yet, here you are, still persevering in reading this placeholder text, hoping for some more insights, or some hidden easter egg of content. A joke, perhaps. Unfortunately, there's none of that here.\n \u003C/p>\n\u003C/div>`} />","src/content/docs/layout/columns.mdx","267bb72987235133","layout/columns.mdx","layout/css-grid",{"id":955,"data":957,"body":961,"filePath":962,"digest":963,"legacyId":964,"deferredRender":139},{"added":958,"description":959,"title":960,"toc":139},{"version":499},"Learn how to enable, use, and customize our alternate layout system built on CSS Grid with examples and code snippets.","CSS Grid","Bootstrap's default grid system represents the culmination of over a decade of CSS layout techniques, tried and tested by millions of people. But, it was also created without many of the modern CSS features and techniques we're seeing in browsers like the new CSS Grid.\n\n\u003CCallout type=\"warning\">\n**Heads up—our CSS Grid system is experimental and opt-in as of v5.1.0!** We included it in our documentation's CSS to demonstrate it for you, but it's disabled by default. Keep reading to learn how to enable it in your projects.\n\u003C/Callout>\n\n## How it works\n\nWith Bootstrap 5, we've added the option to enable a separate grid system that's built on CSS Grid, but with a Bootstrap twist. You still get classes you can apply on a whim to build responsive layouts, but with a different approach under the hood.\n\n- **CSS Grid is opt-in.** Disable the default grid system by setting `$enable-grid-classes: false` and enable the CSS Grid by setting `$enable-cssgrid: true`. Then, recompile your Sass.\n\n- **Replace instances of `.row` with `.grid`.** The `.grid` class sets `display: grid` and creates a `grid-template` that you build on with your HTML.\n\n- **Replace `.col-*` classes with `.g-col-*` classes.** This is because our CSS Grid columns use the `grid-column` property instead of `width`.\n\n- **Columns and gutter sizes are set via CSS variables.** Set these on the parent `.grid` and customize however you want, inline or in a stylesheet, with `--bs-columns` and `--bs-gap`.\n\nIn the future, Bootstrap will likely shift to a hybrid solution as the `gap` property has achieved nearly full browser support for flexbox.\n\n## Key differences\n\nCompared to the default grid system:\n\n- Flex utilities don't affect the CSS Grid columns in the same way.\n\n- Gaps replaces gutters. The `gap` property replaces the horizontal `padding` from our default grid system and functions more like `margin`.\n\n- As such, unlike `.row`s, `.grid`s have no negative margins and margin utilities cannot be used to change the grid gutters. Grid gaps are applied horizontally and vertically by default. See the [customizing section](#customizing) for more details.\n\n- Inline and custom styles should be viewed as replacements for modifier classes (e.g., `style=\"--bs-columns: 3;\"` vs `class=\"row-cols-3\"`).\n\n- Nesting works similarly, but may require you to reset your column counts on each instance of a nested `.grid`. See the [nesting section](#nesting) for details.\n\n## Examples\n\n### Three columns\n\nThree equal-width columns across all viewports and devices can be created by using the `.g-col-4` classes. Add [responsive classes](#responsive) to change the layout by viewport size.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n\u003C/div>`} />\n\n### Responsive\n\nUse responsive classes to adjust your layout across viewports. Here we start with two columns on the narrowest viewports, and then grow to three columns on medium viewports and above.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-6 g-col-md-4\">.g-col-6 .g-col-md-4\u003C/div>\n \u003Cdiv class=\"g-col-6 g-col-md-4\">.g-col-6 .g-col-md-4\u003C/div>\n \u003Cdiv class=\"g-col-6 g-col-md-4\">.g-col-6 .g-col-md-4\u003C/div>\n\u003C/div>`} />\n\nCompare that to this two column layout at all viewports.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\u003C/div>`} />\n\n## Wrapping\n\nGrid items automatically wrap to the next line when there's no more room horizontally. Note that the `gap` applies to horizontal and vertical gaps between grid items.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\u003C/div>`} />\n\n## Starts\n\nStart classes aim to replace our default grid's offset classes, but they're not entirely the same. CSS Grid creates a grid template through styles that tell browsers to \"start at this column\" and \"end at this column.\" Those properties are `grid-column-start` and `grid-column-end`. Start classes are shorthand for the former. Pair them with the column classes to size and align your columns however you need. Start classes begin at `1` as `0` is an invalid value for these properties.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-3 g-start-2\">.g-col-3 .g-start-2\u003C/div>\n \u003Cdiv class=\"g-col-4 g-start-6\">.g-col-4 .g-start-6\u003C/div>\n\u003C/div>`} />\n\n## Auto columns\n\nWhen there are no classes on the grid items (the immediate children of a `.grid`), each grid item will automatically be sized to one column.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n\u003C/div>`} />\n\nThis behavior can be mixed with grid column classes.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n \u003Cdiv>1\u003C/div>\n\u003C/div>`} />\n\n## Nesting\n\nSimilar to our default grid system, our CSS Grid allows for easy nesting of `.grid`s. However, unlike the default, this grid inherits changes in the rows, columns, and gaps. Consider the example below:\n\n- We override the default number of columns with a local CSS variable: `--bs-columns: 3`.\n- In the first auto-column, the column count is inherited and each column is one-third of the available width.\n- In the second auto-column, we've reset the column count on the nested `.grid` to 12 (our default).\n- The third auto-column has no nested content.\n\nIn practice this allows for more complex and custom layouts when compared to our default grid system.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center overflow-x-auto\" style=\"--bs-columns: 3;\">\n \u003Cdiv>\n First auto-column\n \u003Cdiv class=\"grid\">\n \u003Cdiv>Auto-column\u003C/div>\n \u003Cdiv>Auto-column\u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv>\n Second auto-column\n \u003Cdiv class=\"grid\" style=\"--bs-columns: 12;\">\n \u003Cdiv class=\"g-col-6\">6 of 12\u003C/div>\n \u003Cdiv class=\"g-col-4\">4 of 12\u003C/div>\n \u003Cdiv class=\"g-col-2\">2 of 12\u003C/div>\n \u003C/div>\n \u003C/div>\n \u003Cdiv>Third auto-column\u003C/div>\n\u003C/div>`} />\n\n## Customizing\n\nCustomize the number of columns, the number of rows, and the width of the gaps with local CSS variables.\n\n\u003CBsTable>\n| Variable | Fallback value | Description |\n| --- | --- | --- |\n| `--bs-rows` | `1` | The number of rows in your grid template |\n| `--bs-columns` | `12` | The number of columns in your grid template |\n| `--bs-gap` | `1.5rem` | The size of the gap between columns (vertical and horizontal) |\n\u003C/BsTable>\n\nThese CSS variables have no default value; instead, they apply fallback values that are used _until_ a local instance is provided. For example, we use `var(--bs-rows, 1)` for our CSS Grid rows, which ignores `--bs-rows` because that hasn't been set anywhere yet. Once it is, the `.grid` instance will use that value instead of the fallback value of `1`.\n\n### No grid classes\n\nImmediate children elements of `.grid` are grid items, so they'll be sized without explicitly adding a `.g-col` class.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-columns: 3;\">\n \u003Cdiv>Auto-column\u003C/div>\n \u003Cdiv>Auto-column\u003C/div>\n \u003Cdiv>Auto-column\u003C/div>\n\u003C/div>`} />\n\n### Columns and gaps\n\nAdjust the number of columns and the gap.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-columns: 4; --bs-gap: 5rem;\">\n \u003Cdiv class=\"g-col-2\">.g-col-2\u003C/div>\n \u003Cdiv class=\"g-col-2\">.g-col-2\u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-columns: 10; --bs-gap: 1rem;\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n\u003C/div>`} />\n\n### Adding rows\n\nAdding more rows and changing the placement of columns:\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-rows: 3; --bs-columns: 3;\">\n \u003Cdiv>Auto-column\u003C/div>\n \u003Cdiv class=\"g-start-2\" style=\"grid-row: 2\">Auto-column\u003C/div>\n \u003Cdiv class=\"g-start-3\" style=\"grid-row: 3\">Auto-column\u003C/div>\n\u003C/div>`} />\n\n### Gaps\n\nChange the vertical gaps only by modifying the `row-gap`. Note that we use `gap` on `.grid`s, but `row-gap` and `column-gap` can be modified as needed.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"row-gap: 0;\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\u003C/div>`} />\n\nBecause of that, you can have different vertical and horizontal `gap`s, which can take a single value (all sides) or a pair of values (vertical and horizontal). This can be applied with an inline style for `gap`, or with our `--bs-gap` CSS variable.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-gap: .25rem 1rem;\">\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n \u003Cdiv class=\"g-col-6\">.g-col-6\u003C/div>\n\u003C/div>`} />\n\n## Sass\n\nOne limitation of the CSS Grid is that our default classes are still generated by two Sass variables, `$grid-columns` and `$grid-gutter-width`. This effectively predetermines the number of classes generated in our compiled CSS. You have two options here:\n\n- Modify those default Sass variables and recompile your CSS.\n- Use inline or custom styles to augment the provided classes.\n\nFor example, you can increase the column count and change the gap size, and then size your \"columns\" with a mix of inline styles and predefined CSS Grid column classes (e.g., `.g-col-4`).\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv class=\"grid text-center\" style=\"--bs-columns: 18; --bs-gap: .5rem;\">\n \u003Cdiv style=\"grid-column: span 14;\">14 columns\u003C/div>\n \u003Cdiv class=\"g-col-4\">.g-col-4\u003C/div>\n\u003C/div>`} />","src/content/docs/layout/css-grid.mdx","4abedb7a4fa352a0","layout/css-grid.mdx","layout/gutters",{"id":965,"data":967,"body":970,"filePath":971,"digest":972,"legacyId":973,"deferredRender":139},{"description":968,"title":969,"toc":139},"Gutters are the padding between your columns, used to responsively space and align content in the Bootstrap grid system.","Gutters","## How they work\n\n- **Gutters are the gaps between column content, created by horizontal `padding`.** We set `padding-right` and `padding-left` on each column, and use negative `margin` to offset that at the start and end of each row to align content.\n\n- **Gutters start at `1.5rem` (`24px`) wide.** This allows us to match our grid to the [padding and margin spacers]([[docsref:/utilities/spacing]]) scale.\n\n- **Gutters can be responsively adjusted.** Use breakpoint-specific gutter classes to modify horizontal gutters, vertical gutters, and all gutters.\n\n## Horizontal gutters\n\n`.gx-*` classes can be used to control the horizontal gutter widths. The `.container` or `.container-fluid` parent may need to be adjusted if larger gutters are used too to avoid unwanted overflow, using a matching padding utility. For example, in the following example we've increased the padding with `.px-4`:\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container px-4 text-center\">\n \u003Cdiv class=\"row gx-5\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nAn alternative solution is to add a wrapper around the `.row` with the `.overflow-hidden` class:\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container overflow-hidden text-center\">\n \u003Cdiv class=\"row gx-5\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Vertical gutters\n\n`.gy-*` classes can be used to control the vertical gutter widths within a row when columns wrap to new lines. Like the horizontal gutters, the vertical gutters can cause some overflow below the `.row` at the end of a page. If this occurs, you add a wrapper around `.row` with the `.overflow-hidden` class:\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container overflow-hidden text-center\">\n \u003Cdiv class=\"row gy-5\">\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Horizontal & vertical gutters\n\nUse `.g-*` classes to control the horizontal and vertical grid gutters. In the example below, we use a smaller gutter width, so there isn't a need for the `.overflow-hidden` wrapper class.\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row g-2\">\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n \u003Cdiv class=\"p-3\">Custom column padding\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Row columns gutters\n\nGutter classes can also be added to [row columns]([[docsref:/layout/grid#row-columns]]). In the following example, we use responsive row columns and responsive gutter classes.\n\n\u003CExample class=\"bd-example-cols\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-2 row-cols-lg-5 g-2 g-lg-3\">\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"col\">\n \u003Cdiv class=\"p-3\">Row column\u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## No gutters\n\nThe gutters between columns in our predefined grid classes can be removed with `.g-0`. This removes the negative `margin`s from `.row` and the horizontal `padding` from all immediate children columns.\n\n**Need an edge-to-edge design?** Drop the parent `.container` or `.container-fluid` and add `.mx-0` to the `.row` to prevent overflow.\n\nIn practice, here's how it looks. Note that you can continue to use this with all other predefined grid classes (including column widths, responsive tiers, reorders, and more).\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"row g-0 text-center\">\n \u003Cdiv class=\"col-sm-6 col-md-8\">.col-sm-6 .col-md-8\u003C/div>\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n\u003C/div>`} />\n\n## Change the gutters\n\nClasses are built from the `$gutters` Sass map which is inherited from the `$spacers` Sass map.\n\n```scss\n$grid-gutter-width: 1.5rem;\n$gutters: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n);\n```","src/content/docs/layout/gutters.mdx","67c02754be207a7c","layout/gutters.mdx","layout/z-index",{"id":974,"data":976,"body":979,"filePath":980,"digest":981,"legacyId":982,"deferredRender":139},{"description":977,"title":978},"While not a part of Bootstrap's grid system, z-indexes play an important part in how our components overlay and interact with one another.","Z-index","Several Bootstrap components utilize `z-index`, the CSS property that helps control layout by providing a third axis to arrange content. We utilize a default z-index scale in Bootstrap that's been designed to properly layer navigation, tooltips and popovers, modals, and more.\n\nThese higher values start at an arbitrary number, high and specific enough to ideally avoid conflicts. We need a standard set of these across our layered components—tooltips, popovers, navbars, dropdowns, modals—so we can be reasonably consistent in the behaviors. There's no reason we couldn't have used `100`+ or `500`+.\n\nWe don't encourage customization of these individual values; should you change one, you likely need to change them all.\n\n\u003CScssDocs name=\"zindex-stack\" file=\"scss/_variables.scss\" />\n\nTo handle overlapping borders within components (e.g., buttons and inputs in input groups), we use low single digit `z-index` values of `1`, `2`, and `3` for default, hover, and active states. On hover/focus/active, we bring a particular element to the forefront with a higher `z-index` value to show their border over the sibling elements.","src/content/docs/layout/z-index.mdx","42bc5a07c2236618","layout/z-index.mdx","layout/utilities",{"id":983,"data":985,"body":988,"filePath":989,"digest":990,"legacyId":991,"deferredRender":139},{"description":986,"title":987,"toc":139},"For faster mobile-friendly and responsive development, Bootstrap includes dozens of utility classes for showing, hiding, aligning, and spacing content.","Utilities for layout","## Changing `display`\n\nUse our [display utilities]([[docsref:/utilities/display]]) for responsively toggling common values of the `display` property. Mix it with our grid system, content, or components to show or hide them across specific viewports.\n\n## Flexbox options\n\nBootstrap is built with flexbox, but not every element's `display` has been changed to `display: flex` as this would add many unnecessary overrides and unexpectedly change key browser behaviors. Most of [our components]([[docsref:/components/alerts]]) are built with flexbox enabled.\n\nShould you need to add `display: flex` to an element, do so with `.d-flex` or one of the responsive variants (e.g., `.d-sm-flex`). You'll need this class or `display` value to allow the use of our extra [flexbox utilities]([[docsref:/utilities/flex]]) for sizing, alignment, spacing, and more.\n\n## Margin and padding\n\nUse the `margin` and `padding` [spacing utilities]([[docsref:/utilities/spacing]]) to control how elements and components are spaced and sized. Bootstrap includes a six-level scale for spacing utilities, based on a `1rem` value default `$spacer` variable. Choose values for all viewports (e.g., `.me-3` for `margin-right: 1rem` in LTR), or pick responsive variants to target specific viewports (e.g., `.me-md-3` for `margin-right: 1rem` —in LTR— starting at the `md` breakpoint).\n\n## Toggle `visibility`\n\nWhen toggling `display` isn't needed, you can toggle the `visibility` of an element with our [visibility utilities]([[docsref:/utilities/visibility]]). Invisible elements will still affect the layout of the page, but are visually hidden from visitors.","src/content/docs/layout/utilities.mdx","d3b766794b91fcf2","layout/utilities.mdx","layout/grid",{"id":992,"data":994,"body":997,"filePath":998,"digest":999,"legacyId":1000,"deferredRender":139},{"description":995,"title":996,"toc":139},"Use our powerful mobile-first flexbox grid to build layouts of all shapes and sizes thanks to a twelve column system, six default responsive tiers, Sass variables and mixins, and dozens of predefined classes.","Grid system","## Example\n\nBootstrap's grid system uses a series of containers, rows, and columns to layout and align content. It's built with [flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox) and is fully responsive. Below is an example and an in-depth explanation for how the grid system comes together.\n\n\u003CCallout>\n**New to or unfamiliar with flexbox?** [Read this CSS Tricks flexbox guide](https://css-tricks.com/snippets/css/a-guide-to-flexbox/#flexbox-background) for background, terminology, guidelines, and code snippets.\n\u003C/Callout>\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n Column\n \u003C/div>\n \u003Cdiv class=\"col\">\n Column\n \u003C/div>\n \u003Cdiv class=\"col\">\n Column\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nThe above example creates three equal-width columns across all devices and viewports using our predefined grid classes. Those columns are centered in the page with the parent `.container`.\n\n## How it works\n\nBreaking it down, here's how the grid system comes together:\n\n- **Our grid supports [six responsive breakpoints]([[docsref:/layout/breakpoints]]).** Breakpoints are based on `min-width` media queries, meaning they affect that breakpoint and all those above it (e.g., `.col-sm-4` applies to `sm`, `md`, `lg`, `xl`, and `xxl`). This means you can control container and column sizing and behavior by each breakpoint.\n\n- **Containers center and horizontally pad your content.** Use `.container` for a responsive pixel width, `.container-fluid` for `width: 100%` across all viewports and devices, or a responsive container (e.g., `.container-md`) for a combination of fluid and pixel widths.\n\n- **Rows are wrappers for columns.** Each column has horizontal `padding` (called a gutter) for controlling the space between them. This `padding` is then counteracted on the rows with negative margins to ensure the content in your columns is visually aligned down the left side. Rows also support modifier classes to [uniformly apply column sizing](#row-columns) and [gutter classes]([[docsref:/layout/gutters]]) to change the spacing of your content.\n\n- **Columns are incredibly flexible.** There are 12 template columns available per row, allowing you to create different combinations of elements that span any number of columns. Column classes indicate the number of template columns to span (e.g., `col-4` spans four). `width`s are set in percentages so you always have the same relative sizing.\n\n- **Gutters are also responsive and customizable.** [Gutter classes are available]([[docsref:/layout/gutters]]) across all breakpoints, with all the same sizes as our [margin and padding spacing]([[docsref:/utilities/spacing]]). Change horizontal gutters with `.gx-*` classes, vertical gutters with `.gy-*`, or all gutters with `.g-*` classes. `.g-0` is also available to remove gutters.\n\n- **Sass variables, maps, and mixins power the grid.** If you don't want to use the predefined grid classes in Bootstrap, you can use our [grid's source Sass](#sass-variables) to create your own with more semantic markup. We also include some CSS custom properties to consume these Sass variables for even greater flexibility for you.\n\nBe aware of the limitations and [bugs around flexbox](https://github.com/philipwalton/flexbugs), like the [inability to use some HTML elements as flex containers](https://github.com/philipwalton/flexbugs#flexbug-9).\n\n## Grid options\n\nBootstrap's grid system can adapt across all six default breakpoints, and any breakpoints you customize. The six default grid tiers are as follows:\n\n- Extra small (xs)\n- Small (sm)\n- Medium (md)\n- Large (lg)\n- Extra large (xl)\n- Extra extra large (xxl)\n\nAs noted above, each of these breakpoints have their own container, unique class prefix, and modifiers. Here's how the grid changes across these breakpoints:\n\n\u003Cdiv class=\"table-responsive\">\n \u003Ctable class=\"table mb-4\">\n \u003Cthead>\n \u003Ctr>\n \u003Cth scope=\"col\">\u003C/th>\n \u003Cth scope=\"col\">\n xs\u003Cbr/>\n \u003Cspan class=\"fw-normal\"><576px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n sm\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥576px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n md\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥768px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n lg\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥992px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n xl\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥1200px\u003C/span>\n \u003C/th>\n \u003Cth scope=\"col\">\n xxl\u003Cbr/>\n \u003Cspan class=\"fw-normal\">≥1400px\u003C/span>\n \u003C/th>\n \u003C/tr>\n \u003C/thead>\n \u003Ctbody>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Container \u003Ccode class=\"fw-normal\">max-width\u003C/code>\u003C/th>\n \u003Ctd>None (auto)\u003C/td>\n \u003Ctd>540px\u003C/td>\n \u003Ctd>720px\u003C/td>\n \u003Ctd>960px\u003C/td>\n \u003Ctd>1140px\u003C/td>\n \u003Ctd>1320px\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Class prefix\u003C/th>\n \u003Ctd>\u003Ccode>.col-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-sm-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-md-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-lg-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-xl-\u003C/code>\u003C/td>\n \u003Ctd>\u003Ccode>.col-xxl-\u003C/code>\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\"># of columns\u003C/th>\n \u003Ctd colspan=\"6\">12\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Gutter width\u003C/th>\n \u003Ctd colspan=\"6\">1.5rem (.75rem on left and right)\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Custom gutters\u003C/th>\n \u003Ctd colspan=\"6\">\u003Ca href=\"[[docsref:/layout/gutters]]\">Yes\u003C/a>\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Nestable\u003C/th>\n \u003Ctd colspan=\"6\">\u003Ca href=\"#nesting\">Yes\u003C/a>\u003C/td>\n \u003C/tr>\n \u003Ctr>\n \u003Cth class=\"text-nowrap\" scope=\"row\">Column ordering\u003C/th>\n \u003Ctd colspan=\"6\">\u003Ca href=\"[[docsref:/layout/columns#reordering]]\">Yes\u003C/a>\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n \u003C/table>\n\u003C/div>\n\n## Auto-layout columns\n\nUtilize breakpoint-specific column classes for easy column sizing without an explicit numbered class like `.col-sm-6`.\n\n### Equal-width\n\nFor example, here are two grid layouts that apply to every device and viewport, from `xs` to `xxl`. Add any number of unit-less classes for each breakpoint you need and every column will be the same width.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 2\n \u003C/div>\n \u003Cdiv class=\"col\">\n 2 of 2\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col\">\n 2 of 3\n \u003C/div>\n \u003Cdiv class=\"col\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Setting one column width\n\nAuto-layout for flexbox grid columns also means you can set the width of one column and have the sibling columns automatically resize around it. You may use predefined grid classes (as shown below), grid mixins, or inline widths. Note that the other columns will resize no matter the width of the center column.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col-6\">\n 2 of 3 (wider)\n \u003C/div>\n \u003Cdiv class=\"col\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col-5\">\n 2 of 3 (wider)\n \u003C/div>\n \u003Cdiv class=\"col\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Variable width content\n\nUse `col-{breakpoint}-auto` classes to size columns based on the natural width of their content.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row justify-content-md-center\">\n \u003Cdiv class=\"col col-lg-2\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col-md-auto\">\n Variable width content\n \u003C/div>\n \u003Cdiv class=\"col col-lg-2\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">\n 1 of 3\n \u003C/div>\n \u003Cdiv class=\"col-md-auto\">\n Variable width content\n \u003C/div>\n \u003Cdiv class=\"col col-lg-2\">\n 3 of 3\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Responsive classes\n\nBootstrap's grid includes six tiers of predefined classes for building complex responsive layouts. Customize the size of your columns on extra small, small, medium, large, or extra large devices however you see fit.\n\n### All breakpoints\n\nFor grids that are the same from the smallest of devices to the largest, use the `.col` and `.col-*` classes. Specify a numbered class when you need a particularly sized column; otherwise, feel free to stick to `.col`.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col\">col\u003C/div>\n \u003Cdiv class=\"col\">col\u003C/div>\n \u003Cdiv class=\"col\">col\u003C/div>\n \u003Cdiv class=\"col\">col\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-8\">col-8\u003C/div>\n \u003Cdiv class=\"col-4\">col-4\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Stacked to horizontal\n\nUsing a single set of `.col-sm-*` classes, you can create a basic grid system that starts out stacked and becomes horizontal at the small breakpoint (`sm`).\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-8\">col-sm-8\u003C/div>\n \u003Cdiv class=\"col-sm-4\">col-sm-4\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm\">col-sm\u003C/div>\n \u003Cdiv class=\"col-sm\">col-sm\u003C/div>\n \u003Cdiv class=\"col-sm\">col-sm\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Mix and match\n\nDon't want your columns to simply stack in some grid tiers? Use a combination of different classes for each tier as needed. See the example below for a better idea of how it all works.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003C!-- Stack the columns on mobile by making one full-width and the other half-width -->\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-md-8\">.col-md-8\u003C/div>\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n \u003C/div>\n\n \u003C!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n \u003Cdiv class=\"col-6 col-md-4\">.col-6 .col-md-4\u003C/div>\n \u003C/div>\n\n \u003C!-- Columns are always 50% wide, on mobile and desktop -->\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-6\">.col-6\u003C/div>\n \u003Cdiv class=\"col-6\">.col-6\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n### Row columns\n\nUse the responsive `.row-cols-*` classes to quickly set the number of columns that best render your content and layout. Whereas normal `.col-*` classes apply to the individual columns (e.g., `.col-md-4`), the row columns classes are set on the parent `.row` as a shortcut. With `.row-cols-auto` you can give the columns their natural width.\n\nUse these row columns classes to quickly create basic grid layouts or to control your card layouts.\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-2\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-3\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-auto\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-4\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-4\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col-6\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row row-cols-1 row-cols-sm-2 row-cols-md-4\">\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003Cdiv class=\"col\">Column\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\nYou can also use the accompanying Sass mixin, `row-cols()`:\n\n```scss\n.element {\n // Three columns to start\n @include row-cols(3);\n\n // Five columns from medium breakpoint up\n @include media-breakpoint-up(md) {\n @include row-cols(5);\n }\n}\n```\n\n## Nesting\n\nTo nest your content with the default grid, add a new `.row` and set of `.col-sm-*` columns within an existing `.col-sm-*` column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns).\n\n\u003CExample class=\"bd-example-row\" code={`\u003Cdiv class=\"container text-center\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-sm-3\">\n Level 1: .col-sm-3\n \u003C/div>\n \u003Cdiv class=\"col-sm-9\">\n \u003Cdiv class=\"row\">\n \u003Cdiv class=\"col-8 col-sm-6\">\n Level 2: .col-8 .col-sm-6\n \u003C/div>\n \u003Cdiv class=\"col-4 col-sm-6\">\n Level 2: .col-4 .col-sm-6\n \u003C/div>\n \u003C/div>\n \u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## CSS\n\nWhen using Bootstrap's source Sass files, you have the option of using Sass variables and mixins to create custom, semantic, and responsive page layouts. Our predefined grid classes use these same variables and mixins to provide a whole suite of ready-to-use classes for fast responsive layouts.\n\n### Sass variables\n\nVariables and maps determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below.\n\n```scss\n$grid-columns: 12;\n$grid-gutter-width: 1.5rem;\n$grid-row-columns: 6;\n```\n\n\u003CScssDocs name=\"grid-breakpoints\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"container-max-widths\" file=\"scss/_variables.scss\" />\n\n### Sass mixins\n\nMixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns.\n\n```scss\n// Creates a wrapper for a series of columns\n@include make-row();\n\n// Make the element grid-ready (applying everything but the width)\n@include make-col-ready();\n\n// Without optional size values, the mixin will create equal columns (similar to using .col)\n@include make-col();\n@include make-col($size, $columns: $grid-columns);\n\n// Offset with margins\n@include make-col-offset($size, $columns: $grid-columns);\n```\n\n### Example usage\n\nYou can modify the variables to your own custom values, or just use the mixins with their default values. Here's an example of using the default settings to create a two-column layout with a gap between.\n\n```scss\n.example-container {\n @include make-container();\n // Make sure to define this width after the mixin to override\n // `width: 100%` generated by `make-container()`\n width: 800px;\n}\n\n.example-row {\n @include make-row();\n}\n\n.example-content-main {\n @include make-col-ready();\n\n @include media-breakpoint-up(sm) {\n @include make-col(6);\n }\n @include media-breakpoint-up(lg) {\n @include make-col(8);\n }\n}\n\n.example-content-secondary {\n @include make-col-ready();\n\n @include media-breakpoint-up(sm) {\n @include make-col(6);\n }\n @include media-breakpoint-up(lg) {\n @include make-col(4);\n }\n}\n```\n\n\u003CExample code={`\u003Cdiv class=\"example-container\">\n \u003Cdiv class=\"example-row\">\n \u003Cdiv class=\"example-content-main\">Main content\u003C/div>\n \u003Cdiv class=\"example-content-secondary\">Secondary content\u003C/div>\n \u003C/div>\n\u003C/div>`} />\n\n## Customizing the grid\n\nUsing our built-in grid Sass variables and maps, it's possible to completely customize the predefined grid classes. Change the number of tiers, the media query dimensions, and the container widths—then recompile.\n\n### Columns and gutters\n\nThe number of grid columns can be modified via Sass variables. `$grid-columns` is used to generate the widths (in percent) of each individual column while `$grid-gutter-width` sets the width for the column gutters. `$grid-row-columns` is used to set the maximum number of columns of `.row-cols-*`, any number over this limit is ignored.\n\n```scss\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n```\n\n### Grid tiers\n\nMoving beyond the columns themselves, you may also customize the number of grid tiers. If you wanted just four grid tiers, you'd update the `$grid-breakpoints` and `$container-max-widths` to something like this:\n\n```scss\n$grid-breakpoints: (\n xs: 0,\n sm: 480px,\n md: 768px,\n lg: 1024px\n);\n\n$container-max-widths: (\n sm: 420px,\n md: 720px,\n lg: 960px\n);\n```\n\nWhen making any changes to the Sass variables or maps, you'll need to save your changes and recompile. Doing so will output a brand-new set of predefined grid classes for column widths, offsets, and ordering. Responsive visibility utilities will also be updated to use the custom breakpoints. Make sure to set grid values in `px` (not `rem`, `em`, or `%`).","src/content/docs/layout/grid.mdx","2abb1ea68eb8837f","layout/grid.mdx","utilities/api",{"id":1001,"data":1003,"body":1007,"filePath":1008,"digest":1009,"legacyId":1010,"deferredRender":139},{"aliases":1004,"description":1005,"title":1006,"toc":139},"/docs/[[config:docs_version]]/utilities/","The utility API is a Sass-based tool to generate utility classes.","Utility API","Bootstrap utilities are generated with our utility API and can be used to modify or extend our default set of utility classes via Sass. Our utility API is based on a series of Sass maps and functions for generating families of classes with various options. If you're unfamiliar with Sass maps, read up on the [official Sass docs](https://sass-lang.com/documentation/values/maps/) to get started.\n\nThe `$utilities` map contains all our utilities and is later merged with your custom `$utilities` map, if present. The utility map contains a keyed list of utility groups which accept the following options:\n\n\u003CBsTable class=\"table table-utilities\">\n| Option | Type | Default value | Description |\n| --- | --- | --- | --- |\n| [`property`](#property) | **Required** | – | Name of the property, this can be a string or an array of strings (e.g., horizontal paddings or margins). |\n| [`values`](#values) | **Required** | – | List of values, or a map if you don't want the class name to be the same as the value. If `null` is used as map key, `class` is not prepended to the class name. |\n| [`class`](#class) | Optional | null | Name of the generated class. If not provided and `property` is an array of strings, `class` will default to the first element of the `property` array. If not provided and `property` is a string, the `values` keys are used for the `class` names. |\n| [`css-var`](#css-variable-utilities) | Optional | `false` | Boolean to generate CSS variables instead of CSS rules. |\n| [`css-variable-name`](#css-variable-utilities) | Optional | null | Custom un-prefixed name for the CSS variable inside the ruleset. |\n| [`local-vars`](#local-css-variables) | Optional | null | Map of local CSS variables to generate in addition to the CSS rules. |\n| [`state`](#states) | Optional | null | List of pseudo-class variants (e.g., `:hover` or `:focus`) to generate. |\n| [`responsive`](#responsive) | Optional | `false` | Boolean indicating if responsive classes should be generated. |\n| `rfs` | Optional | `false` | Boolean to enable [fluid rescaling with RFS]([[docsref:/getting-started/rfs]]). |\n| [`print`](#print) | Optional | `false` | Boolean indicating if print classes need to be generated. |\n| `rtl` | Optional | `true` | Boolean indicating if utility should be kept in RTL. |\n\u003C/BsTable>\n\n## API explained\n\nAll utility variables are added to the `$utilities` variable within our `_utilities.scss` stylesheet. Each group of utilities looks something like this:\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nWhich outputs the following:\n\n```css\n.opacity-0 { opacity: 0; }\n.opacity-25 { opacity: .25; }\n.opacity-50 { opacity: .5; }\n.opacity-75 { opacity: .75; }\n.opacity-100 { opacity: 1; }\n```\n\n### Property\n\nThe required `property` key must be set for any utility, and it must contain a valid CSS property. This property is used in the generated utility's ruleset. When the `class` key is omitted, it also serves as the default class name. Consider the `text-decoration` utility:\n\n```scss\n$utilities: (\n \"text-decoration\": (\n property: text-decoration,\n values: none underline line-through\n )\n);\n```\n\nOutput:\n\n```css\n.text-decoration-none { text-decoration: none !important; }\n.text-decoration-underline { text-decoration: underline !important; }\n.text-decoration-line-through { text-decoration: line-through !important; }\n```\n\n### Values\n\nUse the `values` key to specify which values for the specified `property` should be used in the generated class names and rules. Can be a list or map (set in the utilities or in a Sass variable).\n\nAs a list, like with [`text-decoration` utilities]([[docsref:/utilities/text#text-decoration]]):\n\n```scss\nvalues: none underline line-through\n```\n\nAs a map, like with [`opacity` utilities]([[docsref:/utilities/opacity]]):\n\n```scss\nvalues: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n)\n```\n\nAs a Sass variable that sets the list or map, as in our [`position` utilities]([[docsref:/utilities/position]]):\n\n```scss\nvalues: $position-values\n```\n\n### Class\n\nUse the `class` option to change the class prefix used in the compiled CSS. For example, to change from `.opacity-*` to `.o-*`:\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n class: o,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.o-0 { opacity: 0 !important; }\n.o-25 { opacity: .25 !important; }\n.o-50 { opacity: .5 !important; }\n.o-75 { opacity: .75 !important; }\n.o-100 { opacity: 1 !important; }\n```\n\nIf `class: null`, generates classes for each of the `values` keys:\n\n```scss\n$utilities: (\n \"visibility\": (\n property: visibility,\n class: null,\n values: (\n visible: visible,\n invisible: hidden,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.visible { visibility: visible !important; }\n.invisible { visibility: hidden !important; }\n```\n\n### CSS variable utilities\n\nSet the `css-var` boolean option to `true` and the API will generate local CSS variables for the given selector instead of the usual `property: value` rules. Add an optional `css-variable-name` to set a different CSS variable name than the class name.\n\nConsider our `.text-opacity-*` utilities. If we add the `css-variable-name` option, we'll get a custom output.\n\n```scss\n$utilities: (\n \"text-opacity\": (\n css-var: true,\n css-variable-name: text-alpha,\n class: text-opacity,\n values: (\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1\n )\n ),\n);\n```\n\nOutput:\n\n```css\n.text-opacity-25 { --bs-text-alpha: .25; }\n.text-opacity-50 { --bs-text-alpha: .5; }\n.text-opacity-75 { --bs-text-alpha: .75; }\n.text-opacity-100 { --bs-text-alpha: 1; }\n```\n\n### Local CSS variables\n\nUse the `local-vars` option to specify a Sass map that will generate local CSS variables within the utility class's ruleset. Please note that it may require additional work to consume those local CSS variables in the generated CSS rules. For example, consider our `.bg-*` utilities:\n\n```scss\n$utilities: (\n \"background-color\": (\n property: background-color,\n class: bg,\n local-vars: (\n \"bg-opacity\": 1\n ),\n values: map-merge(\n $utilities-bg-colors,\n (\n \"transparent\": transparent\n )\n )\n )\n);\n```\n\nOutput:\n\n```css\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n```\n\n### States\n\nUse the `state` option to generate pseudo-class variations. Example pseudo-classes are `:hover` and `:focus`. When a list of states are provided, classnames are created for that pseudo-class. For example, to change opacity on hover, add `state: hover` and you'll get `.opacity-hover:hover` in your compiled CSS.\n\nNeed multiple pseudo-classes? Use a space-separated list of states: `state: hover focus`.\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n class: opacity,\n state: hover,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.opacity-0-hover:hover { opacity: 0 !important; }\n.opacity-25-hover:hover { opacity: .25 !important; }\n.opacity-50-hover:hover { opacity: .5 !important; }\n.opacity-75-hover:hover { opacity: .75 !important; }\n.opacity-100-hover:hover { opacity: 1 !important; }\n```\n\n### Responsive\n\nAdd the `responsive` boolean to generate responsive utilities (e.g., `.opacity-md-25`) across [all breakpoints]([[docsref:/layout/breakpoints]]).\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n responsive: true,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.opacity-0 { opacity: 0 !important; }\n.opacity-25 { opacity: .25 !important; }\n.opacity-50 { opacity: .5 !important; }\n.opacity-75 { opacity: .75 !important; }\n.opacity-100 { opacity: 1 !important; }\n\n@media (min-width: 576px) {\n .opacity-sm-0 { opacity: 0 !important; }\n .opacity-sm-25 { opacity: .25 !important; }\n .opacity-sm-50 { opacity: .5 !important; }\n .opacity-sm-75 { opacity: .75 !important; }\n .opacity-sm-100 { opacity: 1 !important; }\n}\n\n@media (min-width: 768px) {\n .opacity-md-0 { opacity: 0 !important; }\n .opacity-md-25 { opacity: .25 !important; }\n .opacity-md-50 { opacity: .5 !important; }\n .opacity-md-75 { opacity: .75 !important; }\n .opacity-md-100 { opacity: 1 !important; }\n}\n\n@media (min-width: 992px) {\n .opacity-lg-0 { opacity: 0 !important; }\n .opacity-lg-25 { opacity: .25 !important; }\n .opacity-lg-50 { opacity: .5 !important; }\n .opacity-lg-75 { opacity: .75 !important; }\n .opacity-lg-100 { opacity: 1 !important; }\n}\n\n@media (min-width: 1200px) {\n .opacity-xl-0 { opacity: 0 !important; }\n .opacity-xl-25 { opacity: .25 !important; }\n .opacity-xl-50 { opacity: .5 !important; }\n .opacity-xl-75 { opacity: .75 !important; }\n .opacity-xl-100 { opacity: 1 !important; }\n}\n\n@media (min-width: 1400px) {\n .opacity-xxl-0 { opacity: 0 !important; }\n .opacity-xxl-25 { opacity: .25 !important; }\n .opacity-xxl-50 { opacity: .5 !important; }\n .opacity-xxl-75 { opacity: .75 !important; }\n .opacity-xxl-100 { opacity: 1 !important; }\n}\n```\n\n### Print\n\nEnabling the `print` option will **also** generate utility classes for print, which are only applied within the `@media print { ... }` media query.\n\n```scss\n$utilities: (\n \"opacity\": (\n property: opacity,\n print: true,\n values: (\n 0: 0,\n 25: .25,\n 50: .5,\n 75: .75,\n 100: 1,\n )\n )\n);\n```\n\nOutput:\n\n```css\n.opacity-0 { opacity: 0 !important; }\n.opacity-25 { opacity: .25 !important; }\n.opacity-50 { opacity: .5 !important; }\n.opacity-75 { opacity: .75 !important; }\n.opacity-100 { opacity: 1 !important; }\n\n@media print {\n .opacity-print-0 { opacity: 0 !important; }\n .opacity-print-25 { opacity: .25 !important; }\n .opacity-print-50 { opacity: .5 !important; }\n .opacity-print-75 { opacity: .75 !important; }\n .opacity-print-100 { opacity: 1 !important; }\n}\n```\n\n## Importance\n\nAll utilities generated by the API include `!important` to ensure they override components and modifier classes as intended. You can toggle this setting globally with the `$enable-important-utilities` variable (defaults to `true`).\n\n## Using the API\n\nNow that you're familiar with how the utilities API works, learn how to add your own custom classes and modify our default utilities.\n\n### Override utilities\n\nOverride existing utilities by using the same key. For example, if you want additional responsive overflow utility classes, you can do this:\n\n```scss\n$utilities: (\n \"overflow\": (\n responsive: true,\n property: overflow,\n values: visible hidden scroll auto,\n ),\n);\n```\n\n### Add utilities\n\nNew utilities can be added to the default `$utilities` map with a `map-merge`. Make sure our required Sass files and `_utilities.scss` are imported first, then use the `map-merge` to add your additional utilities. For example, here's how to add a responsive `cursor` utility with three values.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"cursor\": (\n property: cursor,\n class: cursor,\n responsive: true,\n values: auto pointer grab,\n )\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n### Modify utilities\n\nModify existing utilities in the default `$utilities` map with `map-get` and `map-merge` functions. In the example below, we're adding an additional value to the `width` utilities. Start with an initial `map-merge` and then specify which utility you want to modify. From there, fetch the nested `\"width\"` map with `map-get` to access and modify the utility's options and values.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"width\": map-merge(\n map-get($utilities, \"width\"),\n (\n values: map-merge(\n map-get(map-get($utilities, \"width\"), \"values\"),\n (10: 10%),\n ),\n ),\n ),\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n#### Enable responsive\n\nYou can enable responsive classes for an existing set of utilities that are not currently responsive by default. For example, to make the `border` classes responsive:\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"border\": map-merge(\n map-get($utilities, \"border\"),\n ( responsive: true ),\n ),\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\nThis will now generate responsive variations of `.border` and `.border-0` for each breakpoint. Your generated CSS will look like this:\n\n```css\n.border { ... }\n.border-0 { ... }\n\n@media (min-width: 576px) {\n .border-sm { ... }\n .border-sm-0 { ... }\n}\n\n@media (min-width: 768px) {\n .border-md { ... }\n .border-md-0 { ... }\n}\n\n@media (min-width: 992px) {\n .border-lg { ... }\n .border-lg-0 { ... }\n}\n\n@media (min-width: 1200px) {\n .border-xl { ... }\n .border-xl-0 { ... }\n}\n\n@media (min-width: 1400px) {\n .border-xxl { ... }\n .border-xxl-0 { ... }\n}\n```\n\n#### Rename utilities\n\nMissing v4 utilities, or used to another naming convention? The utilities API can be used to override the resulting `class` of a given utility—for example, to rename `.ms-*` utilities to oldish `.ml-*`:\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"margin-start\": map-merge(\n map-get($utilities, \"margin-start\"),\n ( class: ml ),\n ),\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n### Remove utilities\n\nRemove any of the default utilities with the [`map-remove()` Sass function](https://sass-lang.com/documentation/modules/map/#remove).\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n// Remove multiple utilities with a comma-separated list\n$utilities: map-remove($utilities, \"width\", \"float\");\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\nYou can also use the [`map-merge()` Sass function](https://sass-lang.com/documentation/modules/map/#merge) and set the group key to `null` to remove the utility.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n \"width\": null\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n### Add, remove, modify\n\nYou can add, remove, and modify many utilities all at once with the [`map-merge()` Sass function](https://sass-lang.com/documentation/modules/map/#merge). Here's how you can combine the previous examples into one larger map.\n\n```scss\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n@import \"bootstrap/scss/utilities\";\n\n$utilities: map-merge(\n $utilities,\n (\n // Remove the `width` utility\n \"width\": null,\n // Make an existing utility responsive\n \"border\": map-merge(\n map-get($utilities, \"border\"),\n ( responsive: true ),\n ),\n // Add new utilities\n \"cursor\": (\n property: cursor,\n class: cursor,\n responsive: true,\n values: auto pointer grab,\n )\n )\n);\n\n@import \"bootstrap/scss/utilities/api\";\n```\n\n#### Remove utility in RTL\n\nSome edge cases make [RTL styling difficult](https://rtlstyling.com/posts/rtl-styling#common-things-that-might-not-work-for-rtl), such as line breaks in Arabic. Thus utilities can be dropped from RTL output by setting the `rtl` option to `false`:\n\n```scss\n$utilities: (\n \"word-wrap\": (\n property: word-wrap word-break,\n class: text,\n values: (break: break-word),\n rtl: false\n ),\n);\n```\n\nOutput:\n\n```css\n/* rtl:begin:remove */\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n/* rtl:end:remove */\n```\n\nThis doesn't output anything in RTL, thanks to [the RTLCSS `remove` control directive](https://rtlcss.com/learn/usage-guide/control-directives/#remove).","src/content/docs/utilities/api.mdx","b75c9110a943062a","utilities/api.mdx","utilities/background",{"id":1011,"data":1013,"body":1016,"filePath":1017,"digest":1018,"legacyId":1019,"deferredRender":139},{"description":1014,"title":1015,"toc":139},"Convey meaning through `background-color` and add decoration with gradients.","Background","import { getData } from '@libs/data'\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Background color\n\nSimilar to the contextual text color classes, set the background of an element to any contextual class. Background utilities **do not set `color`**, so in some cases you'll want to use `.text-*` [color utilities]([[docsref:/utilities/colors]]).\n\n\u003CCallout>\nBackground utilities like `.bg-*` that generated from our original `$theme-colors` Sass map don't yet respond to color modes, however, any `.bg-*-subtle` utility will. This will be resolved in v6.\n\u003C/Callout>\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cdiv class=\"p-3 mb-2 bg-${themeColor.name} ${themeColor.contrast_color ? `text-${themeColor.contrast_color}` : `text-white`}\">.bg-${themeColor.name}\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-${themeColor.name}-subtle text-${themeColor.name}-emphasis\">.bg-${themeColor.name}-subtle\u003C/div>`),\n `\u003Cdiv class=\"p-3 mb-2 bg-body-secondary\">.bg-body-secondary\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-body-tertiary\">.bg-body-tertiary\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-body text-body\">.bg-body\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-black text-white\">.bg-black\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-white text-dark\">.bg-white\u003C/div>\n\u003Cdiv class=\"p-3 mb-2 bg-transparent text-body\">.bg-transparent\u003C/div>`\n]} />\n\n## Background gradient\n\nBy adding a `.bg-gradient` class, a linear gradient is added as background image to the backgrounds. This gradient starts with a semi-transparent white which fades out to the bottom.\n\nDo you need a gradient in your custom CSS? Just add `background-image: var(--bs-gradient);`.\n\n{getData('theme-colors').map((themeColor) => {\n return (\n \u003Cdiv class={`p-3 mb-2 bg-${themeColor.name} bg-gradient${themeColor.contrast_color ? (' text-' + themeColor.contrast_color) : ' text-white'}`}>.bg-{themeColor.name}.bg-gradient {themeColor.contrast_color}\u003C/div>\n )\n})}\n\u003Cdiv class=\"p-3 mb-2 bg-black bg-gradient text-white\">.bg-black.bg-gradient\u003C/div>\n\n## Opacity\n\n\u003CAddedIn version=\"5.1.0\" />\n\nAs of v5.1.0, `background-color` utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.\n\n### How it works\n\nConsider our default `.bg-success` utility.\n\n```css\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n```\n\nWe use an RGB version of our `--bs-success` (with the value of `25, 135, 84`) CSS variable and attached a second CSS variable, `--bs-bg-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.bg-success` now, your computed `color` value is `rgba(25, 135, 84, 1)`. The local CSS variable inside each `.bg-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.\n\n### Example\n\nTo change that opacity, override `--bs-bg-opacity` via custom styles or inline styles.\n\n\u003CExample code={`\u003Cdiv class=\"bg-success p-2 text-white\">This is default success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2\" style=\"--bs-bg-opacity: .5;\">This is 50% opacity success background\u003C/div>`} />\n\nOr, choose from any of the `.bg-opacity` utilities:\n\n\u003CExample code={`\u003Cdiv class=\"bg-success p-2 text-white\">This is default success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2 text-white bg-opacity-75\">This is 75% opacity success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2 text-dark bg-opacity-50\">This is 50% opacity success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2 text-dark bg-opacity-25\">This is 25% opacity success background\u003C/div>\n\u003Cdiv class=\"bg-success p-2 text-dark bg-opacity-10\">This is 10% opacity success background\u003C/div>`} />\n\n## CSS\n\nIn addition to the following Sass functionality, consider reading about our included [CSS custom properties]([[docsref:/customize/css-variables]]) (aka CSS variables) for colors and more.\n\n### Sass variables\n\nMost `background-color` utilities are generated by our theme colors, reassigned from our generic color palette variables.\n\n\u003CScssDocs name=\"color-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-color-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"variable-gradient\" file=\"scss/_variables.scss\" />\n\nGrayscale colors are also available, but only a subset are used to generate any utilities.\n\n\u003CScssDocs name=\"gray-color-variables\" file=\"scss/_variables.scss\" />\n\nVariables for setting `background-color` in `.bg-*-subtle` utilities in light and dark mode:\n\n\u003CScssDocs name=\"theme-bg-subtle-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-bg-subtle-dark-variables\" file=\"scss/_variables-dark.scss\" />\n\n### Sass maps\n\nTheme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.\n\n\u003CScssDocs name=\"theme-colors-map\" file=\"scss/_variables.scss\" />\n\nGrayscale colors are also available as a Sass map. **This map is not used to generate any utilities.**\n\n\u003CScssDocs name=\"gray-colors-map\" file=\"scss/_variables.scss\" />\n\nRGB colors are generated from a separate Sass map:\n\n\u003CScssDocs name=\"theme-colors-rgb\" file=\"scss/_maps.scss\" />\n\nBackground color opacities build on that with their own map that's consumed by the utilities API:\n\n\u003CScssDocs name=\"utilities-bg-colors\" file=\"scss/_maps.scss\" />\n\nColor mode background colors are also available as a Sass map:\n\n\u003CScssDocs name=\"theme-bg-subtle-map\" file=\"scss/_maps.scss\" />\n\n\u003CScssDocs name=\"theme-bg-subtle-dark-map\" file=\"scss/_maps.scss\" />\n\n### Sass mixins\n\n**No mixins are used to generate our background utilities**, but we do have some additional mixins for other situations where you'd like to create your own gradients.\n\n\u003CScssDocs name=\"gradient-bg-mixin\" file=\"scss/mixins/_gradients.scss\" />\n\n\u003CScssDocs name=\"gradient-mixins\" file=\"scss/mixins/_gradients.scss\" />\n\n### Sass utilities API\n\nBackground utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-bg-color\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/background.mdx","fe877a4451043f99","utilities/background.mdx","utilities/borders",{"id":1020,"data":1022,"body":1025,"filePath":1026,"digest":1027,"legacyId":1028,"deferredRender":139},{"description":1023,"title":1024,"toc":139},"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons, or any other element.","Borders","import { getData } from '@libs/data'\n\n## Border\n\nUse border utilities to add or remove an element's borders. Choose from all borders or one at a time.\n\n### Additive\n\nAdd borders to custom elements:\n\n\u003CExample class=\"bd-example-border-utils\" code={`\u003Cspan class=\"border\">\u003C/span>\n\u003Cspan class=\"border-top\">\u003C/span>\n\u003Cspan class=\"border-end\">\u003C/span>\n\u003Cspan class=\"border-bottom\">\u003C/span>\n\u003Cspan class=\"border-start\">\u003C/span>`} />\n\n### Subtractive\n\nOr remove borders:\n\n\u003CExample class=\"bd-example-border-utils\" code={`\u003Cspan class=\"border border-0\">\u003C/span>\n\u003Cspan class=\"border border-top-0\">\u003C/span>\n\u003Cspan class=\"border border-end-0\">\u003C/span>\n\u003Cspan class=\"border border-bottom-0\">\u003C/span>\n\u003Cspan class=\"border border-start-0\">\u003C/span>`} />\n\n## Color\n\n\u003CCallout>\nBorder utilities like `.border-*` that generated from our original `$theme-colors` Sass map don't yet respond to color modes, however, any `.border-*-subtle` utility will. This will be resolved in v6.\n\u003C/Callout>\n\nChange the border color using utilities built on our theme colors.\n\n\u003CExample class=\"bd-example-border-utils\" code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cspan class=\"border border-${themeColor.name}\">\u003C/span>\n\u003Cspan class=\"border border-${themeColor.name}-subtle\">\u003C/span>`),\n `\u003Cspan class=\"border border-black\">\u003C/span>\n\u003Cspan class=\"border border-white\">\u003C/span>`\n]} />\n\nOr modify the default `border-color` of a component:\n\n\u003CExample code={`\u003Cdiv class=\"mb-4\">\n \u003Clabel for=\"exampleFormControlInput1\" class=\"form-label\">Email address\u003C/label>\n \u003Cinput type=\"email\" class=\"form-control border-success\" id=\"exampleFormControlInput1\" placeholder=\"name@example.com\">\n\u003C/div>\n\n\u003Cdiv class=\"h4 pb-2 mb-4 text-danger border-bottom border-danger\">\n Dangerous heading\n\u003C/div>\n\n\u003Cdiv class=\"p-3 bg-info bg-opacity-10 border border-info border-start-0 rounded-end\">\n Changing border color and width\n\u003C/div>`} />\n\n## Opacity\n\n\u003CAddedIn version=\"5.2.0\" />\n\nBootstrap `border-{color}` utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.\n\n### How it works\n\nConsider our default `.border-success` utility.\n\n```css\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n```\n\nWe use an RGB version of our `--bs-success` (with the value of `25, 135, 84`) CSS variable and attached a second CSS variable, `--bs-border-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.border-success` now, your computed `color` value is `rgba(25, 135, 84, 1)`. The local CSS variable inside each `.border-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.\n\n### Example\n\nTo change that opacity, override `--bs-border-opacity` via custom styles or inline styles.\n\n\u003CExample code={`\u003Cdiv class=\"border border-success p-2 mb-2\">This is default success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2\" style=\"--bs-border-opacity: .5;\">This is 50% opacity success border\u003C/div>`} />\n\nOr, choose from any of the `.border-opacity` utilities:\n\n\u003CExample code={`\u003Cdiv class=\"border border-success p-2 mb-2\">This is default success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2 mb-2 border-opacity-75\">This is 75% opacity success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2 mb-2 border-opacity-50\">This is 50% opacity success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2 mb-2 border-opacity-25\">This is 25% opacity success border\u003C/div>\n\u003Cdiv class=\"border border-success p-2 border-opacity-10\">This is 10% opacity success border\u003C/div>`} />\n\n## Width\n\n\u003CExample class=\"bd-example-border-utils\" code={`\u003Cspan class=\"border border-1\">\u003C/span>\n\u003Cspan class=\"border border-2\">\u003C/span>\n\u003Cspan class=\"border border-3\">\u003C/span>\n\u003Cspan class=\"border border-4\">\u003C/span>\n\u003Cspan class=\"border border-5\">\u003C/span>`} />\n\n## Radius\n\nAdd classes to an element to easily round its corners.\n\n\u003CExample class=\"bd-example-rounded-utils\" code={`\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded\" title=\"Example rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-top\" title=\"Example top rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-end\" title=\"Example right rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-bottom\" title=\"Example bottom rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-start\" title=\"Example left rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-circle\" title=\"Completely round image\" />\n\u003CPlaceholder width=\"150\" height=\"75\" class=\"rounded-pill\" title=\"Rounded pill image\" />`} />\n\n### Sizes\n\nUse the scaling classes for larger or smaller rounded corners. Sizes range from `0` to `5`, and can be configured by modifying the utilities API.\n\n\u003CExample class=\"bd-example-rounded-utils\" code={`\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-0\" title=\"Example non-rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-1\" title=\"Example small rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-2\" title=\"Example default rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-3\" title=\"Example large rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-4\" title=\"Example larger rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-5\" title=\"Example extra large rounded image\" />`} />\n\n\u003CExample class=\"bd-example-rounded-utils\" code={`\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-bottom-1\" title=\"Example small rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-start-2\" title=\"Example default left rounded image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-end-circle\" title=\"Example right completely round image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-start-pill\" title=\"Example left rounded pill image\" />\n\u003CPlaceholder width=\"75\" height=\"75\" class=\"rounded-5 rounded-top-0\" title=\"Example extra large bottom rounded image\" />`} />\n\n## CSS\n\n### Variables\n\n\u003CAddedIn version=\"5.2.0\" />\n\n\u003CScssDocs name=\"root-border-var\" file=\"scss/_root.scss\" />\n\n### Sass variables\n\n\u003CScssDocs name=\"border-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"border-radius-variables\" file=\"scss/_variables.scss\" />\n\nVariables for setting `border-color` in `.border-*-subtle` utilities in light and dark mode:\n\n\u003CScssDocs name=\"theme-border-subtle-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-border-subtle-dark-variables\" file=\"scss/_variables-dark.scss\" />\n\n### Sass maps\n\nColor mode adaptive border colors are also available as a Sass map:\n\n\u003CScssDocs name=\"theme-border-subtle-map\" file=\"scss/_maps.scss\" />\n\n\u003CScssDocs name=\"theme-border-subtle-dark-map\" file=\"scss/_maps.scss\" />\n\n### Sass mixins\n\n\u003CScssDocs name=\"border-radius-mixins\" file=\"scss/mixins/_border-radius.scss\" />\n\n### Sass utilities API\n\nBorder utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-borders\" file=\"scss/_utilities.scss\" />\n\n\u003CScssDocs name=\"utils-border-radius\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/borders.mdx","27f17f80e5533dcb","utilities/borders.mdx","utilities/colors",{"id":1029,"data":1031,"body":1034,"filePath":1035,"digest":1036,"legacyId":1037,"deferredRender":139},{"description":1032,"title":1033,"toc":139},"Convey meaning through `color` with a handful of color utility classes. Includes support for styling links with hover states, too.","Colors","import { getData } from '@libs/data'\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## Colors\n\nColorize text with color utilities. If you want to colorize links, you can use the [`.link-*` helper classes]([[docsref:/helpers/colored-links]]) which have `:hover` and `:focus` states.\n\n\u003CCallout>\nColor utilities like `.text-*` that generated from our original `$theme-colors` Sass map don't yet respond to color modes, however, any `.text-*-emphasis` utility will. This will be resolved in v6.\n\u003C/Callout>\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cp class=\"text-${themeColor.name}${themeColor.contrast_color ? ` bg-${themeColor.contrast_color}` : ``}\">.text-${themeColor.name}\u003C/p>\n\u003Cp class=\"text-${themeColor.name}-emphasis\">.text-${themeColor.name}-emphasis\u003C/p>`),\n `\n\u003Cp class=\"text-body\">.text-body\u003C/p>\n\u003Cp class=\"text-body-emphasis\">.text-body-emphasis\u003C/p>\n\u003Cp class=\"text-body-secondary\">.text-body-secondary\u003C/p>\n\u003Cp class=\"text-body-tertiary\">.text-body-tertiary\u003C/p>\n\n\u003Cp class=\"text-black bg-white\">.text-black\u003C/p>\n\u003Cp class=\"text-white bg-dark\">.text-white\u003C/p>\n\u003Cp class=\"text-black-50 bg-white\">.text-black-50\u003C/p>\n\u003Cp class=\"text-white-50 bg-dark\">.text-white-50\u003C/p>`\n]} />\n\n\u003CCallout type=\"warning\">\n**Deprecation:** With the addition of `.text-opacity-*` utilities and CSS variables for text utilities, `.text-black-50` and `.text-white-50` are deprecated as of v5.1.0. They'll be removed in v6.0.0.\n\u003C/Callout>\n\n\u003CCallout type=\"warning\">\n**Deprecation:** With the addition of the expanded theme colors and variables, the `.text-muted` utility has been deprecated as of v5.3.0. Its default value has also been reassigned to the new `--bs-secondary-color` CSS variable to better support color modes. It will be removed in v6.0.0.\n\u003C/Callout>\n\n## Opacity\n\n\u003CAddedIn version=\"5.1.0\" />\n\nAs of v5.1.0, text color utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.\n\n### How it works\n\nConsider our default `.text-primary` utility.\n\n```css\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n```\n\nWe use an RGB version of our `--bs-primary` (with the value of `13, 110, 253`) CSS variable and attached a second CSS variable, `--bs-text-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.text-primary` now, your computed `color` value is `rgba(13, 110, 253, 1)`. The local CSS variable inside each `.text-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.\n\n### Example\n\nTo change that opacity, override `--bs-text-opacity` via custom styles or inline styles.\n\n\u003CExample code={`\u003Cdiv class=\"text-primary\">This is default primary text\u003C/div>\n\u003Cdiv class=\"text-primary\" style=\"--bs-text-opacity: .5;\">This is 50% opacity primary text\u003C/div>`} />\n\nOr, choose from any of the `.text-opacity` utilities:\n\n\u003CExample code={`\u003Cdiv class=\"text-primary\">This is default primary text\u003C/div>\n\u003Cdiv class=\"text-primary text-opacity-75\">This is 75% opacity primary text\u003C/div>\n\u003Cdiv class=\"text-primary text-opacity-50\">This is 50% opacity primary text\u003C/div>\n\u003Cdiv class=\"text-primary text-opacity-25\">This is 25% opacity primary text\u003C/div>`} />\n\n## Specificity\n\nSometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a `\u003Cdiv>` or more semantic element with the desired class.\n\n## CSS\n\nIn addition to the following Sass functionality, consider reading about our included [CSS custom properties]([[docsref:/customize/css-variables]]) (aka CSS variables) for colors and more.\n\n### Sass variables\n\nMost `color` utilities are generated by our theme colors, reassigned from our generic color palette variables.\n\n\u003CScssDocs name=\"color-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-color-variables\" file=\"scss/_variables.scss\" />\n\nGrayscale colors are also available, but only a subset are used to generate any utilities.\n\n\u003CScssDocs name=\"gray-color-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-text-map\" file=\"scss/_maps.scss\" />\n\nVariables for setting colors in `.text-*-emphasis` utilities in light and dark mode:\n\n\u003CScssDocs name=\"theme-text-variables\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-text-dark-variables\" file=\"scss/_variables-dark.scss\" />\n\n### Sass maps\n\nTheme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.\n\n\u003CScssDocs name=\"theme-colors-map\" file=\"scss/_variables.scss\" />\n\nGrayscale colors are also available as a Sass map. **This map is not used to generate any utilities.**\n\n\u003CScssDocs name=\"gray-colors-map\" file=\"scss/_variables.scss\" />\n\nRGB colors are generated from a separate Sass map:\n\n\u003CScssDocs name=\"theme-colors-rgb\" file=\"scss/_maps.scss\" />\n\nColor opacities build on that with their own map that's consumed by the utilities API:\n\n\u003CScssDocs name=\"utilities-text-colors\" file=\"scss/_maps.scss\" />\n\nColor mode adaptive text colors are also available as a Sass map:\n\n\u003CScssDocs name=\"theme-text-map\" file=\"scss/_maps.scss\" />\n\n\u003CScssDocs name=\"theme-text-dark-map\" file=\"scss/_maps.scss\" />\n\n### Sass utilities API\n\nColor utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-color\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/colors.mdx","db46dee159c39222","utilities/colors.mdx","utilities/display",{"id":1038,"data":1040,"body":1043,"filePath":1044,"digest":1045,"legacyId":1046,"deferredRender":139},{"description":1041,"title":1042,"toc":139},"Quickly and responsively toggle the display value of components and more with our display utilities. Includes support for some of the more common values, as well as some extras for controlling display when printing.","Display property","## How it works\n\nChange the value of the [`display` property](https://developer.mozilla.org/en-US/docs/Web/CSS/display) with our responsive display utility classes. We purposely support only a subset of all possible values for `display`. Classes can be combined for various effects as you need.\n\n## Notation\n\nDisplay utility classes that apply to all [breakpoints]([[docsref:/layout/breakpoints]]), from `xs` to `xxl`, have no breakpoint abbreviation in them. This is because those classes are applied from `min-width: 0;` and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.\n\nAs such, the classes are named using the format:\n\n- `.d-{value}` for `xs`\n- `.d-{breakpoint}-{value}` for `sm`, `md`, `lg`, `xl`, and `xxl`.\n\nWhere *value* is one of:\n\n- `none`\n- `inline`\n- `inline-block`\n- `block`\n- `grid`\n- `inline-grid`\n- `table`\n- `table-cell`\n- `table-row`\n- `flex`\n- `inline-flex`\n\nThe display values can be altered by changing the `display` values defined in `$utilities` and recompiling the SCSS.\n\nThe media queries affect screen widths with the given breakpoint *or larger*. For example, `.d-lg-none` sets `display: none;` on `lg`, `xl`, and `xxl` screens.\n\n## Examples\n\n\u003CExample code={`\u003Cdiv class=\"d-inline p-2 text-bg-primary\">d-inline\u003C/div>\n\u003Cdiv class=\"d-inline p-2 text-bg-dark\">d-inline\u003C/div>`} />\n\n\u003CExample code={`\u003Cspan class=\"d-block p-2 text-bg-primary\">d-block\u003C/span>\n\u003Cspan class=\"d-block p-2 text-bg-dark\">d-block\u003C/span>`} />\n\n## Hiding elements\n\nFor faster mobile-friendly development, use responsive display classes for showing and hiding elements by device. Avoid creating entirely different versions of the same site, instead hide elements responsively for each screen size.\n\nTo hide elements simply use the `.d-none` class or one of the `.d-{sm,md,lg,xl,xxl}-none` classes for any responsive screen variation.\n\nTo show an element only on a given interval of screen sizes you can combine one `.d-*-none` class with a `.d-*-*` class, for example `.d-none .d-md-block .d-xl-none` will hide the element for all screen sizes except on medium and large devices.\n\n\u003CBsTable>\n| Screen size | Class |\n| --- | --- |\n| Hidden on all | `.d-none` |\n| Hidden only on xs | `.d-none .d-sm-block` |\n| Hidden only on sm | `.d-sm-none .d-md-block` |\n| Hidden only on md | `.d-md-none .d-lg-block` |\n| Hidden only on lg | `.d-lg-none .d-xl-block` |\n| Hidden only on xl | `.d-xl-none .d-xxl-block` |\n| Hidden only on xxl | `.d-xxl-none` |\n| Visible on all | `.d-block` |\n| Visible only on xs | `.d-block .d-sm-none` |\n| Visible only on sm | `.d-none .d-sm-block .d-md-none` |\n| Visible only on md | `.d-none .d-md-block .d-lg-none` |\n| Visible only on lg | `.d-none .d-lg-block .d-xl-none` |\n| Visible only on xl | `.d-none .d-xl-block .d-xxl-none` |\n| Visible only on xxl | `.d-none .d-xxl-block` |\n\u003C/BsTable>\n\n\u003CExample code={`\u003Cdiv class=\"d-lg-none\">hide on lg and wider screens\u003C/div>\n\u003Cdiv class=\"d-none d-lg-block\">hide on screens smaller than lg\u003C/div>`} />\n\n## Display in print\n\nChange the `display` value of elements when printing with our print display utility classes. Includes support for the same `display` values as our responsive `.d-*` utilities.\n\n- `.d-print-none`\n- `.d-print-inline`\n- `.d-print-inline-block`\n- `.d-print-block`\n- `.d-print-grid`\n- `.d-print-inline-grid`\n- `.d-print-table`\n- `.d-print-table-row`\n- `.d-print-table-cell`\n- `.d-print-flex`\n- `.d-print-inline-flex`\n\nThe print and display classes can be combined.\n\n\u003CExample code={`\u003Cdiv class=\"d-print-none\">Screen Only (Hide on print only)\u003C/div>\n\u003Cdiv class=\"d-none d-print-block\">Print Only (Hide on screen only)\u003C/div>\n\u003Cdiv class=\"d-none d-lg-block d-print-block\">Hide up to large on screen, but always show on print\u003C/div>`} />\n\n## CSS\n\n### Sass utilities API\n\nDisplay utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-display\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/display.mdx","fee3f24f8630d81b","utilities/display.mdx","utilities/flex",{"id":1047,"data":1049,"body":1052,"filePath":1053,"digest":1054,"legacyId":1055,"deferredRender":139},{"description":1050,"title":1051,"toc":139},"Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary.","Flex","import { getData } from '@libs/data'\nimport { getSequence } from '@libs/utils'\n\n## Enable flex behaviors\n\nApply `display` utilities to create a flexbox container and transform **direct children elements** into flex items. Flex containers and items are able to be modified further with additional flex properties.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex p-2\">I'm a flexbox container!\u003C/div>`} />\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-inline-flex p-2\">I'm an inline flexbox container!\u003C/div>`} />\n\nResponsive variations also exist for `.d-flex` and `.d-inline-flex`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.d{breakpoint.abbr}-flex\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.d{breakpoint.abbr}-inline-flex\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Direction\n\nSet the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is `row`. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts).\n\nUse `.flex-row` to set a horizontal direction (the browser default), or `.flex-row-reverse` to start the horizontal direction from the opposite side.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex flex-row mb-3\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"d-flex flex-row-reverse\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n\u003C/div>`} />\n\nUse `.flex-column` to set a vertical direction, or `.flex-column-reverse` to start the vertical direction from the opposite side.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex flex-column mb-3\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n\u003C/div>\n\u003Cdiv class=\"d-flex flex-column-reverse\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n\u003C/div>`} />\n\nResponsive variations also exist for `flex-direction`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-row\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-row-reverse\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-column-reverse\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Justify content\n\nUse `justify-content` utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if `flex-direction: column`). Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `evenly`.\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex justify-content-start mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Start\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-end mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">End\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-center mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Center\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-between mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Between\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-around mb-3\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Around\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex justify-content-evenly\">\n \u003Cdiv class=\"p-2 bd-highlight\">Justify\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Content\u003C/div>\n \u003Cdiv class=\"p-2 bd-highlight\">Evenly\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex justify-content-start\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-end\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-center\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-between\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-around\">...\u003C/div>\n\u003Cdiv class=\"d-flex justify-content-evenly\">...\u003C/div>\n```\n\nResponsive variations also exist for `justify-content`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-center\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-between\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-around\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.justify-content{breakpoint.abbr}-evenly\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Align items\n\nUse `align-items` utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from `start`, `end`, `center`, `baseline`, or `stretch` (browser default).\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-items-start mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex align-items-end mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex align-items-center mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex align-items-baseline mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex align-items-stretch\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-items-start\">...\u003C/div>\n\u003Cdiv class=\"d-flex align-items-end\">...\u003C/div>\n\u003Cdiv class=\"d-flex align-items-center\">...\u003C/div>\n\u003Cdiv class=\"d-flex align-items-baseline\">...\u003C/div>\n\u003Cdiv class=\"d-flex align-items-stretch\">...\u003C/div>\n```\n\nResponsive variations also exist for `align-items`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-center\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-baseline\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-items{breakpoint.abbr}-stretch\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Align self\n\nUse `align-self` utilities on flexbox items to individually change their alignment on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from the same options as `align-items`: `start`, `end`, `center`, `baseline`, or `stretch` (browser default).\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-start p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-end p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-center p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex mb-3\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-baseline p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"d-flex\" style=\"height: 100px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"align-self-stretch p-2\">Aligned flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"align-self-start\">Aligned flex item\u003C/div>\n\u003Cdiv class=\"align-self-end\">Aligned flex item\u003C/div>\n\u003Cdiv class=\"align-self-center\">Aligned flex item\u003C/div>\n\u003Cdiv class=\"align-self-baseline\">Aligned flex item\u003C/div>\n\u003Cdiv class=\"align-self-stretch\">Aligned flex item\u003C/div>\n```\n\nResponsive variations also exist for `align-self`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-center\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-baseline\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-self{breakpoint.abbr}-stretch\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Fill\n\nUse the `.flex-fill` class on a series of sibling elements to force them into widths equal to their content (or equal widths if their content does not surpass their border-boxes) while taking up all available horizontal space.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"p-2 flex-fill\">Flex item with a lot of content\u003C/div>\n \u003Cdiv class=\"p-2 flex-fill\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2 flex-fill\">Flex item\u003C/div>\n\u003C/div>`} />\n\nResponsive variations also exist for `flex-fill`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-fill\u003C/code>\u003C/li>\n )\n})}\n\u003C/ul>\n\n## Grow and shrink\n\nUse `.flex-grow-*` utilities to toggle a flex item's ability to grow to fill available space. In the example below, the `.flex-grow-1` elements uses all available space it can, while allowing the remaining two flex items their necessary space.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"p-2 flex-grow-1\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Third flex item\u003C/div>\n\u003C/div>`} />\n\nUse `.flex-shrink-*` utilities to toggle a flex item's ability to shrink if necessary. In the example below, the second flex item with `.flex-shrink-1` is forced to wrap its contents to a new line, \"shrinking\" to allow more space for the previous flex item with `.w-100`.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"p-2 w-100\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2 flex-shrink-1\">Flex item\u003C/div>\n\u003C/div>`} />\n\nResponsive variations also exist for `flex-grow` and `flex-shrink`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-{'{'}grow|shrink{'}'}-0\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-{'{'}grow|shrink{'}'}-1\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Auto margins\n\nFlexbox can do some pretty awesome things when you mix flex alignments with auto margins. Shown below are three examples of controlling flex items via auto margins: default (no auto margin), pushing two items to the right (`.me-auto`), and pushing two items to the left (`.ms-auto`).\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex mb-3\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"d-flex mb-3\">\n \u003Cdiv class=\"me-auto p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"d-flex mb-3\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"ms-auto p-2\">Flex item\u003C/div>\n\u003C/div>`} />\n\n### With align-items\n\nVertically move one flex item to the top or bottom of a container by mixing `align-items`, `flex-direction: column`, and `margin-top: auto` or `margin-bottom: auto`.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex align-items-start flex-column mb-3\" style=\"height: 200px;\">\n \u003Cdiv class=\"mb-auto p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n\u003C/div>\n\n\u003Cdiv class=\"d-flex align-items-end flex-column mb-3\" style=\"height: 200px;\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"mt-auto p-2\">Flex item\u003C/div>\n\u003C/div>`} />\n\n## Wrap\n\nChange how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with `.flex-nowrap`, wrapping with `.flex-wrap`, or reverse wrapping with `.flex-wrap-reverse`.\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex flex-nowrap\" style=\"width: 8rem;\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex flex-nowrap\">\n ...\n\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex flex-wrap\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 4\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 5\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 6\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 7\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 8\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 9\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 10\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 11\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 12\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 13\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 14\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex flex-wrap\">\n ...\n\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex flex-wrap-reverse\">\n \u003Cdiv class=\"p-2\">Flex item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 4\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 5\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 6\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 7\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 8\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 9\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 10\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 11\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 12\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 13\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item 14\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex flex-wrap-reverse\">\n ...\n\u003C/div>\n```\n\n\nResponsive variations also exist for `flex-wrap`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-nowrap\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-wrap\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.flex{breakpoint.abbr}-wrap-reverse\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Order\n\nChange the _visual_ order of specific flex items with a handful of `order` utilities. We only provide options for making an item first or last, as well as a reset to use the DOM order. As `order` takes any integer value from 0 to 5, add custom CSS for any additional values needed.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"d-flex flex-nowrap\">\n \u003Cdiv class=\"order-3 p-2\">First flex item\u003C/div>\n \u003Cdiv class=\"order-2 p-2\">Second flex item\u003C/div>\n \u003Cdiv class=\"order-1 p-2\">Third flex item\u003C/div>\n\u003C/div>`} />\n\nResponsive variations also exist for `order`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => getSequence(0, 5).map((value) => {\n return (\n \u003Cli>\u003Ccode>.order{breakpoint.abbr}-{value}\u003C/code>\u003C/li>\n )\n}))}\n\u003C/ul>\n\nAdditionally there are also responsive `.order-first` and `.order-last` classes that change the `order` of an element by applying `order: -1` and `order: 6`, respectively.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => ['first', 'last'].map((value) => {\n return (\n \u003Cli>\u003Ccode>.order{breakpoint.abbr}-{value}\u003C/code>\u003C/li>\n )\n}))}\n\u003C/ul>\n\n## Align content\n\nUse `align-content` utilities on flexbox containers to align flex items _together_ on the cross axis. Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `stretch`. To demonstrate these utilities, we've enforced `flex-wrap: wrap` and increased the number of flex items.\n\n**Heads up!** This property has no effect on single rows of flex items.\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-start flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-start flex-wrap\">\n ...\n\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-end flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-end flex-wrap\">...\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-center flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-center flex-wrap\">...\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-between flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-between flex-wrap\">...\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-around flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-around flex-wrap\">...\u003C/div>\n```\n\n\u003Cdiv class=\"bd-example bd-example-flex\">\n \u003Cdiv class=\"d-flex align-content-stretch flex-wrap mb-3\" style=\"height: 200px\">\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003Cdiv class=\"p-2\">Flex item\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"d-flex align-content-stretch flex-wrap\">...\u003C/div>\n```\n\nResponsive variations also exist for `align-content`.\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-center\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-between\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-around\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.align-content{breakpoint.abbr}-stretch\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## Media object\n\nLooking to replicate the [media object component](https://getbootstrap.com/docs/4.6/components/media-object/) from Bootstrap 4? Recreate it in no time with a few flex utilities that allow even more flexibility and customization than before.\n\n\u003CExample code={`\u003Cdiv class=\"d-flex\">\n \u003Cdiv class=\"flex-shrink-0\">\n \u003CPlaceholder width=\"100\" height=\"100\" color=\"#999\" background=\"#e5e5e5\" text=\"Image\" />\n \u003C/div>\n \u003Cdiv class=\"flex-grow-1 ms-3\">\n This is some content from a media component. You can replace this with any content and adjust it as needed.\n \u003C/div>\n\u003C/div>`} />\n\nAnd say you want to vertically center the content next to the image:\n\n\u003CExample code={`\u003Cdiv class=\"d-flex align-items-center\">\n \u003Cdiv class=\"flex-shrink-0\">\n \u003CPlaceholder width=\"100\" height=\"100\" color=\"#999\" background=\"#e5e5e5\" text=\"Image\" />\n \u003C/div>\n \u003Cdiv class=\"flex-grow-1 ms-3\">\n This is some content from a media component. You can replace this with any content and adjust it as needed.\n \u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Sass utilities API\n\nFlexbox utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-flex\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/flex.mdx","3f04645655fa6837","utilities/flex.mdx","utilities/float",{"id":1056,"data":1058,"body":1061,"filePath":1062,"digest":1063,"legacyId":1064,"deferredRender":139},{"description":1059,"title":1060,"toc":139},"Toggle floats on any element, across any breakpoint, using our responsive float utilities.","Float","import { getData } from '@libs/data'\n\n## Overview\n\nThese utility classes float an element to the left or right, or disable floating, based on the current viewport size using the [CSS `float` property](https://developer.mozilla.org/en-US/docs/Web/CSS/float). `!important` is included to avoid specificity issues. These use the same viewport breakpoints as our grid system. Please be aware float utilities have no effect on flex items.\n\n\u003CExample code={`\u003Cdiv class=\"float-start\">Float start on all viewport sizes\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-end\">Float end on all viewport sizes\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-none\">Don't float on all viewport sizes\u003C/div>`} />\n\nUse the [clearfix helper]([[docsref:/helpers/clearfix]]) on a parent element to clear floats.\n\n## Responsive\n\nResponsive variations also exist for each `float` value.\n\n\u003CExample code={`\u003Cdiv class=\"float-sm-end\">Float end on viewports sized SM (small) or wider\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-md-end\">Float end on viewports sized MD (medium) or wider\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-lg-end\">Float end on viewports sized LG (large) or wider\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-xl-end\">Float end on viewports sized XL (extra large) or wider\u003C/div>\u003Cbr>\n\u003Cdiv class=\"float-xxl-end\">Float end on viewports sized XXL (extra extra large) or wider\u003C/div>\u003Cbr>`} />\n\nHere are all the support classes:\n\n\u003Cul>\n{getData('breakpoints').map((breakpoint) => {\n return (\n \u003CFragment>\n \u003Cli>\u003Ccode>.float{breakpoint.abbr}-start\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.float{breakpoint.abbr}-end\u003C/code>\u003C/li>\n \u003Cli>\u003Ccode>.float{breakpoint.abbr}-none\u003C/code>\u003C/li>\n \u003C/Fragment>\n )\n})}\n\u003C/ul>\n\n## CSS\n\n### Sass utilities API\n\nFloat utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-float\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/float.mdx","7bfe246a5a884b8a","utilities/float.mdx","utilities/interactions",{"id":1065,"data":1067,"body":1070,"filePath":1071,"digest":1072,"legacyId":1073,"deferredRender":139},{"description":1068,"title":1069,"toc":325},"Utility classes that change how users interact with contents of a website.","Interactions","## Text selection\n\nChange the way in which the content is selected when the user interacts with it.\n\n\u003CExample code={`\u003Cp class=\"user-select-all\">This paragraph will be entirely selected when clicked by the user.\u003C/p>\n\u003Cp class=\"user-select-auto\">This paragraph has default select behavior.\u003C/p>\n\u003Cp class=\"user-select-none\">This paragraph will not be selectable when clicked by the user.\u003C/p>`} />\n\n## Pointer events\n\nBootstrap provides `.pe-none` and `.pe-auto` classes to prevent or add element interactions.\n\n\u003CExample code={`\u003Cp>\u003Ca href=\"#\" class=\"pe-none\" tabindex=\"-1\" aria-disabled=\"true\">This link\u003C/a> can not be clicked.\u003C/p>\n\u003Cp>\u003Ca href=\"#\" class=\"pe-auto\">This link\u003C/a> can be clicked (this is default behavior).\u003C/p>\n\u003Cp class=\"pe-none\">\u003Ca href=\"#\" tabindex=\"-1\" aria-disabled=\"true\">This link\u003C/a> can not be clicked because the \u003Ccode>pointer-events\u003C/code> property is inherited from its parent. However, \u003Ca href=\"#\" class=\"pe-auto\">this link\u003C/a> has a \u003Ccode>pe-auto\u003C/code> class and can be clicked.\u003C/p>`} />\n\nThe `.pe-none` class (and the `pointer-events` CSS property it sets) only prevents interactions with a pointer (mouse, stylus, touch). Links and controls with `.pe-none` are, by default, still focusable and actionable for keyboard users. To ensure that they are completely neutralized even for keyboard users, you may need to add further attributes such as `tabindex=\"-1\"` (to prevent them from receiving keyboard focus) and `aria-disabled=\"true\"` (to convey the fact they are effectively disabled to assistive technologies), and possibly use JavaScript to completely prevent them from being actionable.\n\nIf possible, the simpler solution is:\n\n- For form controls, add the `disabled` HTML attribute.\n- For links, remove the `href` attribute, making it a non-interactive anchor or placeholder link.\n\n## CSS\n\n### Sass utilities API\n\nInteraction utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-interaction\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/interactions.mdx","ce4a42c6b30c0afc","utilities/interactions.mdx","utilities/link",{"id":1074,"data":1076,"body":1080,"filePath":1081,"digest":1082,"legacyId":1083,"deferredRender":139},{"added":1077,"description":1078,"title":1079,"toc":139},{"version":252},"Link utilities are used to stylize your anchors to adjust their color, opacity, underline offset, underline color, and more.","Link","import { getData } from '@libs/data'\n\n## Link opacity\n\nChange the alpha opacity of the link `rgba()` color value with utilities. Please be aware that changes to a color's opacity can lead to links with [*insufficient* contrast]([[docsref:getting-started/accessibility/#color-contrast]]).\n\n\u003CExample code={`\u003Cp>\u003Ca class=\"link-opacity-10\" href=\"#\">Link opacity 10\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-25\" href=\"#\">Link opacity 25\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-50\" href=\"#\">Link opacity 50\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-75\" href=\"#\">Link opacity 75\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-100\" href=\"#\">Link opacity 100\u003C/a>\u003C/p>`} />\n\nYou can even change the opacity level on hover.\n\n\u003CExample code={`\u003Cp>\u003Ca class=\"link-opacity-10-hover\" href=\"#\">Link hover opacity 10\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-25-hover\" href=\"#\">Link hover opacity 25\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-50-hover\" href=\"#\">Link hover opacity 50\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-75-hover\" href=\"#\">Link hover opacity 75\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-opacity-100-hover\" href=\"#\">Link hover opacity 100\u003C/a>\u003C/p>`} />\n\n## Link underlines\n\n### Underline color\n\nChange the underline's color independent of the link text color.\n\n\u003CExample code={getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"link-underline-${themeColor.name}\">${themeColor.title} underline\u003C/a>\u003C/p>`)} />\n\n### Underline offset\n\nChange the underline's distance from your text. Offset is set in `em` units to automatically scale with the element's current `font-size`.\n\n\u003CExample code={`\u003Cp>\u003Ca href=\"#\">Default link\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-1\" href=\"#\">Offset 1 link\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2\" href=\"#\">Offset 2 link\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-3\" href=\"#\">Offset 3 link\u003C/a>\u003C/p>`} />\n\n### Underline opacity\n\nChange the underline's opacity. Requires adding `.link-underline` to first set an `rgba()` color we use to then modify the alpha opacity.\n\n\u003CExample code={`\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-0\" href=\"#\">Underline opacity 0\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-10\" href=\"#\">Underline opacity 10\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-25\" href=\"#\">Underline opacity 25\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-50\" href=\"#\">Underline opacity 50\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-75\" href=\"#\">Underline opacity 75\u003C/a>\u003C/p>\n\u003Cp>\u003Ca class=\"link-offset-2 link-underline link-underline-opacity-100\" href=\"#\">Underline opacity 100\u003C/a>\u003C/p>`} />\n\n### Hover variants\n\nJust like the `.link-opacity-*-hover` utilities, `.link-offset` and `.link-underline-opacity` utilities include `:hover` variants by default. Mix and match to create unique link styles.\n\n\u003Ca class=\"link-offset-2 link-offset-3-hover link-underline link-underline-opacity-0 link-underline-opacity-75-hover\" href=\"#\">\n Underline opacity 0\n\u003C/a>\n\n## Colored links\n\n[Colored link helpers]([[docsref:/helpers/colored-links/]]) have been updated to pair with our link utilities. Use the new utilities to modify the link opacity, underline opacity, and underline offset.\n\n\u003CExample code={[\n ...getData('theme-colors').map((themeColor) => `\u003Cp>\u003Ca href=\"#\" class=\"link-${themeColor.name} link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover\">${themeColor.title} link\u003C/a>\u003C/p>`),\n `\u003Cp>\u003Ca href=\"#\" class=\"link-body-emphasis link-offset-2 link-underline-opacity-25 link-underline-opacity-75-hover\">Emphasis link\u003C/a>\u003C/p>`\n]} />\n\n\u003CCallout name=\"warning-color-assistive-technologies\" />\n\n## CSS\n\nIn addition to the following Sass functionality, consider reading about our included [CSS custom properties]([[docsref:/customize/css-variables]]) (aka CSS variables) for colors and more.\n\n### Sass utilities API\n\nLink utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-links\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/link.mdx","58135df20523383b","utilities/link.mdx","utilities/object-fit",{"id":1084,"data":1086,"body":1090,"filePath":1091,"digest":1092,"legacyId":1093,"deferredRender":139},{"added":1087,"description":1088,"title":1089,"toc":139},{"version":252},"Use the object fit utilities to modify how the content of a [replaced element](https://developer.mozilla.org/en-US/docs/Web/CSS/Replaced_element), such as an `\u003Cimg>` or `\u003Cvideo>`, should be resized to fit its container.","Object fit","## How it works\n\nChange the value of the [`object-fit` property](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) with our responsive `object-fit` utility classes. This property tells the content to fill the parent container in a variety of ways, such as preserving the aspect ratio or stretching to take up as much space as possible.\n\nClasses for the value of `object-fit` are named using the format `.object-fit-{value}`. Choose from the following values:\n\n- `contain`\n- `cover`\n- `fill`\n- `scale` (for scale-down)\n- `none`\n\n## Examples\n\nAdd the `object-fit-{value}` class to the [replaced element](https://developer.mozilla.org/en-US/docs/Web/CSS/Replaced_element):\n\n\u003CExample class=\"d-flex overflow-auto\" code={`\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-contain border rounded\" text=\"Object fit contain\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-cover border rounded\" text=\"Object fit cover\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-fill border rounded\" text=\"Object fit fill\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-scale border rounded\" text=\"Object fit scale down\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"120\" class=\"object-fit-none border rounded\" text=\"Object fit none\" markup=\"img\" />`} />\n\n## Responsive\n\nResponsive variations also exist for each `object-fit` value using the format `.object-fit-{breakpoint}-{value}`, for the following breakpoint abbreviations: `sm`, `md`, `lg`, `xl`, and `xxl`. Classes can be combined for various effects as you need.\n\n\u003CExample class=\"d-flex overflow-auto\" code={`\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-sm-contain border rounded\" text=\"Contain on sm\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-md-contain border rounded\" text=\"Contain on md\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-lg-contain border rounded\" text=\"Contain on lg\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-xl-contain border rounded\" text=\"Contain on xl\" markup=\"img\" />\n\u003CPlaceholder width=\"140\" height=\"80\" class=\"object-fit-xxl-contain border rounded\" text=\"Contain on xxl\" markup=\"img\" />`} />\n\n## Video\n\nThe `.object-fit-{value}` and responsive `.object-fit-{breakpoint}-{value}` utilities also work on `\u003Cvideo>` elements.\n\n```html\n\u003Cvideo src=\"...\" class=\"object-fit-contain\" autoplay>\u003C/video>\n\u003Cvideo src=\"...\" class=\"object-fit-cover\" autoplay>\u003C/video>\n\u003Cvideo src=\"...\" class=\"object-fit-fill\" autoplay>\u003C/video>\n\u003Cvideo src=\"...\" class=\"object-fit-scale\" autoplay>\u003C/video>\n\u003Cvideo src=\"...\" class=\"object-fit-none\" autoplay>\u003C/video>\n```\n\n## CSS\n\n### Sass utilities API\n\nObject fit utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-object-fit\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/object-fit.mdx","03cf222ad6c3af13","utilities/object-fit.mdx","utilities/opacity",{"id":1094,"data":1096,"body":1100,"filePath":1101,"digest":1102,"legacyId":1103,"deferredRender":139},{"added":1097,"description":1098,"title":1099},{"version":499},"Control the opacity of elements.","Opacity","The `opacity` property sets the opacity level for an element. The opacity level describes the transparency level, where `1` is not transparent at all, `.5` is 50% visible, and `0` is completely transparent.\n\nSet the `opacity` of an element using `.opacity-{value}` utilities.\n\n\u003Cdiv class=\"bd-example d-sm-flex\">\n \u003Cdiv class=\"opacity-100 p-3 m-2 bg-primary text-light fw-bold rounded\">100%\u003C/div>\n \u003Cdiv class=\"opacity-75 p-3 m-2 bg-primary text-light fw-bold rounded\">75%\u003C/div>\n \u003Cdiv class=\"opacity-50 p-3 m-2 bg-primary text-light fw-bold rounded\">50%\u003C/div>\n \u003Cdiv class=\"opacity-25 p-3 m-2 bg-primary text-light fw-bold rounded\">25%\u003C/div>\n \u003Cdiv class=\"opacity-0 p-3 m-2 bg-primary text-light fw-bold rounded\">0%\u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"opacity-100\">...\u003C/div>\n\u003Cdiv class=\"opacity-75\">...\u003C/div>\n\u003Cdiv class=\"opacity-50\">...\u003C/div>\n\u003Cdiv class=\"opacity-25\">...\u003C/div>\n\u003Cdiv class=\"opacity-0\">...\u003C/div>\n```\n\n## CSS\n\n### Sass utilities API\n\nOpacity utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-opacity\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/opacity.mdx","f51d418be7cb3930","utilities/opacity.mdx","utilities/overflow",{"id":1104,"data":1106,"body":1109,"filePath":1110,"digest":1111,"legacyId":1112,"deferredRender":139},{"description":1107,"title":1108,"toc":139},"Use these shorthand utilities for quickly configuring how content overflows an element.","Overflow","## Overflow\n\nAdjust the `overflow` property on the fly with four default values and classes. These classes are not responsive by default.\n\n\u003Cdiv class=\"bd-example d-md-flex\">\n \u003Cdiv class=\"overflow-auto p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary\" style=\"max-width: 260px; max-height: 100px;\">\n This is an example of using \u003Ccode>.overflow-auto\u003C/code> on an element with set width and height dimensions. By design, this content will vertically scroll.\n \u003C/div>\n \u003Cdiv class=\"overflow-hidden p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary\" style=\"max-width: 260px; max-height: 100px;\">\n This is an example of using \u003Ccode>.overflow-hidden\u003C/code> on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-visible p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary\" style=\"max-width: 260px; max-height: 100px;\">\n This is an example of using \u003Ccode>.overflow-visible\u003C/code> on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-scroll p-3 bg-body-tertiary\" style=\"max-width: 260px; max-height: 100px;\">\n This is an example of using \u003Ccode>.overflow-scroll\u003C/code> on an element with set width and height dimensions.\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"overflow-auto\">...\u003C/div>\n\u003Cdiv class=\"overflow-hidden\">...\u003C/div>\n\u003Cdiv class=\"overflow-visible\">...\u003C/div>\n\u003Cdiv class=\"overflow-scroll\">...\u003C/div>\n```\n\n### `overflow-x`\n\nAdjust the `overflow-x` property to affect the overflow of content horizontally.\n\n\u003Cdiv class=\"bd-example d-md-flex\">\n \u003Cdiv class=\"overflow-x-auto p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px; white-space: nowrap;\">\n \u003Cdiv>\u003Ccode>.overflow-x-auto\u003C/code> example on an element\u003C/div>\n \u003Cdiv> with set width and height dimensions.\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"overflow-x-hidden p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;white-space: nowrap;\">\n \u003Cdiv>\u003Ccode>.overflow-x-hidden\u003C/code> example\u003C/div>\n \u003Cdiv>on an element with set width and height dimensions.\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"overflow-x-visible p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;white-space: nowrap;\">\n \u003Cdiv>\u003Ccode>.overflow-x-visible\u003C/code> example \u003C/div>\n \u003Cdiv>on an element with set width and height dimensions.\u003C/div>\n \u003C/div>\n \u003Cdiv class=\"overflow-x-scroll p-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;white-space: nowrap;\">\n \u003Cdiv>\u003Ccode>.overflow-x-scroll\u003C/code> example on an element\u003C/div>\n \u003Cdiv> with set width and height dimensions.\u003C/div>\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"overflow-x-auto\">...\u003C/div>\n\u003Cdiv class=\"overflow-x-hidden\">...\u003C/div>\n\u003Cdiv class=\"overflow-x-visible\">...\u003C/div>\n\u003Cdiv class=\"overflow-x-scroll\">...\u003C/div>\n```\n\n### `overflow-y`\n\nAdjust the `overflow-y` property to affect the overflow of content vertically.\n\n\u003Cdiv class=\"bd-example d-md-flex\">\n \u003Cdiv class=\"overflow-y-auto p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;\">\n \u003Ccode>.overflow-y-auto\u003C/code> example on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-y-hidden p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;\">\n \u003Ccode>.overflow-y-hidden\u003C/code> example on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-y-visible p-3 mb-3 mb-md-0 me-md-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;\">\n \u003Ccode>.overflow-y-visible\u003C/code> example on an element with set width and height dimensions.\n \u003C/div>\n \u003Cdiv class=\"overflow-y-scroll p-3 bg-body-tertiary w-100\" style=\"max-width: 200px; max-height: 100px;\">\n \u003Ccode>.overflow-y-scroll\u003C/code> example on an element with set width and height dimensions.\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"overflow-y-auto\">...\u003C/div>\n\u003Cdiv class=\"overflow-y-hidden\">...\u003C/div>\n\u003Cdiv class=\"overflow-y-visible\">...\u003C/div>\n\u003Cdiv class=\"overflow-y-scroll\">...\u003C/div>\n```\n\nUsing Sass variables, you may customize the overflow utilities by changing the `$overflows` variable in `_variables.scss`.\n\n## CSS\n\n### Sass utilities API\n\nOverflow utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-overflow\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/overflow.mdx","10e01357f66e8a1b","utilities/overflow.mdx","utilities/position",{"id":1113,"data":1115,"body":1117,"filePath":1118,"digest":1119,"legacyId":1120,"deferredRender":139},{"description":1116,"title":865,"toc":139},"Use these shorthand utilities for quickly configuring the position of an element.","## Position values\n\nQuick positioning classes are available, though they are not responsive.\n\n```html\n\u003Cdiv class=\"position-static\">...\u003C/div>\n\u003Cdiv class=\"position-relative\">...\u003C/div>\n\u003Cdiv class=\"position-absolute\">...\u003C/div>\n\u003Cdiv class=\"position-fixed\">...\u003C/div>\n\u003Cdiv class=\"position-sticky\">...\u003C/div>\n```\n\n## Arrange elements\n\nArrange elements easily with the edge positioning utilities. The format is `{property}-{position}`.\n\nWhere *property* is one of:\n\n- `top` - for the vertical `top` position\n- `start` - for the horizontal `left` position (in LTR)\n- `bottom` - for the vertical `bottom` position\n- `end` - for the horizontal `right` position (in LTR)\n\nWhere *position* is one of:\n\n- `0` - for `0` edge position\n- `50` - for `50%` edge position\n- `100` - for `100%` edge position\n\n(You can add more position values by adding entries to the `$position-values` Sass map variable.)\n\n\u003CExample class=\"bd-example-position-utils\" code={`\u003Cdiv class=\"position-relative\">\n \u003Cdiv class=\"position-absolute top-0 start-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 end-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-50\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-50 end-50\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 start-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 end-0\">\u003C/div>\n\u003C/div>`} />\n\n## Center elements\n\nIn addition, you can also center the elements with the transform utility class `.translate-middle`.\n\nThis class applies the transformations `translateX(-50%)` and `translateY(-50%)` to the element which, in combination with the edge positioning utilities, allows you to absolute center an element.\n\n\u003CExample class=\"bd-example-position-utils\" code={`\u003Cdiv class=\"position-relative\">\n \u003Cdiv class=\"position-absolute top-0 start-0 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 start-50 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 start-100 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-0 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-50 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-100 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-100 start-0 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-100 start-50 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-100 start-100 translate-middle\">\u003C/div>\n\u003C/div>`} />\n\nBy adding `.translate-middle-x` or `.translate-middle-y` classes, elements can be positioned only in horizontal or vertical direction.\n\n\u003CExample class=\"bd-example-position-utils\" code={`\u003Cdiv class=\"position-relative\">\n \u003Cdiv class=\"position-absolute top-0 start-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 start-50 translate-middle-x\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-0 end-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-0 translate-middle-y\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 start-50 translate-middle\">\u003C/div>\n \u003Cdiv class=\"position-absolute top-50 end-0 translate-middle-y\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 start-0\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 start-50 translate-middle-x\">\u003C/div>\n \u003Cdiv class=\"position-absolute bottom-0 end-0\">\u003C/div>\n\u003C/div>`} />\n\n## Examples\n\nHere are some real life examples of these classes:\n\n\u003CExample class=\"bd-example-position-examples d-flex justify-content-around align-items-center\" code={`\u003Cbutton type=\"button\" class=\"btn btn-primary position-relative\">\n Mails \u003Cspan class=\"position-absolute top-0 start-100 translate-middle badge rounded-pill text-bg-secondary\">+99 \u003Cspan class=\"visually-hidden\">unread messages\u003C/span>\u003C/span>\n\u003C/button>\n\n\u003Cdiv class=\"position-relative py-2 px-4 text-bg-secondary border border-secondary rounded-pill\">\n Marker \u003Csvg width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"position-absolute top-100 start-50 translate-middle mt-1\" fill=\"var(--bs-secondary)\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\u003Cpath d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\"/>\u003C/svg>\n\u003C/div>\n\n\u003Cbutton type=\"button\" class=\"btn btn-primary position-relative\">\n Alerts \u003Cspan class=\"position-absolute top-0 start-100 translate-middle badge border border-light rounded-circle bg-danger p-2\">\u003Cspan class=\"visually-hidden\">unread messages\u003C/span>\u003C/span>\n\u003C/button>`} />\n\nYou can use these classes with existing components to create new ones. Remember that you can extend its functionality by adding entries to the `$position-values` variable.\n\n\u003CExample class=\"bd-example-position-examples\" code={`\u003Cdiv class=\"position-relative m-4\">\n \u003Cdiv class=\"progress\" role=\"progressbar\" aria-label=\"Progress\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"height: 1px;\">\n \u003Cdiv class=\"progress-bar\" style=\"width: 50%\">\u003C/div>\n \u003C/div>\n \u003Cbutton type=\"button\" class=\"position-absolute top-0 start-0 translate-middle btn btn-sm btn-primary rounded-pill\" style=\"width: 2rem; height:2rem;\">1\u003C/button>\n \u003Cbutton type=\"button\" class=\"position-absolute top-0 start-50 translate-middle btn btn-sm btn-primary rounded-pill\" style=\"width: 2rem; height:2rem;\">2\u003C/button>\n \u003Cbutton type=\"button\" class=\"position-absolute top-0 start-100 translate-middle btn btn-sm btn-secondary rounded-pill\" style=\"width: 2rem; height:2rem;\">3\u003C/button>\n\u003C/div>`} />\n\n## CSS\n\n### Sass maps\n\nDefault position utility values are declared in a Sass map, then used to generate our utilities.\n\n\u003CScssDocs name=\"position-map\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nPosition utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-position\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/position.mdx","10a850bf1fa704cd","utilities/position.mdx","utilities/shadows",{"id":1121,"data":1123,"body":1126,"filePath":1127,"digest":1128,"legacyId":1129,"deferredRender":139},{"description":1124,"title":1125,"toc":139},"Add or remove shadows to elements with box-shadow utilities.","Shadows","## Examples\n\nWhile shadows on components are disabled by default in Bootstrap and can be enabled via `$enable-shadows`, you can also quickly add or remove a shadow with our `box-shadow` utility classes. Includes support for `.shadow-none` and three default sizes (which have associated variables to match).\n\n\u003CExample class=\"overflow-hidden\" code={`\u003Cdiv class=\"shadow-none p-3 mb-5 bg-body-tertiary rounded\">No shadow\u003C/div>\n\u003Cdiv class=\"shadow-sm p-3 mb-5 bg-body-tertiary rounded\">Small shadow\u003C/div>\n\u003Cdiv class=\"shadow p-3 mb-5 bg-body-tertiary rounded\">Regular shadow\u003C/div>\n\u003Cdiv class=\"shadow-lg p-3 mb-5 bg-body-tertiary rounded\">Larger shadow\u003C/div>`} />\n\n## CSS\n\n### Sass variables\n\n\u003CScssDocs name=\"box-shadow-variables\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nShadow utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-shadow\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/shadows.mdx","a080b6fd9dc8a40e","utilities/shadows.mdx","utilities/sizing",{"id":1130,"data":1132,"body":1135,"filePath":1136,"digest":1137,"legacyId":1138,"deferredRender":139},{"description":1133,"title":1134,"toc":139},"Easily make an element as wide or as tall with our width and height utilities.","Sizing","## Relative to the parent\n\nWidth and height utilities are generated from the utility API in `_utilities.scss`. Includes support for `25%`, `50%`, `75%`, `100%`, and `auto` by default. Modify those values as you need to generate different utilities here.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv class=\"w-25 p-3\">Width 25%\u003C/div>\n\u003Cdiv class=\"w-50 p-3\">Width 50%\u003C/div>\n\u003Cdiv class=\"w-75 p-3\">Width 75%\u003C/div>\n\u003Cdiv class=\"w-100 p-3\">Width 100%\u003C/div>\n\u003Cdiv class=\"w-auto p-3\">Width auto\u003C/div>`} />\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv style=\"height: 100px;\">\n \u003Cdiv class=\"h-25 d-inline-block\" style=\"width: 120px;\">Height 25%\u003C/div>\n \u003Cdiv class=\"h-50 d-inline-block\" style=\"width: 120px;\">Height 50%\u003C/div>\n \u003Cdiv class=\"h-75 d-inline-block\" style=\"width: 120px;\">Height 75%\u003C/div>\n \u003Cdiv class=\"h-100 d-inline-block\" style=\"width: 120px;\">Height 100%\u003C/div>\n \u003Cdiv class=\"h-auto d-inline-block\" style=\"width: 120px;\">Height auto\u003C/div>\n\u003C/div>`} />\n\nYou can also use `max-width: 100%;` and `max-height: 100%;` utilities as needed.\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv style=\"width: 50%; height: 100px;\">\n \u003Cdiv class=\"mw-100\" style=\"width: 200%;\">Max-width 100%\u003C/div>\n\u003C/div>`} />\n\n\u003CExample class=\"bd-example-flex\" code={`\u003Cdiv style=\"height: 100px;\">\n \u003Cdiv class=\"mh-100\" style=\"width: 100px; height: 200px;\">Max-height 100%\u003C/div>\n\u003C/div>`} />\n\n## Relative to the viewport\n\nYou can also use utilities to set the width and height relative to the viewport.\n\n```html\n\u003Cdiv class=\"min-vw-100\">Min-width 100vw\u003C/div>\n\u003Cdiv class=\"min-vh-100\">Min-height 100vh\u003C/div>\n\u003Cdiv class=\"vw-100\">Width 100vw\u003C/div>\n\u003Cdiv class=\"vh-100\">Height 100vh\u003C/div>\n```\n\n## CSS\n\n### Sass utilities API\n\nSizing utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-sizing\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/sizing.mdx","b8c5e585709241af","utilities/sizing.mdx","utilities/spacing",{"id":1139,"data":1141,"body":1144,"filePath":1145,"digest":1146,"legacyId":1147,"deferredRender":139},{"description":1142,"title":1143,"toc":139},"Bootstrap includes a wide range of shorthand responsive margin, padding, and gap utility classes to modify an element's appearance.","Spacing","## Margin and padding\n\nAssign responsive-friendly `margin` or `padding` values to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. Classes are built from a default Sass map ranging from `.25rem` to `3rem`.\n\n\u003CCallout>\n**Using the CSS Grid layout module?** Consider using [the gap utility](#gap) instead.\n\u003C/Callout>\n\n### Notation\n\nSpacing utilities that apply to all breakpoints, from `xs` to `xxl`, have no breakpoint abbreviation in them. This is because those classes are applied from `min-width: 0` and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.\n\nThe classes are named using the format `{property}{sides}-{size}` for `xs` and `{property}{sides}-{breakpoint}-{size}` for `sm`, `md`, `lg`, `xl`, and `xxl`.\n\nWhere *property* is one of:\n\n- `m` - for classes that set `margin`\n- `p` - for classes that set `padding`\n\nWhere *sides* is one of:\n\n- `t` - for classes that set `margin-top` or `padding-top`\n- `b` - for classes that set `margin-bottom` or `padding-bottom`\n- `s` - (start) for classes that set `margin-left` or `padding-left` in LTR, `margin-right` or `padding-right` in RTL\n- `e` - (end) for classes that set `margin-right` or `padding-right` in LTR, `margin-left` or `padding-left` in RTL\n- `x` - for classes that set both `*-left` and `*-right`\n- `y` - for classes that set both `*-top` and `*-bottom`\n- blank - for classes that set a `margin` or `padding` on all 4 sides of the element\n\nWhere *size* is one of:\n\n- `0` - for classes that eliminate the `margin` or `padding` by setting it to `0`\n- `1` - (by default) for classes that set the `margin` or `padding` to `$spacer * .25`\n- `2` - (by default) for classes that set the `margin` or `padding` to `$spacer * .5`\n- `3` - (by default) for classes that set the `margin` or `padding` to `$spacer`\n- `4` - (by default) for classes that set the `margin` or `padding` to `$spacer * 1.5`\n- `5` - (by default) for classes that set the `margin` or `padding` to `$spacer * 3`\n- `auto` - for classes that set the `margin` to auto\n\n(You can add more sizes by adding entries to the `$spacers` Sass map variable.)\n\n### Examples\n\nHere are some representative examples of these classes:\n\n```scss\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.ms-1 {\n margin-left: ($spacer * .25) !important;\n}\n\n.px-2 {\n padding-left: ($spacer * .5) !important;\n padding-right: ($spacer * .5) !important;\n}\n\n.p-3 {\n padding: $spacer !important;\n}\n```\n\n### Horizontal centering\n\nAdditionally, Bootstrap also includes an `.mx-auto` class for horizontally centering fixed-width block level content—that is, content that has `display: block` and a `width` set—by setting the horizontal margins to `auto`.\n\n\u003Cdiv class=\"bd-example\">\n \u003Cdiv class=\"mx-auto p-2\" style=\"width: 200px; background-color: rgba(var(--bd-violet-rgb),.15); border: rgba(var(--bd-violet-rgb),.3) solid 1px;\">\n Centered element\n \u003C/div>\n\u003C/div>\n\n```html\n\u003Cdiv class=\"mx-auto p-2\" style=\"width: 200px;\">\n Centered element\n\u003C/div>\n```\n\n## Negative margin\n\nIn CSS, `margin` properties can utilize negative values (`padding` cannot). These negative margins are **disabled by default**, but can be enabled in Sass by setting `$enable-negative-margins: true`.\n\nThe syntax is nearly the same as the default, positive margin utilities, but with the addition of `n` before the requested size. Here's an example class that's the opposite of `.mt-1`:\n\n```scss\n.mt-n1 {\n margin-top: -0.25rem !important;\n}\n```\n\n## Gap\n\nWhen using `display: grid` or `display: flex`, you can make use of `gap` utilities on the parent element. This can save on having to add margin utilities to individual children of a grid or flex container. Gap utilities are responsive by default, and are generated via our utilities API, based on the `$spacers` Sass map.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv style=\"grid-template-columns: 1fr 1fr;\" class=\"d-grid gap-3\">\n \u003Cdiv class=\"p-2\">Grid item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 4\u003C/div>\n\u003C/div>`} />\n\nSupport includes responsive options for all of Bootstrap's grid breakpoints, as well as six sizes from the `$spacers` map (`0`–`5`). There is no `.gap-auto` utility class as it's effectively the same as `.gap-0`.\n\n### row-gap\n\n`row-gap` sets the vertical space between children items in the specified container.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv style=\"grid-template-columns: 1fr 1fr;\" class=\"d-grid gap-0 row-gap-3\">\n \u003Cdiv class=\"p-2\">Grid item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 4\u003C/div>\n\u003C/div>`} />\n\n### column-gap\n\n`column-gap` sets the horizontal space between children items in the specified container.\n\n\u003CExample class=\"bd-example-cssgrid\" code={`\u003Cdiv style=\"grid-template-columns: 1fr 1fr;\" class=\"d-grid gap-0 column-gap-3\">\n \u003Cdiv class=\"p-2\">Grid item 1\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 2\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 3\u003C/div>\n \u003Cdiv class=\"p-2\">Grid item 4\u003C/div>\n\u003C/div>`} />\n\n## CSS\n\n### Sass maps\n\nSpacing utilities are declared via Sass map and then generated with our utilities API.\n\n\u003CScssDocs name=\"spacer-variables-maps\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nSpacing utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-spacing\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/spacing.mdx","f71c48846901084e","utilities/spacing.mdx","utilities/text",{"id":1148,"data":1150,"body":1153,"filePath":1154,"digest":1155,"legacyId":1156,"deferredRender":139},{"description":1151,"title":1152,"toc":139},"Documentation and examples for common text utilities to control alignment, wrapping, weight, and more.","Text","## Text alignment\n\nEasily realign text to components with text alignment classes. For start, end, and center alignment, responsive classes are available that use the same viewport width breakpoints as the grid system.\n\n\u003CExample code={`\u003Cp class=\"text-start\">Start aligned text on all viewport sizes.\u003C/p>\n\u003Cp class=\"text-center\">Center aligned text on all viewport sizes.\u003C/p>\n\u003Cp class=\"text-end\">End aligned text on all viewport sizes.\u003C/p>\n\n\u003Cp class=\"text-sm-end\">End aligned text on viewports sized SM (small) or wider.\u003C/p>\n\u003Cp class=\"text-md-end\">End aligned text on viewports sized MD (medium) or wider.\u003C/p>\n\u003Cp class=\"text-lg-end\">End aligned text on viewports sized LG (large) or wider.\u003C/p>\n\u003Cp class=\"text-xl-end\">End aligned text on viewports sized XL (extra large) or wider.\u003C/p>\n\u003Cp class=\"text-xxl-end\">End aligned text on viewports sized XXL (extra extra large) or wider.\u003C/p>`} />\n\n\u003CCallout>\nNote that we don't provide utility classes for justified text. While, aesthetically, justified text might look more appealing, it does make word-spacing more random and therefore harder to read.\n\u003C/Callout>\n\n## Text wrapping and overflow\n\nWrap text with a `.text-wrap` class.\n\n\u003CExample code={`\u003Cdiv class=\"badge text-bg-primary text-wrap\" style=\"width: 6rem;\">\n This text should wrap.\n\u003C/div>`} />\n\nPrevent text from wrapping with a `.text-nowrap` class.\n\n\u003CExample code={`\u003Cdiv class=\"text-nowrap bg-body-secondary border\" style=\"width: 8rem;\">\n This text should overflow the parent.\n\u003C/div>`} />\n\n## Word break\n\nPrevent long strings of text from breaking your components' layout by using `.text-break` to set `word-wrap: break-word` and `word-break: break-word`. We use `word-wrap` instead of the more common `overflow-wrap` for wider browser support, and add the deprecated `word-break: break-word` to avoid issues with flex containers.\n\n\u003CExample code={`\u003Cp class=\"text-break\">mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\u003C/p>`} />\n\n\u003CCallout type=\"warning\">\nNote that [breaking words isn't possible in Arabic](https://rtlstyling.com/posts/rtl-styling#3.-line-break), which is the most used RTL language. Therefore `.text-break` is removed from our RTL compiled CSS.\n\u003C/Callout>\n\n## Text transform\n\nTransform text in components with our text capitalization classes: `text-lowercase`, `text-uppercase` or `text-capitalize`.\n\n\u003CExample code={`\u003Cp class=\"text-lowercase\">Lowercased text.\u003C/p>\n\u003Cp class=\"text-uppercase\">Uppercased text.\u003C/p>\n\u003Cp class=\"text-capitalize\">CapiTaliZed text.\u003C/p>`} />\n\nNote how `.text-capitalize` only changes the first letter of each word, leaving the case of any other letters unaffected.\n\n## Font size\n\nQuickly change the `font-size` of text. While our heading classes (e.g., `.h1`–`.h6`) apply `font-size`, `font-weight`, and `line-height`, these utilities _only_ apply `font-size`. Sizing for these utilities matches HTML's heading elements, so as the number increases, their size decreases.\n\n\u003CExample code={`\u003Cp class=\"fs-1\">.fs-1 text\u003C/p>\n\u003Cp class=\"fs-2\">.fs-2 text\u003C/p>\n\u003Cp class=\"fs-3\">.fs-3 text\u003C/p>\n\u003Cp class=\"fs-4\">.fs-4 text\u003C/p>\n\u003Cp class=\"fs-5\">.fs-5 text\u003C/p>\n\u003Cp class=\"fs-6\">.fs-6 text\u003C/p>`} />\n\nCustomize your available `font-size`s by modifying the `$font-sizes` Sass map.\n\n## Font weight and italics\n\nQuickly change the `font-weight` or `font-style` of text with these utilities. `font-style` utilities are abbreviated as `.fst-*` and `font-weight` utilities are abbreviated as `.fw-*`.\n\n\u003CExample code={`\u003Cp class=\"fw-bold\">Bold text.\u003C/p>\n\u003Cp class=\"fw-bolder\">Bolder weight text (relative to the parent element).\u003C/p>\n\u003Cp class=\"fw-semibold\">Semibold weight text.\u003C/p>\n\u003Cp class=\"fw-medium\">Medium weight text.\u003C/p>\n\u003Cp class=\"fw-normal\">Normal weight text.\u003C/p>\n\u003Cp class=\"fw-light\">Light weight text.\u003C/p>\n\u003Cp class=\"fw-lighter\">Lighter weight text (relative to the parent element).\u003C/p>\n\u003Cp class=\"fst-italic\">Italic text.\u003C/p>\n\u003Cp class=\"fst-normal\">Text with normal font style\u003C/p>`} />\n\n## Line height\n\nChange the line height with `.lh-*` utilities.\n\n\u003CExample code={`\u003Cp class=\"lh-1\">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.\u003C/p>\n\u003Cp class=\"lh-sm\">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.\u003C/p>\n\u003Cp class=\"lh-base\">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.\u003C/p>\n\u003Cp class=\"lh-lg\">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.\u003C/p>`} />\n\n## Monospace\n\nChange a selection to our monospace font stack with `.font-monospace`.\n\n\u003CExample code={`\u003Cp class=\"font-monospace\">This is in monospace\u003C/p>`} />\n\n## Reset color\n\nReset a text or link's color with `.text-reset`, so that it inherits the color from its parent.\n\n\u003CExample code={`\u003Cp class=\"text-body-secondary\">\n Secondary body text with a \u003Ca href=\"#\" class=\"text-reset\">reset link\u003C/a>.\n\u003C/p>`} />\n\n## Text decoration\n\nDecorate text in components with text decoration classes.\n\n\u003CExample code={`\u003Cp class=\"text-decoration-underline\">This text has a line underneath it.\u003C/p>\n\u003Cp class=\"text-decoration-line-through\">This text has a line going through it.\u003C/p>\n\u003Ca href=\"#\" class=\"text-decoration-none\">This link has its text decoration removed\u003C/a>`} />\n\n## CSS\n\n### Sass variables\n\nDefault type and font related Sass variables:\n\n\u003CScssDocs name=\"font-variables\" file=\"scss/_variables.scss\" />\n\n### Sass maps\n\nFont-size utilities are generated from this map, in combination with our utilities API.\n\n\u003CScssDocs name=\"font-sizes\" file=\"scss/_variables.scss\" />\n\n\u003CScssDocs name=\"theme-text-map\" file=\"scss/_maps.scss\" />\n\n### Sass utilities API\n\nFont and text utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-text\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/text.mdx","b415bbe3adbc8908","utilities/text.mdx","utilities/vertical-align",{"id":1157,"data":1159,"body":1162,"filePath":1163,"digest":1164,"legacyId":1165,"deferredRender":139},{"description":1160,"title":1161},"Easily change the vertical alignment of inline, inline-block, inline-table, and table cell elements.","Vertical alignment","Change the alignment of elements with the [`vertical-alignment`](https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align) utilities. Please note that vertical-align only affects inline, inline-block, inline-table, and table cell elements.\n\nChoose from `.align-baseline`, `.align-top`, `.align-middle`, `.align-bottom`, `.align-text-bottom`, and `.align-text-top` as needed.\n\nTo vertically center non-inline content (like `\u003Cdiv>`s and more), use our [flex box utilities]([[docsref:/utilities/flex#align-items]]).\n\nWith inline elements:\n\n\u003CExample code={`\u003Cspan class=\"align-baseline\">baseline\u003C/span>\n\u003Cspan class=\"align-top\">top\u003C/span>\n\u003Cspan class=\"align-middle\">middle\u003C/span>\n\u003Cspan class=\"align-bottom\">bottom\u003C/span>\n\u003Cspan class=\"align-text-top\">text-top\u003C/span>\n\u003Cspan class=\"align-text-bottom\">text-bottom\u003C/span>`} />\n\nWith table cells:\n\n\u003CExample code={`\u003Ctable style=\"height: 100px;\">\n \u003Ctbody>\n \u003Ctr>\n \u003Ctd class=\"align-baseline\">baseline\u003C/td>\n \u003Ctd class=\"align-top\">top\u003C/td>\n \u003Ctd class=\"align-middle\">middle\u003C/td>\n \u003Ctd class=\"align-bottom\">bottom\u003C/td>\n \u003Ctd class=\"align-text-top\">text-top\u003C/td>\n \u003Ctd class=\"align-text-bottom\">text-bottom\u003C/td>\n \u003C/tr>\n \u003C/tbody>\n\u003C/table>`} />\n\n## CSS\n\n### Sass utilities API\n\nVertical align utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-vertical-align\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/vertical-align.mdx","9d6429b2397af545","utilities/vertical-align.mdx","utilities/visibility",{"id":1166,"data":1168,"body":1171,"filePath":1172,"digest":1173,"legacyId":1174,"deferredRender":139},{"description":1169,"title":1170},"Control the visibility of elements, without modifying their display, with visibility utilities.","Visibility","Set the `visibility` of elements with our visibility utilities. These utility classes do not modify the `display` value at all and do not affect layout – `.invisible` elements still take up space in the page.\n\n\u003CCallout type=\"warning\">\nElements with the `.invisible` class will be hidden *both* visually and for assistive technology/screen reader users.\n\u003C/Callout>\n\nApply `.visible` or `.invisible` as needed.\n\n```html\n\u003Cdiv class=\"visible\">...\u003C/div>\n\u003Cdiv class=\"invisible\">...\u003C/div>\n```\n\n```scss\n// Class\n.visible {\n visibility: visible !important;\n}\n.invisible {\n visibility: hidden !important;\n}\n```\n\n## CSS\n\n### Sass utilities API\n\nVisibility utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-visibility\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/visibility.mdx","9943b6d24f399f72","utilities/visibility.mdx","utilities/z-index",{"id":1175,"data":1177,"body":1180,"filePath":1181,"digest":1182,"legacyId":1183,"deferredRender":139},{"added":1178,"description":1179,"title":978,"toc":139},{"version":252},"Use our low-level `z-index` utilities to quickly change the stack level of an element or component.","## Example\n\nUse `z-index` utilities to stack elements on top of one another. Requires a `position` value other than `static`, which can be set with custom styles or using our [position utilities]([[docsref:/utilities/position/]]).\n\n\u003CCallout>\nWe call these \"low-level\" `z-index` utilities because of their default values of `-1` through `3`, which we use for the layout of overlapping components. High-level `z-index` values are used for overlay components like modals and tooltips.\n\u003C/Callout>\n\n\u003CExample class=\"bd-example-zindex-levels position-relative\" code={`\u003Cdiv class=\"z-3 position-absolute p-5 rounded-3\">\u003Cspan>z-3\u003C/span>\u003C/div>\n\u003Cdiv class=\"z-2 position-absolute p-5 rounded-3\">\u003Cspan>z-2\u003C/span>\u003C/div>\n\u003Cdiv class=\"z-1 position-absolute p-5 rounded-3\">\u003Cspan>z-1\u003C/span>\u003C/div>\n\u003Cdiv class=\"z-0 position-absolute p-5 rounded-3\">\u003Cspan>z-0\u003C/span>\u003C/div>\n\u003Cdiv class=\"z-n1 position-absolute p-5 rounded-3\">\u003Cspan>z-n1\u003C/span>\u003C/div>`} />\n\n## Overlays\n\nBootstrap overlay components—dropdown, modal, offcanvas, popover, toast, and tooltip—all have their own `z-index` values to ensure a usable experience with competing \"layers\" of an interface.\n\nRead about them in the [`z-index` layout page]([[docsref:/layout/z-index]]).\n\n## Component approach\n\nOn some components, we use our low-level `z-index` values to manage repeating elements that overlap one another (like buttons in a button group or items in a list group).\n\nLearn about our [`z-index` approach]([[docsref:/extend/approach#z-index-scales]]).\n\n## CSS\n\n### Sass maps\n\nCustomize this Sass map to change the available values and generated utilities.\n\n\u003CScssDocs name=\"zindex-levels-map\" file=\"scss/_variables.scss\" />\n\n### Sass utilities API\n\nPosition utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]([[docsref:/utilities/api#using-the-api]])\n\n\u003CScssDocs name=\"utils-zindex\" file=\"scss/_utilities.scss\" />","src/content/docs/utilities/z-index.mdx","74e2a5798d9fa8b6","utilities/z-index.mdx"] \ No newline at end of file diff --git a/site/node_modules/.vite/deps/_metadata.json b/site/node_modules/.vite/deps/_metadata.json deleted file mode 100644 index 12a8ec1944..0000000000 --- a/site/node_modules/.vite/deps/_metadata.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "hash": "8ad096d7", - "configHash": "f63c29ea", - "lockfileHash": "f53c70d5", - "browserHash": "cfd0bf3c", - "optimized": { - "astro > cssesc": { - "src": "../../../../node_modules/cssesc/cssesc.js", - "file": "astro___cssesc.js", - "fileHash": "a39050d8", - "needsInterop": true - }, - "astro > aria-query": { - "src": "../../../../node_modules/aria-query/lib/index.js", - "file": "astro___aria-query.js", - "fileHash": "3382f064", - "needsInterop": true - }, - "astro > axobject-query": { - "src": "../../../../node_modules/axobject-query/lib/index.js", - "file": "astro___axobject-query.js", - "fileHash": "1af8a952", - "needsInterop": true - } - }, - "chunks": { - "chunk-BUSYA2B4": { - "file": "chunk-BUSYA2B4.js" - } - } -} \ No newline at end of file diff --git a/site/node_modules/.vite/deps/astro___aria-query.js b/site/node_modules/.vite/deps/astro___aria-query.js deleted file mode 100644 index 1314200e97..0000000000 --- a/site/node_modules/.vite/deps/astro___aria-query.js +++ /dev/null @@ -1,6776 +0,0 @@ -import { - __commonJS -} from "./chunk-BUSYA2B4.js"; - -// node_modules/aria-query/lib/util/iteratorProxy.js -var require_iteratorProxy = __commonJS({ - "node_modules/aria-query/lib/util/iteratorProxy.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - function iteratorProxy() { - var values = this; - var index = 0; - var iter = { - "@@iterator": function iterator() { - return iter; - }, - next: function next() { - if (index < values.length) { - var value = values[index]; - index = index + 1; - return { - done: false, - value - }; - } else { - return { - done: true - }; - } - } - }; - return iter; - } - var _default = exports.default = iteratorProxy; - } -}); - -// node_modules/aria-query/lib/util/iterationDecorator.js -var require_iterationDecorator = __commonJS({ - "node_modules/aria-query/lib/util/iterationDecorator.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = iterationDecorator; - var _iteratorProxy = _interopRequireDefault(require_iteratorProxy()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - function _typeof(o) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { - return typeof o2; - } : function(o2) { - return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; - }, _typeof(o); - } - function iterationDecorator(collection, entries) { - if (typeof Symbol === "function" && _typeof(Symbol.iterator) === "symbol") { - Object.defineProperty(collection, Symbol.iterator, { - value: _iteratorProxy.default.bind(entries) - }); - } - return collection; - } - } -}); - -// node_modules/aria-query/lib/ariaPropsMap.js -var require_ariaPropsMap = __commonJS({ - "node_modules/aria-query/lib/ariaPropsMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - function _slicedToArray(r, e) { - return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _unsupportedIterableToArray(r, a) { - if (r) { - if ("string" == typeof r) return _arrayLikeToArray(r, a); - var t = {}.toString.call(r).slice(8, -1); - return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; - } - } - function _arrayLikeToArray(r, a) { - (null == a || a > r.length) && (a = r.length); - for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; - return n; - } - function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, n, i, u, a = [], f = true, o = false; - try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = false; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; - } catch (r2) { - o = true, n = r2; - } finally { - try { - if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; - } finally { - if (o) throw n; - } - } - return a; - } - } - function _arrayWithHoles(r) { - if (Array.isArray(r)) return r; - } - var properties = [["aria-activedescendant", { - "type": "id" - }], ["aria-atomic", { - "type": "boolean" - }], ["aria-autocomplete", { - "type": "token", - "values": ["inline", "list", "both", "none"] - }], ["aria-braillelabel", { - "type": "string" - }], ["aria-brailleroledescription", { - "type": "string" - }], ["aria-busy", { - "type": "boolean" - }], ["aria-checked", { - "type": "tristate" - }], ["aria-colcount", { - type: "integer" - }], ["aria-colindex", { - type: "integer" - }], ["aria-colspan", { - type: "integer" - }], ["aria-controls", { - "type": "idlist" - }], ["aria-current", { - type: "token", - values: ["page", "step", "location", "date", "time", true, false] - }], ["aria-describedby", { - "type": "idlist" - }], ["aria-description", { - "type": "string" - }], ["aria-details", { - "type": "id" - }], ["aria-disabled", { - "type": "boolean" - }], ["aria-dropeffect", { - "type": "tokenlist", - "values": ["copy", "execute", "link", "move", "none", "popup"] - }], ["aria-errormessage", { - "type": "id" - }], ["aria-expanded", { - "type": "boolean", - "allowundefined": true - }], ["aria-flowto", { - "type": "idlist" - }], ["aria-grabbed", { - "type": "boolean", - "allowundefined": true - }], ["aria-haspopup", { - "type": "token", - "values": [false, true, "menu", "listbox", "tree", "grid", "dialog"] - }], ["aria-hidden", { - "type": "boolean", - "allowundefined": true - }], ["aria-invalid", { - "type": "token", - "values": ["grammar", false, "spelling", true] - }], ["aria-keyshortcuts", { - type: "string" - }], ["aria-label", { - "type": "string" - }], ["aria-labelledby", { - "type": "idlist" - }], ["aria-level", { - "type": "integer" - }], ["aria-live", { - "type": "token", - "values": ["assertive", "off", "polite"] - }], ["aria-modal", { - type: "boolean" - }], ["aria-multiline", { - "type": "boolean" - }], ["aria-multiselectable", { - "type": "boolean" - }], ["aria-orientation", { - "type": "token", - "values": ["vertical", "undefined", "horizontal"] - }], ["aria-owns", { - "type": "idlist" - }], ["aria-placeholder", { - type: "string" - }], ["aria-posinset", { - "type": "integer" - }], ["aria-pressed", { - "type": "tristate" - }], ["aria-readonly", { - "type": "boolean" - }], ["aria-relevant", { - "type": "tokenlist", - "values": ["additions", "all", "removals", "text"] - }], ["aria-required", { - "type": "boolean" - }], ["aria-roledescription", { - type: "string" - }], ["aria-rowcount", { - type: "integer" - }], ["aria-rowindex", { - type: "integer" - }], ["aria-rowspan", { - type: "integer" - }], ["aria-selected", { - "type": "boolean", - "allowundefined": true - }], ["aria-setsize", { - "type": "integer" - }], ["aria-sort", { - "type": "token", - "values": ["ascending", "descending", "none", "other"] - }], ["aria-valuemax", { - "type": "number" - }], ["aria-valuemin", { - "type": "number" - }], ["aria-valuenow", { - "type": "number" - }], ["aria-valuetext", { - "type": "string" - }]]; - var ariaPropsMap = { - entries: function entries() { - return properties; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - for (var _i = 0, _properties = properties; _i < _properties.length; _i++) { - var _properties$_i = _slicedToArray(_properties[_i], 2), key = _properties$_i[0], values = _properties$_i[1]; - fn.call(thisArg, values, key, properties); - } - }, - get: function get(key) { - var item = properties.filter(function(tuple) { - return tuple[0] === key ? true : false; - })[0]; - return item && item[1]; - }, - has: function has(key) { - return !!ariaPropsMap.get(key); - }, - keys: function keys() { - return properties.map(function(_ref) { - var _ref2 = _slicedToArray(_ref, 1), key = _ref2[0]; - return key; - }); - }, - values: function values() { - return properties.map(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), values2 = _ref4[1]; - return values2; - }); - } - }; - var _default = exports.default = (0, _iterationDecorator.default)(ariaPropsMap, ariaPropsMap.entries()); - } -}); - -// node_modules/aria-query/lib/domMap.js -var require_domMap = __commonJS({ - "node_modules/aria-query/lib/domMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - function _slicedToArray(r, e) { - return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _unsupportedIterableToArray(r, a) { - if (r) { - if ("string" == typeof r) return _arrayLikeToArray(r, a); - var t = {}.toString.call(r).slice(8, -1); - return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; - } - } - function _arrayLikeToArray(r, a) { - (null == a || a > r.length) && (a = r.length); - for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; - return n; - } - function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, n, i, u, a = [], f = true, o = false; - try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = false; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; - } catch (r2) { - o = true, n = r2; - } finally { - try { - if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; - } finally { - if (o) throw n; - } - } - return a; - } - } - function _arrayWithHoles(r) { - if (Array.isArray(r)) return r; - } - var dom = [["a", { - reserved: false - }], ["abbr", { - reserved: false - }], ["acronym", { - reserved: false - }], ["address", { - reserved: false - }], ["applet", { - reserved: false - }], ["area", { - reserved: false - }], ["article", { - reserved: false - }], ["aside", { - reserved: false - }], ["audio", { - reserved: false - }], ["b", { - reserved: false - }], ["base", { - reserved: true - }], ["bdi", { - reserved: false - }], ["bdo", { - reserved: false - }], ["big", { - reserved: false - }], ["blink", { - reserved: false - }], ["blockquote", { - reserved: false - }], ["body", { - reserved: false - }], ["br", { - reserved: false - }], ["button", { - reserved: false - }], ["canvas", { - reserved: false - }], ["caption", { - reserved: false - }], ["center", { - reserved: false - }], ["cite", { - reserved: false - }], ["code", { - reserved: false - }], ["col", { - reserved: true - }], ["colgroup", { - reserved: true - }], ["content", { - reserved: false - }], ["data", { - reserved: false - }], ["datalist", { - reserved: false - }], ["dd", { - reserved: false - }], ["del", { - reserved: false - }], ["details", { - reserved: false - }], ["dfn", { - reserved: false - }], ["dialog", { - reserved: false - }], ["dir", { - reserved: false - }], ["div", { - reserved: false - }], ["dl", { - reserved: false - }], ["dt", { - reserved: false - }], ["em", { - reserved: false - }], ["embed", { - reserved: false - }], ["fieldset", { - reserved: false - }], ["figcaption", { - reserved: false - }], ["figure", { - reserved: false - }], ["font", { - reserved: false - }], ["footer", { - reserved: false - }], ["form", { - reserved: false - }], ["frame", { - reserved: false - }], ["frameset", { - reserved: false - }], ["h1", { - reserved: false - }], ["h2", { - reserved: false - }], ["h3", { - reserved: false - }], ["h4", { - reserved: false - }], ["h5", { - reserved: false - }], ["h6", { - reserved: false - }], ["head", { - reserved: true - }], ["header", { - reserved: false - }], ["hgroup", { - reserved: false - }], ["hr", { - reserved: false - }], ["html", { - reserved: true - }], ["i", { - reserved: false - }], ["iframe", { - reserved: false - }], ["img", { - reserved: false - }], ["input", { - reserved: false - }], ["ins", { - reserved: false - }], ["kbd", { - reserved: false - }], ["keygen", { - reserved: false - }], ["label", { - reserved: false - }], ["legend", { - reserved: false - }], ["li", { - reserved: false - }], ["link", { - reserved: true - }], ["main", { - reserved: false - }], ["map", { - reserved: false - }], ["mark", { - reserved: false - }], ["marquee", { - reserved: false - }], ["menu", { - reserved: false - }], ["menuitem", { - reserved: false - }], ["meta", { - reserved: true - }], ["meter", { - reserved: false - }], ["nav", { - reserved: false - }], ["noembed", { - reserved: true - }], ["noscript", { - reserved: true - }], ["object", { - reserved: false - }], ["ol", { - reserved: false - }], ["optgroup", { - reserved: false - }], ["option", { - reserved: false - }], ["output", { - reserved: false - }], ["p", { - reserved: false - }], ["param", { - reserved: true - }], ["picture", { - reserved: true - }], ["pre", { - reserved: false - }], ["progress", { - reserved: false - }], ["q", { - reserved: false - }], ["rp", { - reserved: false - }], ["rt", { - reserved: false - }], ["rtc", { - reserved: false - }], ["ruby", { - reserved: false - }], ["s", { - reserved: false - }], ["samp", { - reserved: false - }], ["script", { - reserved: true - }], ["section", { - reserved: false - }], ["select", { - reserved: false - }], ["small", { - reserved: false - }], ["source", { - reserved: true - }], ["spacer", { - reserved: false - }], ["span", { - reserved: false - }], ["strike", { - reserved: false - }], ["strong", { - reserved: false - }], ["style", { - reserved: true - }], ["sub", { - reserved: false - }], ["summary", { - reserved: false - }], ["sup", { - reserved: false - }], ["table", { - reserved: false - }], ["tbody", { - reserved: false - }], ["td", { - reserved: false - }], ["textarea", { - reserved: false - }], ["tfoot", { - reserved: false - }], ["th", { - reserved: false - }], ["thead", { - reserved: false - }], ["time", { - reserved: false - }], ["title", { - reserved: true - }], ["tr", { - reserved: false - }], ["track", { - reserved: true - }], ["tt", { - reserved: false - }], ["u", { - reserved: false - }], ["ul", { - reserved: false - }], ["var", { - reserved: false - }], ["video", { - reserved: false - }], ["wbr", { - reserved: false - }], ["xmp", { - reserved: false - }]]; - var domMap = { - entries: function entries() { - return dom; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - for (var _i = 0, _dom = dom; _i < _dom.length; _i++) { - var _dom$_i = _slicedToArray(_dom[_i], 2), key = _dom$_i[0], values = _dom$_i[1]; - fn.call(thisArg, values, key, dom); - } - }, - get: function get(key) { - var item = dom.filter(function(tuple) { - return tuple[0] === key ? true : false; - })[0]; - return item && item[1]; - }, - has: function has(key) { - return !!domMap.get(key); - }, - keys: function keys() { - return dom.map(function(_ref) { - var _ref2 = _slicedToArray(_ref, 1), key = _ref2[0]; - return key; - }); - }, - values: function values() { - return dom.map(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), values2 = _ref4[1]; - return values2; - }); - } - }; - var _default = exports.default = (0, _iterationDecorator.default)(domMap, domMap.entries()); - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/commandRole.js -var require_commandRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/commandRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var commandRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget"]] - }; - var _default = exports.default = commandRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/compositeRole.js -var require_compositeRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/compositeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var compositeRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-activedescendant": null, - "aria-disabled": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget"]] - }; - var _default = exports.default = compositeRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/inputRole.js -var require_inputRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/inputRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var inputRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null - }, - relatedConcepts: [{ - concept: { - name: "input" - }, - module: "XForms" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget"]] - }; - var _default = exports.default = inputRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/landmarkRole.js -var require_landmarkRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/landmarkRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var landmarkRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = landmarkRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/rangeRole.js -var require_rangeRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/rangeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var rangeRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-valuemax": null, - "aria-valuemin": null, - "aria-valuenow": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = rangeRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/roletypeRole.js -var require_roletypeRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/roletypeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var roletypeRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: [], - prohibitedProps: [], - props: { - "aria-atomic": null, - "aria-busy": null, - "aria-controls": null, - "aria-current": null, - "aria-describedby": null, - "aria-details": null, - "aria-dropeffect": null, - "aria-flowto": null, - "aria-grabbed": null, - "aria-hidden": null, - "aria-keyshortcuts": null, - "aria-label": null, - "aria-labelledby": null, - "aria-live": null, - "aria-owns": null, - "aria-relevant": null, - "aria-roledescription": null - }, - relatedConcepts: [{ - concept: { - name: "role" - }, - module: "XHTML" - }, { - concept: { - name: "type" - }, - module: "Dublin Core" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [] - }; - var _default = exports.default = roletypeRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/sectionRole.js -var require_sectionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/sectionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var sectionRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: [], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "frontmatter" - }, - module: "DTB" - }, { - concept: { - name: "level" - }, - module: "DTB" - }, { - concept: { - name: "level" - }, - module: "SMIL" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = sectionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/sectionheadRole.js -var require_sectionheadRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/sectionheadRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var sectionheadRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = sectionheadRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/selectRole.js -var require_selectRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/selectRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var selectRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-orientation": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "composite"], ["roletype", "structure", "section", "group"]] - }; - var _default = exports.default = selectRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/structureRole.js -var require_structureRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/structureRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var structureRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: [], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype"]] - }; - var _default = exports.default = structureRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/widgetRole.js -var require_widgetRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/widgetRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var widgetRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: [], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype"]] - }; - var _default = exports.default = widgetRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/abstract/windowRole.js -var require_windowRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/abstract/windowRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var windowRole = { - abstract: true, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-modal": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype"]] - }; - var _default = exports.default = windowRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/ariaAbstractRoles.js -var require_ariaAbstractRoles = __commonJS({ - "node_modules/aria-query/lib/etc/roles/ariaAbstractRoles.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _commandRole = _interopRequireDefault(require_commandRole()); - var _compositeRole = _interopRequireDefault(require_compositeRole()); - var _inputRole = _interopRequireDefault(require_inputRole()); - var _landmarkRole = _interopRequireDefault(require_landmarkRole()); - var _rangeRole = _interopRequireDefault(require_rangeRole()); - var _roletypeRole = _interopRequireDefault(require_roletypeRole()); - var _sectionRole = _interopRequireDefault(require_sectionRole()); - var _sectionheadRole = _interopRequireDefault(require_sectionheadRole()); - var _selectRole = _interopRequireDefault(require_selectRole()); - var _structureRole = _interopRequireDefault(require_structureRole()); - var _widgetRole = _interopRequireDefault(require_widgetRole()); - var _windowRole = _interopRequireDefault(require_windowRole()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - var ariaAbstractRoles = [["command", _commandRole.default], ["composite", _compositeRole.default], ["input", _inputRole.default], ["landmark", _landmarkRole.default], ["range", _rangeRole.default], ["roletype", _roletypeRole.default], ["section", _sectionRole.default], ["sectionhead", _sectionheadRole.default], ["select", _selectRole.default], ["structure", _structureRole.default], ["widget", _widgetRole.default], ["window", _windowRole.default]]; - var _default = exports.default = ariaAbstractRoles; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/alertRole.js -var require_alertRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/alertRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var alertRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-atomic": "true", - "aria-live": "assertive" - }, - relatedConcepts: [{ - concept: { - name: "alert" - }, - module: "XForms" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = alertRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/alertdialogRole.js -var require_alertdialogRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/alertdialogRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var alertdialogRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "alert" - }, - module: "XForms" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "alert"], ["roletype", "window", "dialog"]] - }; - var _default = exports.default = alertdialogRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/applicationRole.js -var require_applicationRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/applicationRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var applicationRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-activedescendant": null, - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "Device Independence Delivery Unit" - } - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = applicationRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/articleRole.js -var require_articleRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/articleRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var articleRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-posinset": null, - "aria-setsize": null - }, - relatedConcepts: [{ - concept: { - name: "article" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "document"]] - }; - var _default = exports.default = articleRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/bannerRole.js -var require_bannerRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/bannerRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var bannerRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - constraints: ["scoped to the body element"], - name: "header" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = bannerRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/blockquoteRole.js -var require_blockquoteRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/blockquoteRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var blockquoteRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "blockquote" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = blockquoteRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/buttonRole.js -var require_buttonRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/buttonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var buttonRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-pressed": null - }, - relatedConcepts: [{ - concept: { - attributes: [{ - name: "type", - value: "button" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - name: "type", - value: "image" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - name: "type", - value: "reset" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - name: "type", - value: "submit" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - name: "button" - }, - module: "HTML" - }, { - concept: { - name: "trigger" - }, - module: "XForms" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "command"]] - }; - var _default = exports.default = buttonRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/captionRole.js -var require_captionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/captionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var captionRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "caption" - }, - module: "HTML" - }], - requireContextRole: ["figure", "grid", "table"], - requiredContextRole: ["figure", "grid", "table"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = captionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/cellRole.js -var require_cellRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/cellRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var cellRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-colindex": null, - "aria-colspan": null, - "aria-rowindex": null, - "aria-rowspan": null - }, - relatedConcepts: [{ - concept: { - constraints: ["ancestor table element has table role"], - name: "td" - }, - module: "HTML" - }], - requireContextRole: ["row"], - requiredContextRole: ["row"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = cellRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/checkboxRole.js -var require_checkboxRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/checkboxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var checkboxRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-checked": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-invalid": null, - "aria-readonly": null, - "aria-required": null - }, - relatedConcepts: [{ - concept: { - attributes: [{ - name: "type", - value: "checkbox" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - name: "option" - }, - module: "ARIA" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-checked": null - }, - superClass: [["roletype", "widget", "input"]] - }; - var _default = exports.default = checkboxRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/codeRole.js -var require_codeRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/codeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var codeRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "code" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = codeRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/columnheaderRole.js -var require_columnheaderRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/columnheaderRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var columnheaderRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-sort": null - }, - relatedConcepts: [{ - concept: { - name: "th" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - name: "scope", - value: "col" - }], - name: "th" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - name: "scope", - value: "colgroup" - }], - name: "th" - }, - module: "HTML" - }], - requireContextRole: ["row"], - requiredContextRole: ["row"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "cell"], ["roletype", "structure", "section", "cell", "gridcell"], ["roletype", "widget", "gridcell"], ["roletype", "structure", "sectionhead"]] - }; - var _default = exports.default = columnheaderRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/comboboxRole.js -var require_comboboxRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/comboboxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var comboboxRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-activedescendant": null, - "aria-autocomplete": null, - "aria-errormessage": null, - "aria-invalid": null, - "aria-readonly": null, - "aria-required": null, - "aria-expanded": "false", - "aria-haspopup": "listbox" - }, - relatedConcepts: [{ - concept: { - attributes: [{ - constraints: ["set"], - name: "list" - }, { - name: "type", - value: "email" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "list" - }, { - name: "type", - value: "search" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "list" - }, { - name: "type", - value: "tel" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "list" - }, { - name: "type", - value: "text" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "list" - }, { - name: "type", - value: "url" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "list" - }, { - name: "type", - value: "url" - }], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["undefined"], - name: "multiple" - }, { - constraints: ["undefined"], - name: "size" - }], - constraints: ["the multiple attribute is not set and the size attribute does not have a value greater than 1"], - name: "select" - }, - module: "HTML" - }, { - concept: { - name: "select" - }, - module: "XForms" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-controls": null, - "aria-expanded": "false" - }, - superClass: [["roletype", "widget", "input"]] - }; - var _default = exports.default = comboboxRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/complementaryRole.js -var require_complementaryRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/complementaryRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var complementaryRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - constraints: ["scoped to the body element", "scoped to the main element"], - name: "aside" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "aria-label" - }], - constraints: ["scoped to a sectioning content element", "scoped to a sectioning root element other than body"], - name: "aside" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "aria-labelledby" - }], - constraints: ["scoped to a sectioning content element", "scoped to a sectioning root element other than body"], - name: "aside" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = complementaryRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/contentinfoRole.js -var require_contentinfoRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/contentinfoRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var contentinfoRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - constraints: ["scoped to the body element"], - name: "footer" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = contentinfoRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/definitionRole.js -var require_definitionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/definitionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var definitionRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "dd" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = definitionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/deletionRole.js -var require_deletionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/deletionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var deletionRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "del" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = deletionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/dialogRole.js -var require_dialogRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/dialogRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var dialogRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "dialog" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "window"]] - }; - var _default = exports.default = dialogRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/directoryRole.js -var require_directoryRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/directoryRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var directoryRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - module: "DAISY Guide" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "list"]] - }; - var _default = exports.default = directoryRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/documentRole.js -var require_documentRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/documentRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var documentRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "Device Independence Delivery Unit" - } - }, { - concept: { - name: "html" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = documentRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/emphasisRole.js -var require_emphasisRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/emphasisRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var emphasisRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "em" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = emphasisRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/feedRole.js -var require_feedRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/feedRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var feedRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["article"]], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "list"]] - }; - var _default = exports.default = feedRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/figureRole.js -var require_figureRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/figureRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var figureRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "figure" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = figureRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/formRole.js -var require_formRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/formRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var formRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - attributes: [{ - constraints: ["set"], - name: "aria-label" - }], - name: "form" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "aria-labelledby" - }], - name: "form" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "name" - }], - name: "form" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = formRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/genericRole.js -var require_genericRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/genericRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var genericRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "a" - }, - module: "HTML" - }, { - concept: { - name: "area" - }, - module: "HTML" - }, { - concept: { - name: "aside" - }, - module: "HTML" - }, { - concept: { - name: "b" - }, - module: "HTML" - }, { - concept: { - name: "bdo" - }, - module: "HTML" - }, { - concept: { - name: "body" - }, - module: "HTML" - }, { - concept: { - name: "data" - }, - module: "HTML" - }, { - concept: { - name: "div" - }, - module: "HTML" - }, { - concept: { - constraints: ["scoped to the main element", "scoped to a sectioning content element", "scoped to a sectioning root element other than body"], - name: "footer" - }, - module: "HTML" - }, { - concept: { - constraints: ["scoped to the main element", "scoped to a sectioning content element", "scoped to a sectioning root element other than body"], - name: "header" - }, - module: "HTML" - }, { - concept: { - name: "hgroup" - }, - module: "HTML" - }, { - concept: { - name: "i" - }, - module: "HTML" - }, { - concept: { - name: "pre" - }, - module: "HTML" - }, { - concept: { - name: "q" - }, - module: "HTML" - }, { - concept: { - name: "samp" - }, - module: "HTML" - }, { - concept: { - name: "section" - }, - module: "HTML" - }, { - concept: { - name: "small" - }, - module: "HTML" - }, { - concept: { - name: "span" - }, - module: "HTML" - }, { - concept: { - name: "u" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = genericRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/gridRole.js -var require_gridRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/gridRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var gridRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-multiselectable": null, - "aria-readonly": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["row"], ["row", "rowgroup"]], - requiredProps: {}, - superClass: [["roletype", "widget", "composite"], ["roletype", "structure", "section", "table"]] - }; - var _default = exports.default = gridRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/gridcellRole.js -var require_gridcellRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/gridcellRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var gridcellRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null, - "aria-readonly": null, - "aria-required": null, - "aria-selected": null - }, - relatedConcepts: [{ - concept: { - constraints: ["ancestor table element has grid role", "ancestor table element has treegrid role"], - name: "td" - }, - module: "HTML" - }], - requireContextRole: ["row"], - requiredContextRole: ["row"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "cell"], ["roletype", "widget"]] - }; - var _default = exports.default = gridcellRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/groupRole.js -var require_groupRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/groupRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var groupRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-activedescendant": null, - "aria-disabled": null - }, - relatedConcepts: [{ - concept: { - name: "details" - }, - module: "HTML" - }, { - concept: { - name: "fieldset" - }, - module: "HTML" - }, { - concept: { - name: "optgroup" - }, - module: "HTML" - }, { - concept: { - name: "address" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = groupRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/headingRole.js -var require_headingRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/headingRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var headingRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-level": "2" - }, - relatedConcepts: [{ - concept: { - name: "h1" - }, - module: "HTML" - }, { - concept: { - name: "h2" - }, - module: "HTML" - }, { - concept: { - name: "h3" - }, - module: "HTML" - }, { - concept: { - name: "h4" - }, - module: "HTML" - }, { - concept: { - name: "h5" - }, - module: "HTML" - }, { - concept: { - name: "h6" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-level": "2" - }, - superClass: [["roletype", "structure", "sectionhead"]] - }; - var _default = exports.default = headingRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/imgRole.js -var require_imgRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/imgRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var imgRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - attributes: [{ - constraints: ["set"], - name: "alt" - }], - name: "img" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["undefined"], - name: "alt" - }], - name: "img" - }, - module: "HTML" - }, { - concept: { - name: "imggroup" - }, - module: "DTB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = imgRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/insertionRole.js -var require_insertionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/insertionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var insertionRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "ins" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = insertionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/linkRole.js -var require_linkRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/linkRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var linkRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-expanded": null, - "aria-haspopup": null - }, - relatedConcepts: [{ - concept: { - attributes: [{ - constraints: ["set"], - name: "href" - }], - name: "a" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "href" - }], - name: "area" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "command"]] - }; - var _default = exports.default = linkRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/listRole.js -var require_listRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/listRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var listRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "menu" - }, - module: "HTML" - }, { - concept: { - name: "ol" - }, - module: "HTML" - }, { - concept: { - name: "ul" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["listitem"]], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = listRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/listboxRole.js -var require_listboxRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/listboxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var listboxRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-expanded": null, - "aria-invalid": null, - "aria-multiselectable": null, - "aria-readonly": null, - "aria-required": null, - "aria-orientation": "vertical" - }, - relatedConcepts: [{ - concept: { - attributes: [{ - constraints: [">1"], - name: "size" - }], - constraints: ["the size attribute value is greater than 1"], - name: "select" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - name: "multiple" - }], - name: "select" - }, - module: "HTML" - }, { - concept: { - name: "datalist" - }, - module: "HTML" - }, { - concept: { - name: "list" - }, - module: "ARIA" - }, { - concept: { - name: "select" - }, - module: "XForms" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["option", "group"], ["option"]], - requiredProps: {}, - superClass: [["roletype", "widget", "composite", "select"], ["roletype", "structure", "section", "group", "select"]] - }; - var _default = exports.default = listboxRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/listitemRole.js -var require_listitemRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/listitemRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var listitemRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-level": null, - "aria-posinset": null, - "aria-setsize": null - }, - relatedConcepts: [{ - concept: { - constraints: ["direct descendant of ol", "direct descendant of ul", "direct descendant of menu"], - name: "li" - }, - module: "HTML" - }, { - concept: { - name: "item" - }, - module: "XForms" - }], - requireContextRole: ["directory", "list"], - requiredContextRole: ["directory", "list"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = listitemRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/logRole.js -var require_logRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/logRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var logRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-live": "polite" - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = logRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/mainRole.js -var require_mainRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/mainRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var mainRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "main" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = mainRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/markRole.js -var require_markRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/markRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var markRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: [], - props: { - "aria-braillelabel": null, - "aria-brailleroledescription": null, - "aria-description": null - }, - relatedConcepts: [{ - concept: { - name: "mark" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = markRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/marqueeRole.js -var require_marqueeRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/marqueeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var marqueeRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = marqueeRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/mathRole.js -var require_mathRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/mathRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var mathRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "math" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = mathRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/menuRole.js -var require_menuRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/menuRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var menuRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-orientation": "vertical" - }, - relatedConcepts: [{ - concept: { - name: "MENU" - }, - module: "JAPI" - }, { - concept: { - name: "list" - }, - module: "ARIA" - }, { - concept: { - name: "select" - }, - module: "XForms" - }, { - concept: { - name: "sidebar" - }, - module: "DTB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["menuitem", "group"], ["menuitemradio", "group"], ["menuitemcheckbox", "group"], ["menuitem"], ["menuitemcheckbox"], ["menuitemradio"]], - requiredProps: {}, - superClass: [["roletype", "widget", "composite", "select"], ["roletype", "structure", "section", "group", "select"]] - }; - var _default = exports.default = menuRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/menubarRole.js -var require_menubarRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/menubarRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var menubarRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-orientation": "horizontal" - }, - relatedConcepts: [{ - concept: { - name: "toolbar" - }, - module: "ARIA" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["menuitem", "group"], ["menuitemradio", "group"], ["menuitemcheckbox", "group"], ["menuitem"], ["menuitemcheckbox"], ["menuitemradio"]], - requiredProps: {}, - superClass: [["roletype", "widget", "composite", "select", "menu"], ["roletype", "structure", "section", "group", "select", "menu"]] - }; - var _default = exports.default = menubarRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/menuitemRole.js -var require_menuitemRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/menuitemRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var menuitemRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-posinset": null, - "aria-setsize": null - }, - relatedConcepts: [{ - concept: { - name: "MENU_ITEM" - }, - module: "JAPI" - }, { - concept: { - name: "listitem" - }, - module: "ARIA" - }, { - concept: { - name: "option" - }, - module: "ARIA" - }], - requireContextRole: ["group", "menu", "menubar"], - requiredContextRole: ["group", "menu", "menubar"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "command"]] - }; - var _default = exports.default = menuitemRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/menuitemcheckboxRole.js -var require_menuitemcheckboxRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/menuitemcheckboxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var menuitemcheckboxRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "menuitem" - }, - module: "ARIA" - }], - requireContextRole: ["group", "menu", "menubar"], - requiredContextRole: ["group", "menu", "menubar"], - requiredOwnedElements: [], - requiredProps: { - "aria-checked": null - }, - superClass: [["roletype", "widget", "input", "checkbox"], ["roletype", "widget", "command", "menuitem"]] - }; - var _default = exports.default = menuitemcheckboxRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/menuitemradioRole.js -var require_menuitemradioRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/menuitemradioRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var menuitemradioRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "menuitem" - }, - module: "ARIA" - }], - requireContextRole: ["group", "menu", "menubar"], - requiredContextRole: ["group", "menu", "menubar"], - requiredOwnedElements: [], - requiredProps: { - "aria-checked": null - }, - superClass: [["roletype", "widget", "input", "checkbox", "menuitemcheckbox"], ["roletype", "widget", "command", "menuitem", "menuitemcheckbox"], ["roletype", "widget", "input", "radio"]] - }; - var _default = exports.default = menuitemradioRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/meterRole.js -var require_meterRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/meterRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var meterRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-valuetext": null, - "aria-valuemax": "100", - "aria-valuemin": "0" - }, - relatedConcepts: [{ - concept: { - name: "meter" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-valuenow": null - }, - superClass: [["roletype", "structure", "range"]] - }; - var _default = exports.default = meterRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/navigationRole.js -var require_navigationRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/navigationRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var navigationRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "nav" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = navigationRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/noneRole.js -var require_noneRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/noneRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var noneRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: [], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [] - }; - var _default = exports.default = noneRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/noteRole.js -var require_noteRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/noteRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var noteRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = noteRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/optionRole.js -var require_optionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/optionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var optionRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-checked": null, - "aria-posinset": null, - "aria-setsize": null, - "aria-selected": "false" - }, - relatedConcepts: [{ - concept: { - name: "item" - }, - module: "XForms" - }, { - concept: { - name: "listitem" - }, - module: "ARIA" - }, { - concept: { - name: "option" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-selected": "false" - }, - superClass: [["roletype", "widget", "input"]] - }; - var _default = exports.default = optionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/paragraphRole.js -var require_paragraphRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/paragraphRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var paragraphRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "p" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = paragraphRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/presentationRole.js -var require_presentationRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/presentationRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var presentationRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - attributes: [{ - name: "alt", - value: "" - }], - name: "img" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = presentationRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/progressbarRole.js -var require_progressbarRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/progressbarRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var progressbarRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-valuetext": null - }, - relatedConcepts: [{ - concept: { - name: "progress" - }, - module: "HTML" - }, { - concept: { - name: "status" - }, - module: "ARIA" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "range"], ["roletype", "widget"]] - }; - var _default = exports.default = progressbarRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/radioRole.js -var require_radioRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/radioRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var radioRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-checked": null, - "aria-posinset": null, - "aria-setsize": null - }, - relatedConcepts: [{ - concept: { - attributes: [{ - name: "type", - value: "radio" - }], - name: "input" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-checked": null - }, - superClass: [["roletype", "widget", "input"]] - }; - var _default = exports.default = radioRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/radiogroupRole.js -var require_radiogroupRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/radiogroupRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var radiogroupRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-invalid": null, - "aria-readonly": null, - "aria-required": null - }, - relatedConcepts: [{ - concept: { - name: "list" - }, - module: "ARIA" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["radio"]], - requiredProps: {}, - superClass: [["roletype", "widget", "composite", "select"], ["roletype", "structure", "section", "group", "select"]] - }; - var _default = exports.default = radiogroupRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/regionRole.js -var require_regionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/regionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var regionRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - attributes: [{ - constraints: ["set"], - name: "aria-label" - }], - name: "section" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["set"], - name: "aria-labelledby" - }], - name: "section" - }, - module: "HTML" - }, { - concept: { - name: "Device Independence Glossart perceivable unit" - } - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = regionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/rowRole.js -var require_rowRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/rowRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var rowRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-colindex": null, - "aria-expanded": null, - "aria-level": null, - "aria-posinset": null, - "aria-rowindex": null, - "aria-selected": null, - "aria-setsize": null - }, - relatedConcepts: [{ - concept: { - name: "tr" - }, - module: "HTML" - }], - requireContextRole: ["grid", "rowgroup", "table", "treegrid"], - requiredContextRole: ["grid", "rowgroup", "table", "treegrid"], - requiredOwnedElements: [["cell"], ["columnheader"], ["gridcell"], ["rowheader"]], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "group"], ["roletype", "widget"]] - }; - var _default = exports.default = rowRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/rowgroupRole.js -var require_rowgroupRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/rowgroupRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var rowgroupRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "tbody" - }, - module: "HTML" - }, { - concept: { - name: "tfoot" - }, - module: "HTML" - }, { - concept: { - name: "thead" - }, - module: "HTML" - }], - requireContextRole: ["grid", "table", "treegrid"], - requiredContextRole: ["grid", "table", "treegrid"], - requiredOwnedElements: [["row"]], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = rowgroupRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/rowheaderRole.js -var require_rowheaderRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/rowheaderRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var rowheaderRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-sort": null - }, - relatedConcepts: [{ - concept: { - attributes: [{ - name: "scope", - value: "row" - }], - name: "th" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - name: "scope", - value: "rowgroup" - }], - name: "th" - }, - module: "HTML" - }], - requireContextRole: ["row", "rowgroup"], - requiredContextRole: ["row", "rowgroup"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "cell"], ["roletype", "structure", "section", "cell", "gridcell"], ["roletype", "widget", "gridcell"], ["roletype", "structure", "sectionhead"]] - }; - var _default = exports.default = rowheaderRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/scrollbarRole.js -var require_scrollbarRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/scrollbarRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var scrollbarRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-valuetext": null, - "aria-orientation": "vertical", - "aria-valuemax": "100", - "aria-valuemin": "0" - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-controls": null, - "aria-valuenow": null - }, - superClass: [["roletype", "structure", "range"], ["roletype", "widget"]] - }; - var _default = exports.default = scrollbarRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/searchRole.js -var require_searchRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/searchRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var searchRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = searchRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/searchboxRole.js -var require_searchboxRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/searchboxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var searchboxRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - attributes: [{ - constraints: ["undefined"], - name: "list" - }, { - name: "type", - value: "search" - }], - constraints: ["the list attribute is not set"], - name: "input" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "input", "textbox"]] - }; - var _default = exports.default = searchboxRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/separatorRole.js -var require_separatorRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/separatorRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var separatorRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-orientation": "horizontal", - "aria-valuemax": "100", - "aria-valuemin": "0", - "aria-valuenow": null, - "aria-valuetext": null - }, - relatedConcepts: [{ - concept: { - name: "hr" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure"]] - }; - var _default = exports.default = separatorRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/sliderRole.js -var require_sliderRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/sliderRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var sliderRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-haspopup": null, - "aria-invalid": null, - "aria-readonly": null, - "aria-valuetext": null, - "aria-orientation": "horizontal", - "aria-valuemax": "100", - "aria-valuemin": "0" - }, - relatedConcepts: [{ - concept: { - attributes: [{ - name: "type", - value: "range" - }], - name: "input" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-valuenow": null - }, - superClass: [["roletype", "widget", "input"], ["roletype", "structure", "range"]] - }; - var _default = exports.default = sliderRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/spinbuttonRole.js -var require_spinbuttonRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/spinbuttonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var spinbuttonRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-invalid": null, - "aria-readonly": null, - "aria-required": null, - "aria-valuetext": null, - "aria-valuenow": "0" - }, - relatedConcepts: [{ - concept: { - attributes: [{ - name: "type", - value: "number" - }], - name: "input" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "composite"], ["roletype", "widget", "input"], ["roletype", "structure", "range"]] - }; - var _default = exports.default = spinbuttonRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/statusRole.js -var require_statusRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/statusRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var statusRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-atomic": "true", - "aria-live": "polite" - }, - relatedConcepts: [{ - concept: { - name: "output" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = statusRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/strongRole.js -var require_strongRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/strongRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var strongRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "strong" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = strongRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/subscriptRole.js -var require_subscriptRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/subscriptRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var subscriptRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "sub" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = subscriptRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/superscriptRole.js -var require_superscriptRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/superscriptRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var superscriptRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: ["aria-label", "aria-labelledby"], - props: {}, - relatedConcepts: [{ - concept: { - name: "sup" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = superscriptRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/switchRole.js -var require_switchRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/switchRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var switchRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "button" - }, - module: "ARIA" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: { - "aria-checked": null - }, - superClass: [["roletype", "widget", "input", "checkbox"]] - }; - var _default = exports.default = switchRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/tabRole.js -var require_tabRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/tabRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var tabRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-posinset": null, - "aria-setsize": null, - "aria-selected": "false" - }, - relatedConcepts: [], - requireContextRole: ["tablist"], - requiredContextRole: ["tablist"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "sectionhead"], ["roletype", "widget"]] - }; - var _default = exports.default = tabRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/tableRole.js -var require_tableRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/tableRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var tableRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-colcount": null, - "aria-rowcount": null - }, - relatedConcepts: [{ - concept: { - name: "table" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["row"], ["row", "rowgroup"]], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = tableRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/tablistRole.js -var require_tablistRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/tablistRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var tablistRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-level": null, - "aria-multiselectable": null, - "aria-orientation": "horizontal" - }, - relatedConcepts: [{ - module: "DAISY", - concept: { - name: "guide" - } - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["tab"]], - requiredProps: {}, - superClass: [["roletype", "widget", "composite"]] - }; - var _default = exports.default = tablistRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/tabpanelRole.js -var require_tabpanelRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/tabpanelRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var tabpanelRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = tabpanelRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/termRole.js -var require_termRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/termRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var termRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "dfn" - }, - module: "HTML" - }, { - concept: { - name: "dt" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = termRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/textboxRole.js -var require_textboxRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/textboxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var textboxRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-activedescendant": null, - "aria-autocomplete": null, - "aria-errormessage": null, - "aria-haspopup": null, - "aria-invalid": null, - "aria-multiline": null, - "aria-placeholder": null, - "aria-readonly": null, - "aria-required": null - }, - relatedConcepts: [{ - concept: { - attributes: [{ - constraints: ["undefined"], - name: "type" - }, { - constraints: ["undefined"], - name: "list" - }], - constraints: ["the list attribute is not set"], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["undefined"], - name: "list" - }, { - name: "type", - value: "email" - }], - constraints: ["the list attribute is not set"], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["undefined"], - name: "list" - }, { - name: "type", - value: "tel" - }], - constraints: ["the list attribute is not set"], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["undefined"], - name: "list" - }, { - name: "type", - value: "text" - }], - constraints: ["the list attribute is not set"], - name: "input" - }, - module: "HTML" - }, { - concept: { - attributes: [{ - constraints: ["undefined"], - name: "list" - }, { - name: "type", - value: "url" - }], - constraints: ["the list attribute is not set"], - name: "input" - }, - module: "HTML" - }, { - concept: { - name: "input" - }, - module: "XForms" - }, { - concept: { - name: "textarea" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "input"]] - }; - var _default = exports.default = textboxRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/timeRole.js -var require_timeRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/timeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var timeRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "time" - }, - module: "HTML" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = timeRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/timerRole.js -var require_timerRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/timerRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var timerRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "status"]] - }; - var _default = exports.default = timerRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/toolbarRole.js -var require_toolbarRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/toolbarRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var toolbarRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-orientation": "horizontal" - }, - relatedConcepts: [{ - concept: { - name: "menubar" - }, - module: "ARIA" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "group"]] - }; - var _default = exports.default = toolbarRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/tooltipRole.js -var require_tooltipRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/tooltipRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var tooltipRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = tooltipRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/treeRole.js -var require_treeRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/treeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var treeRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-invalid": null, - "aria-multiselectable": null, - "aria-required": null, - "aria-orientation": "vertical" - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["treeitem", "group"], ["treeitem"]], - requiredProps: {}, - superClass: [["roletype", "widget", "composite", "select"], ["roletype", "structure", "section", "group", "select"]] - }; - var _default = exports.default = treeRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/treegridRole.js -var require_treegridRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/treegridRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var treegridRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["row"], ["row", "rowgroup"]], - requiredProps: {}, - superClass: [["roletype", "widget", "composite", "grid"], ["roletype", "structure", "section", "table", "grid"], ["roletype", "widget", "composite", "select", "tree"], ["roletype", "structure", "section", "group", "select", "tree"]] - }; - var _default = exports.default = treegridRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/literal/treeitemRole.js -var require_treeitemRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/literal/treeitemRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var treeitemRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-expanded": null, - "aria-haspopup": null - }, - relatedConcepts: [], - requireContextRole: ["group", "tree"], - requiredContextRole: ["group", "tree"], - requiredOwnedElements: [], - requiredProps: { - "aria-selected": null - }, - superClass: [["roletype", "structure", "section", "listitem"], ["roletype", "widget", "input", "option"]] - }; - var _default = exports.default = treeitemRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/ariaLiteralRoles.js -var require_ariaLiteralRoles = __commonJS({ - "node_modules/aria-query/lib/etc/roles/ariaLiteralRoles.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _alertRole = _interopRequireDefault(require_alertRole()); - var _alertdialogRole = _interopRequireDefault(require_alertdialogRole()); - var _applicationRole = _interopRequireDefault(require_applicationRole()); - var _articleRole = _interopRequireDefault(require_articleRole()); - var _bannerRole = _interopRequireDefault(require_bannerRole()); - var _blockquoteRole = _interopRequireDefault(require_blockquoteRole()); - var _buttonRole = _interopRequireDefault(require_buttonRole()); - var _captionRole = _interopRequireDefault(require_captionRole()); - var _cellRole = _interopRequireDefault(require_cellRole()); - var _checkboxRole = _interopRequireDefault(require_checkboxRole()); - var _codeRole = _interopRequireDefault(require_codeRole()); - var _columnheaderRole = _interopRequireDefault(require_columnheaderRole()); - var _comboboxRole = _interopRequireDefault(require_comboboxRole()); - var _complementaryRole = _interopRequireDefault(require_complementaryRole()); - var _contentinfoRole = _interopRequireDefault(require_contentinfoRole()); - var _definitionRole = _interopRequireDefault(require_definitionRole()); - var _deletionRole = _interopRequireDefault(require_deletionRole()); - var _dialogRole = _interopRequireDefault(require_dialogRole()); - var _directoryRole = _interopRequireDefault(require_directoryRole()); - var _documentRole = _interopRequireDefault(require_documentRole()); - var _emphasisRole = _interopRequireDefault(require_emphasisRole()); - var _feedRole = _interopRequireDefault(require_feedRole()); - var _figureRole = _interopRequireDefault(require_figureRole()); - var _formRole = _interopRequireDefault(require_formRole()); - var _genericRole = _interopRequireDefault(require_genericRole()); - var _gridRole = _interopRequireDefault(require_gridRole()); - var _gridcellRole = _interopRequireDefault(require_gridcellRole()); - var _groupRole = _interopRequireDefault(require_groupRole()); - var _headingRole = _interopRequireDefault(require_headingRole()); - var _imgRole = _interopRequireDefault(require_imgRole()); - var _insertionRole = _interopRequireDefault(require_insertionRole()); - var _linkRole = _interopRequireDefault(require_linkRole()); - var _listRole = _interopRequireDefault(require_listRole()); - var _listboxRole = _interopRequireDefault(require_listboxRole()); - var _listitemRole = _interopRequireDefault(require_listitemRole()); - var _logRole = _interopRequireDefault(require_logRole()); - var _mainRole = _interopRequireDefault(require_mainRole()); - var _markRole = _interopRequireDefault(require_markRole()); - var _marqueeRole = _interopRequireDefault(require_marqueeRole()); - var _mathRole = _interopRequireDefault(require_mathRole()); - var _menuRole = _interopRequireDefault(require_menuRole()); - var _menubarRole = _interopRequireDefault(require_menubarRole()); - var _menuitemRole = _interopRequireDefault(require_menuitemRole()); - var _menuitemcheckboxRole = _interopRequireDefault(require_menuitemcheckboxRole()); - var _menuitemradioRole = _interopRequireDefault(require_menuitemradioRole()); - var _meterRole = _interopRequireDefault(require_meterRole()); - var _navigationRole = _interopRequireDefault(require_navigationRole()); - var _noneRole = _interopRequireDefault(require_noneRole()); - var _noteRole = _interopRequireDefault(require_noteRole()); - var _optionRole = _interopRequireDefault(require_optionRole()); - var _paragraphRole = _interopRequireDefault(require_paragraphRole()); - var _presentationRole = _interopRequireDefault(require_presentationRole()); - var _progressbarRole = _interopRequireDefault(require_progressbarRole()); - var _radioRole = _interopRequireDefault(require_radioRole()); - var _radiogroupRole = _interopRequireDefault(require_radiogroupRole()); - var _regionRole = _interopRequireDefault(require_regionRole()); - var _rowRole = _interopRequireDefault(require_rowRole()); - var _rowgroupRole = _interopRequireDefault(require_rowgroupRole()); - var _rowheaderRole = _interopRequireDefault(require_rowheaderRole()); - var _scrollbarRole = _interopRequireDefault(require_scrollbarRole()); - var _searchRole = _interopRequireDefault(require_searchRole()); - var _searchboxRole = _interopRequireDefault(require_searchboxRole()); - var _separatorRole = _interopRequireDefault(require_separatorRole()); - var _sliderRole = _interopRequireDefault(require_sliderRole()); - var _spinbuttonRole = _interopRequireDefault(require_spinbuttonRole()); - var _statusRole = _interopRequireDefault(require_statusRole()); - var _strongRole = _interopRequireDefault(require_strongRole()); - var _subscriptRole = _interopRequireDefault(require_subscriptRole()); - var _superscriptRole = _interopRequireDefault(require_superscriptRole()); - var _switchRole = _interopRequireDefault(require_switchRole()); - var _tabRole = _interopRequireDefault(require_tabRole()); - var _tableRole = _interopRequireDefault(require_tableRole()); - var _tablistRole = _interopRequireDefault(require_tablistRole()); - var _tabpanelRole = _interopRequireDefault(require_tabpanelRole()); - var _termRole = _interopRequireDefault(require_termRole()); - var _textboxRole = _interopRequireDefault(require_textboxRole()); - var _timeRole = _interopRequireDefault(require_timeRole()); - var _timerRole = _interopRequireDefault(require_timerRole()); - var _toolbarRole = _interopRequireDefault(require_toolbarRole()); - var _tooltipRole = _interopRequireDefault(require_tooltipRole()); - var _treeRole = _interopRequireDefault(require_treeRole()); - var _treegridRole = _interopRequireDefault(require_treegridRole()); - var _treeitemRole = _interopRequireDefault(require_treeitemRole()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - var ariaLiteralRoles = [["alert", _alertRole.default], ["alertdialog", _alertdialogRole.default], ["application", _applicationRole.default], ["article", _articleRole.default], ["banner", _bannerRole.default], ["blockquote", _blockquoteRole.default], ["button", _buttonRole.default], ["caption", _captionRole.default], ["cell", _cellRole.default], ["checkbox", _checkboxRole.default], ["code", _codeRole.default], ["columnheader", _columnheaderRole.default], ["combobox", _comboboxRole.default], ["complementary", _complementaryRole.default], ["contentinfo", _contentinfoRole.default], ["definition", _definitionRole.default], ["deletion", _deletionRole.default], ["dialog", _dialogRole.default], ["directory", _directoryRole.default], ["document", _documentRole.default], ["emphasis", _emphasisRole.default], ["feed", _feedRole.default], ["figure", _figureRole.default], ["form", _formRole.default], ["generic", _genericRole.default], ["grid", _gridRole.default], ["gridcell", _gridcellRole.default], ["group", _groupRole.default], ["heading", _headingRole.default], ["img", _imgRole.default], ["insertion", _insertionRole.default], ["link", _linkRole.default], ["list", _listRole.default], ["listbox", _listboxRole.default], ["listitem", _listitemRole.default], ["log", _logRole.default], ["main", _mainRole.default], ["mark", _markRole.default], ["marquee", _marqueeRole.default], ["math", _mathRole.default], ["menu", _menuRole.default], ["menubar", _menubarRole.default], ["menuitem", _menuitemRole.default], ["menuitemcheckbox", _menuitemcheckboxRole.default], ["menuitemradio", _menuitemradioRole.default], ["meter", _meterRole.default], ["navigation", _navigationRole.default], ["none", _noneRole.default], ["note", _noteRole.default], ["option", _optionRole.default], ["paragraph", _paragraphRole.default], ["presentation", _presentationRole.default], ["progressbar", _progressbarRole.default], ["radio", _radioRole.default], ["radiogroup", _radiogroupRole.default], ["region", _regionRole.default], ["row", _rowRole.default], ["rowgroup", _rowgroupRole.default], ["rowheader", _rowheaderRole.default], ["scrollbar", _scrollbarRole.default], ["search", _searchRole.default], ["searchbox", _searchboxRole.default], ["separator", _separatorRole.default], ["slider", _sliderRole.default], ["spinbutton", _spinbuttonRole.default], ["status", _statusRole.default], ["strong", _strongRole.default], ["subscript", _subscriptRole.default], ["superscript", _superscriptRole.default], ["switch", _switchRole.default], ["tab", _tabRole.default], ["table", _tableRole.default], ["tablist", _tablistRole.default], ["tabpanel", _tabpanelRole.default], ["term", _termRole.default], ["textbox", _textboxRole.default], ["time", _timeRole.default], ["timer", _timerRole.default], ["toolbar", _toolbarRole.default], ["tooltip", _tooltipRole.default], ["tree", _treeRole.default], ["treegrid", _treegridRole.default], ["treeitem", _treeitemRole.default]]; - var _default = exports.default = ariaLiteralRoles; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docAbstractRole.js -var require_docAbstractRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docAbstractRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docAbstractRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "abstract [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docAbstractRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docAcknowledgmentsRole.js -var require_docAcknowledgmentsRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docAcknowledgmentsRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docAcknowledgmentsRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "acknowledgments [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docAcknowledgmentsRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docAfterwordRole.js -var require_docAfterwordRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docAfterwordRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docAfterwordRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "afterword [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docAfterwordRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docAppendixRole.js -var require_docAppendixRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docAppendixRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docAppendixRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "appendix [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docAppendixRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docBacklinkRole.js -var require_docBacklinkRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docBacklinkRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docBacklinkRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "referrer [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "command", "link"]] - }; - var _default = exports.default = docBacklinkRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docBiblioentryRole.js -var require_docBiblioentryRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docBiblioentryRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docBiblioentryRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "EPUB biblioentry [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: ["doc-bibliography"], - requiredContextRole: ["doc-bibliography"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "listitem"]] - }; - var _default = exports.default = docBiblioentryRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docBibliographyRole.js -var require_docBibliographyRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docBibliographyRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docBibliographyRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "bibliography [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["doc-biblioentry"]], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docBibliographyRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docBibliorefRole.js -var require_docBibliorefRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docBibliorefRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docBibliorefRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "biblioref [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "command", "link"]] - }; - var _default = exports.default = docBibliorefRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docChapterRole.js -var require_docChapterRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docChapterRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docChapterRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "chapter [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docChapterRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docColophonRole.js -var require_docColophonRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docColophonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docColophonRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "colophon [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docColophonRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docConclusionRole.js -var require_docConclusionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docConclusionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docConclusionRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "conclusion [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docConclusionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docCoverRole.js -var require_docCoverRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docCoverRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docCoverRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "cover [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "img"]] - }; - var _default = exports.default = docCoverRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docCreditRole.js -var require_docCreditRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docCreditRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docCreditRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "credit [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docCreditRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docCreditsRole.js -var require_docCreditsRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docCreditsRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docCreditsRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "credits [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docCreditsRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docDedicationRole.js -var require_docDedicationRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docDedicationRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docDedicationRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "dedication [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docDedicationRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docEndnoteRole.js -var require_docEndnoteRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docEndnoteRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docEndnoteRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "rearnote [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: ["doc-endnotes"], - requiredContextRole: ["doc-endnotes"], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "listitem"]] - }; - var _default = exports.default = docEndnoteRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docEndnotesRole.js -var require_docEndnotesRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docEndnotesRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docEndnotesRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "rearnotes [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["doc-endnote"]], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docEndnotesRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docEpigraphRole.js -var require_docEpigraphRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docEpigraphRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docEpigraphRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "epigraph [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docEpigraphRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docEpilogueRole.js -var require_docEpilogueRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docEpilogueRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docEpilogueRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "epilogue [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docEpilogueRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docErrataRole.js -var require_docErrataRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docErrataRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docErrataRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "errata [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docErrataRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docExampleRole.js -var require_docExampleRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docExampleRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docExampleRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docExampleRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docFootnoteRole.js -var require_docFootnoteRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docFootnoteRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docFootnoteRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "footnote [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docFootnoteRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docForewordRole.js -var require_docForewordRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docForewordRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docForewordRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "foreword [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docForewordRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docGlossaryRole.js -var require_docGlossaryRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docGlossaryRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docGlossaryRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "glossary [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [["definition"], ["term"]], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docGlossaryRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docGlossrefRole.js -var require_docGlossrefRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docGlossrefRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docGlossrefRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "glossref [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "command", "link"]] - }; - var _default = exports.default = docGlossrefRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docIndexRole.js -var require_docIndexRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docIndexRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docIndexRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "index [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark", "navigation"]] - }; - var _default = exports.default = docIndexRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docIntroductionRole.js -var require_docIntroductionRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docIntroductionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docIntroductionRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "introduction [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docIntroductionRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docNoterefRole.js -var require_docNoterefRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docNoterefRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docNoterefRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "noteref [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "widget", "command", "link"]] - }; - var _default = exports.default = docNoterefRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docNoticeRole.js -var require_docNoticeRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docNoticeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docNoticeRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "notice [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "note"]] - }; - var _default = exports.default = docNoticeRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docPagebreakRole.js -var require_docPagebreakRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docPagebreakRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docPagebreakRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "pagebreak [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "separator"]] - }; - var _default = exports.default = docPagebreakRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docPagefooterRole.js -var require_docPagefooterRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docPagefooterRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docPagefooterRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: [], - props: { - "aria-braillelabel": null, - "aria-brailleroledescription": null, - "aria-description": null, - "aria-disabled": null, - "aria-errormessage": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docPagefooterRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docPageheaderRole.js -var require_docPageheaderRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docPageheaderRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docPageheaderRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["prohibited"], - prohibitedProps: [], - props: { - "aria-braillelabel": null, - "aria-brailleroledescription": null, - "aria-description": null, - "aria-disabled": null, - "aria-errormessage": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docPageheaderRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docPagelistRole.js -var require_docPagelistRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docPagelistRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docPagelistRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "page-list [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark", "navigation"]] - }; - var _default = exports.default = docPagelistRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docPartRole.js -var require_docPartRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docPartRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docPartRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "part [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docPartRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docPrefaceRole.js -var require_docPrefaceRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docPrefaceRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docPrefaceRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "preface [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docPrefaceRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docPrologueRole.js -var require_docPrologueRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docPrologueRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docPrologueRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "prologue [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark"]] - }; - var _default = exports.default = docPrologueRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docPullquoteRole.js -var require_docPullquoteRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docPullquoteRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docPullquoteRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: {}, - relatedConcepts: [{ - concept: { - name: "pullquote [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["none"]] - }; - var _default = exports.default = docPullquoteRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docQnaRole.js -var require_docQnaRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docQnaRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docQnaRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "qna [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section"]] - }; - var _default = exports.default = docQnaRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docSubtitleRole.js -var require_docSubtitleRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docSubtitleRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docSubtitleRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "subtitle [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "sectionhead"]] - }; - var _default = exports.default = docSubtitleRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docTipRole.js -var require_docTipRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docTipRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docTipRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "help [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "note"]] - }; - var _default = exports.default = docTipRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/dpub/docTocRole.js -var require_docTocRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/dpub/docTocRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var docTocRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - concept: { - name: "toc [EPUB-SSV]" - }, - module: "EPUB" - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "landmark", "navigation"]] - }; - var _default = exports.default = docTocRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/ariaDpubRoles.js -var require_ariaDpubRoles = __commonJS({ - "node_modules/aria-query/lib/etc/roles/ariaDpubRoles.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _docAbstractRole = _interopRequireDefault(require_docAbstractRole()); - var _docAcknowledgmentsRole = _interopRequireDefault(require_docAcknowledgmentsRole()); - var _docAfterwordRole = _interopRequireDefault(require_docAfterwordRole()); - var _docAppendixRole = _interopRequireDefault(require_docAppendixRole()); - var _docBacklinkRole = _interopRequireDefault(require_docBacklinkRole()); - var _docBiblioentryRole = _interopRequireDefault(require_docBiblioentryRole()); - var _docBibliographyRole = _interopRequireDefault(require_docBibliographyRole()); - var _docBibliorefRole = _interopRequireDefault(require_docBibliorefRole()); - var _docChapterRole = _interopRequireDefault(require_docChapterRole()); - var _docColophonRole = _interopRequireDefault(require_docColophonRole()); - var _docConclusionRole = _interopRequireDefault(require_docConclusionRole()); - var _docCoverRole = _interopRequireDefault(require_docCoverRole()); - var _docCreditRole = _interopRequireDefault(require_docCreditRole()); - var _docCreditsRole = _interopRequireDefault(require_docCreditsRole()); - var _docDedicationRole = _interopRequireDefault(require_docDedicationRole()); - var _docEndnoteRole = _interopRequireDefault(require_docEndnoteRole()); - var _docEndnotesRole = _interopRequireDefault(require_docEndnotesRole()); - var _docEpigraphRole = _interopRequireDefault(require_docEpigraphRole()); - var _docEpilogueRole = _interopRequireDefault(require_docEpilogueRole()); - var _docErrataRole = _interopRequireDefault(require_docErrataRole()); - var _docExampleRole = _interopRequireDefault(require_docExampleRole()); - var _docFootnoteRole = _interopRequireDefault(require_docFootnoteRole()); - var _docForewordRole = _interopRequireDefault(require_docForewordRole()); - var _docGlossaryRole = _interopRequireDefault(require_docGlossaryRole()); - var _docGlossrefRole = _interopRequireDefault(require_docGlossrefRole()); - var _docIndexRole = _interopRequireDefault(require_docIndexRole()); - var _docIntroductionRole = _interopRequireDefault(require_docIntroductionRole()); - var _docNoterefRole = _interopRequireDefault(require_docNoterefRole()); - var _docNoticeRole = _interopRequireDefault(require_docNoticeRole()); - var _docPagebreakRole = _interopRequireDefault(require_docPagebreakRole()); - var _docPagefooterRole = _interopRequireDefault(require_docPagefooterRole()); - var _docPageheaderRole = _interopRequireDefault(require_docPageheaderRole()); - var _docPagelistRole = _interopRequireDefault(require_docPagelistRole()); - var _docPartRole = _interopRequireDefault(require_docPartRole()); - var _docPrefaceRole = _interopRequireDefault(require_docPrefaceRole()); - var _docPrologueRole = _interopRequireDefault(require_docPrologueRole()); - var _docPullquoteRole = _interopRequireDefault(require_docPullquoteRole()); - var _docQnaRole = _interopRequireDefault(require_docQnaRole()); - var _docSubtitleRole = _interopRequireDefault(require_docSubtitleRole()); - var _docTipRole = _interopRequireDefault(require_docTipRole()); - var _docTocRole = _interopRequireDefault(require_docTocRole()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - var ariaDpubRoles = [["doc-abstract", _docAbstractRole.default], ["doc-acknowledgments", _docAcknowledgmentsRole.default], ["doc-afterword", _docAfterwordRole.default], ["doc-appendix", _docAppendixRole.default], ["doc-backlink", _docBacklinkRole.default], ["doc-biblioentry", _docBiblioentryRole.default], ["doc-bibliography", _docBibliographyRole.default], ["doc-biblioref", _docBibliorefRole.default], ["doc-chapter", _docChapterRole.default], ["doc-colophon", _docColophonRole.default], ["doc-conclusion", _docConclusionRole.default], ["doc-cover", _docCoverRole.default], ["doc-credit", _docCreditRole.default], ["doc-credits", _docCreditsRole.default], ["doc-dedication", _docDedicationRole.default], ["doc-endnote", _docEndnoteRole.default], ["doc-endnotes", _docEndnotesRole.default], ["doc-epigraph", _docEpigraphRole.default], ["doc-epilogue", _docEpilogueRole.default], ["doc-errata", _docErrataRole.default], ["doc-example", _docExampleRole.default], ["doc-footnote", _docFootnoteRole.default], ["doc-foreword", _docForewordRole.default], ["doc-glossary", _docGlossaryRole.default], ["doc-glossref", _docGlossrefRole.default], ["doc-index", _docIndexRole.default], ["doc-introduction", _docIntroductionRole.default], ["doc-noteref", _docNoterefRole.default], ["doc-notice", _docNoticeRole.default], ["doc-pagebreak", _docPagebreakRole.default], ["doc-pagefooter", _docPagefooterRole.default], ["doc-pageheader", _docPageheaderRole.default], ["doc-pagelist", _docPagelistRole.default], ["doc-part", _docPartRole.default], ["doc-preface", _docPrefaceRole.default], ["doc-prologue", _docPrologueRole.default], ["doc-pullquote", _docPullquoteRole.default], ["doc-qna", _docQnaRole.default], ["doc-subtitle", _docSubtitleRole.default], ["doc-tip", _docTipRole.default], ["doc-toc", _docTocRole.default]]; - var _default = exports.default = ariaDpubRoles; - } -}); - -// node_modules/aria-query/lib/etc/roles/graphics/graphicsDocumentRole.js -var require_graphicsDocumentRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/graphics/graphicsDocumentRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var graphicsDocumentRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - module: "GRAPHICS", - concept: { - name: "graphics-object" - } - }, { - module: "ARIA", - concept: { - name: "img" - } - }, { - module: "ARIA", - concept: { - name: "article" - } - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "document"]] - }; - var _default = exports.default = graphicsDocumentRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/graphics/graphicsObjectRole.js -var require_graphicsObjectRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/graphics/graphicsObjectRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var graphicsObjectRole = { - abstract: false, - accessibleNameRequired: false, - baseConcepts: [], - childrenPresentational: false, - nameFrom: ["author", "contents"], - prohibitedProps: [], - props: { - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [{ - module: "GRAPHICS", - concept: { - name: "graphics-document" - } - }, { - module: "ARIA", - concept: { - name: "group" - } - }, { - module: "ARIA", - concept: { - name: "img" - } - }, { - module: "GRAPHICS", - concept: { - name: "graphics-symbol" - } - }], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "group"]] - }; - var _default = exports.default = graphicsObjectRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/graphics/graphicsSymbolRole.js -var require_graphicsSymbolRole = __commonJS({ - "node_modules/aria-query/lib/etc/roles/graphics/graphicsSymbolRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var graphicsSymbolRole = { - abstract: false, - accessibleNameRequired: true, - baseConcepts: [], - childrenPresentational: true, - nameFrom: ["author"], - prohibitedProps: [], - props: { - "aria-disabled": null, - "aria-errormessage": null, - "aria-expanded": null, - "aria-haspopup": null, - "aria-invalid": null - }, - relatedConcepts: [], - requireContextRole: [], - requiredContextRole: [], - requiredOwnedElements: [], - requiredProps: {}, - superClass: [["roletype", "structure", "section", "img"]] - }; - var _default = exports.default = graphicsSymbolRole; - } -}); - -// node_modules/aria-query/lib/etc/roles/ariaGraphicsRoles.js -var require_ariaGraphicsRoles = __commonJS({ - "node_modules/aria-query/lib/etc/roles/ariaGraphicsRoles.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _graphicsDocumentRole = _interopRequireDefault(require_graphicsDocumentRole()); - var _graphicsObjectRole = _interopRequireDefault(require_graphicsObjectRole()); - var _graphicsSymbolRole = _interopRequireDefault(require_graphicsSymbolRole()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - var ariaGraphicsRoles = [["graphics-document", _graphicsDocumentRole.default], ["graphics-object", _graphicsObjectRole.default], ["graphics-symbol", _graphicsSymbolRole.default]]; - var _default = exports.default = ariaGraphicsRoles; - } -}); - -// node_modules/aria-query/lib/rolesMap.js -var require_rolesMap = __commonJS({ - "node_modules/aria-query/lib/rolesMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _ariaAbstractRoles = _interopRequireDefault(require_ariaAbstractRoles()); - var _ariaLiteralRoles = _interopRequireDefault(require_ariaLiteralRoles()); - var _ariaDpubRoles = _interopRequireDefault(require_ariaDpubRoles()); - var _ariaGraphicsRoles = _interopRequireDefault(require_ariaGraphicsRoles()); - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - function _createForOfIteratorHelper(r, e) { - var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (!t) { - if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { - t && (r = t); - var _n = 0, F = function F2() { - }; - return { s: F, n: function n() { - return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; - }, e: function e2(r2) { - throw r2; - }, f: F }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var o, a = true, u = false; - return { s: function s() { - t = t.call(r); - }, n: function n() { - var r2 = t.next(); - return a = r2.done, r2; - }, e: function e2(r2) { - u = true, o = r2; - }, f: function f() { - try { - a || null == t.return || t.return(); - } finally { - if (u) throw o; - } - } }; - } - function _slicedToArray(r, e) { - return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _unsupportedIterableToArray(r, a) { - if (r) { - if ("string" == typeof r) return _arrayLikeToArray(r, a); - var t = {}.toString.call(r).slice(8, -1); - return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; - } - } - function _arrayLikeToArray(r, a) { - (null == a || a > r.length) && (a = r.length); - for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; - return n; - } - function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, n, i, u, a = [], f = true, o = false; - try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = false; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; - } catch (r2) { - o = true, n = r2; - } finally { - try { - if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; - } finally { - if (o) throw n; - } - } - return a; - } - } - function _arrayWithHoles(r) { - if (Array.isArray(r)) return r; - } - var roles = [].concat(_ariaAbstractRoles.default, _ariaLiteralRoles.default, _ariaDpubRoles.default, _ariaGraphicsRoles.default); - roles.forEach(function(_ref) { - var _ref2 = _slicedToArray(_ref, 2), roleDefinition = _ref2[1]; - var _iterator = _createForOfIteratorHelper(roleDefinition.superClass), _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - var superClassIter = _step.value; - var _iterator2 = _createForOfIteratorHelper(superClassIter), _step2; - try { - var _loop = function _loop2() { - var superClassName = _step2.value; - var superClassRoleTuple = roles.filter(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 1), name = _ref4[0]; - return name === superClassName; - })[0]; - if (superClassRoleTuple) { - var superClassDefinition = superClassRoleTuple[1]; - for (var _i = 0, _Object$keys = Object.keys(superClassDefinition.props); _i < _Object$keys.length; _i++) { - var prop = _Object$keys[_i]; - if ( - // $FlowIssue Accessing the hasOwnProperty on the Object prototype is fine. - !Object.prototype.hasOwnProperty.call(roleDefinition.props, prop) - ) { - roleDefinition.props[prop] = superClassDefinition.props[prop]; - } - } - } - }; - for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { - _loop(); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - }); - var rolesMap = { - entries: function entries() { - return roles; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - var _iterator3 = _createForOfIteratorHelper(roles), _step3; - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) { - var _step3$value = _slicedToArray(_step3.value, 2), key = _step3$value[0], values = _step3$value[1]; - fn.call(thisArg, values, key, roles); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - }, - get: function get(key) { - var item = roles.filter(function(tuple) { - return tuple[0] === key ? true : false; - })[0]; - return item && item[1]; - }, - has: function has(key) { - return !!rolesMap.get(key); - }, - keys: function keys() { - return roles.map(function(_ref5) { - var _ref6 = _slicedToArray(_ref5, 1), key = _ref6[0]; - return key; - }); - }, - values: function values() { - return roles.map(function(_ref7) { - var _ref8 = _slicedToArray(_ref7, 2), values2 = _ref8[1]; - return values2; - }); - } - }; - var _default = exports.default = (0, _iterationDecorator.default)(rolesMap, rolesMap.entries()); - } -}); - -// node_modules/aria-query/lib/elementRoleMap.js -var require_elementRoleMap = __commonJS({ - "node_modules/aria-query/lib/elementRoleMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - var _rolesMap = _interopRequireDefault(require_rolesMap()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - function _slicedToArray(r, e) { - return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _unsupportedIterableToArray(r, a) { - if (r) { - if ("string" == typeof r) return _arrayLikeToArray(r, a); - var t = {}.toString.call(r).slice(8, -1); - return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; - } - } - function _arrayLikeToArray(r, a) { - (null == a || a > r.length) && (a = r.length); - for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; - return n; - } - function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, n, i2, u, a = [], f = true, o = false; - try { - if (i2 = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = false; - } else for (; !(f = (e = i2.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; - } catch (r2) { - o = true, n = r2; - } finally { - try { - if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; - } finally { - if (o) throw n; - } - } - return a; - } - } - function _arrayWithHoles(r) { - if (Array.isArray(r)) return r; - } - var elementRoles = []; - var keys = _rolesMap.default.keys(); - for (i = 0; i < keys.length; i++) { - key = keys[i]; - role = _rolesMap.default.get(key); - if (role) { - concepts = [].concat(role.baseConcepts, role.relatedConcepts); - _loop = function _loop2() { - var relation = concepts[k]; - if (relation.module === "HTML") { - var concept = relation.concept; - if (concept) { - var elementRoleRelation = elementRoles.filter(function(relation2) { - return ariaRoleRelationConceptEquals(relation2[0], concept); - })[0]; - var roles; - if (elementRoleRelation) { - roles = elementRoleRelation[1]; - } else { - roles = []; - } - var isUnique = true; - for (var _i = 0; _i < roles.length; _i++) { - if (roles[_i] === key) { - isUnique = false; - break; - } - } - if (isUnique) { - roles.push(key); - } - if (!elementRoleRelation) { - elementRoles.push([concept, roles]); - } - } - } - }; - for (k = 0; k < concepts.length; k++) { - _loop(); - } - } - } - var key; - var role; - var concepts; - var _loop; - var k; - var i; - var elementRoleMap = { - entries: function entries() { - return elementRoles; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - for (var _i2 = 0, _elementRoles = elementRoles; _i2 < _elementRoles.length; _i2++) { - var _elementRoles$_i = _slicedToArray(_elementRoles[_i2], 2), _key = _elementRoles$_i[0], values = _elementRoles$_i[1]; - fn.call(thisArg, values, _key, elementRoles); - } - }, - get: function get(key2) { - var item = elementRoles.filter(function(tuple) { - return key2.name === tuple[0].name && ariaRoleRelationConceptAttributeEquals(key2.attributes, tuple[0].attributes); - })[0]; - return item && item[1]; - }, - has: function has(key2) { - return !!elementRoleMap.get(key2); - }, - keys: function keys2() { - return elementRoles.map(function(_ref) { - var _ref2 = _slicedToArray(_ref, 1), key2 = _ref2[0]; - return key2; - }); - }, - values: function values() { - return elementRoles.map(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), values2 = _ref4[1]; - return values2; - }); - } - }; - function ariaRoleRelationConceptEquals(a, b) { - return a.name === b.name && ariaRoleRelationConstraintsEquals(a.constraints, b.constraints) && ariaRoleRelationConceptAttributeEquals(a.attributes, b.attributes); - } - function ariaRoleRelationConstraintsEquals(a, b) { - if (a === void 0 && b !== void 0) { - return false; - } - if (a !== void 0 && b === void 0) { - return false; - } - if (a !== void 0 && b !== void 0) { - if (a.length !== b.length) { - return false; - } - for (var _i3 = 0; _i3 < a.length; _i3++) { - if (a[_i3] !== b[_i3]) { - return false; - } - } - } - return true; - } - function ariaRoleRelationConceptAttributeEquals(a, b) { - if (a === void 0 && b !== void 0) { - return false; - } - if (a !== void 0 && b === void 0) { - return false; - } - if (a !== void 0 && b !== void 0) { - if (a.length !== b.length) { - return false; - } - for (var _i4 = 0; _i4 < a.length; _i4++) { - if (a[_i4].name !== b[_i4].name || a[_i4].value !== b[_i4].value) { - return false; - } - if (a[_i4].constraints === void 0 && b[_i4].constraints !== void 0) { - return false; - } - if (a[_i4].constraints !== void 0 && b[_i4].constraints === void 0) { - return false; - } - if (a[_i4].constraints !== void 0 && b[_i4].constraints !== void 0) { - if (a[_i4].constraints.length !== b[_i4].constraints.length) { - return false; - } - for (var j = 0; j < a[_i4].constraints.length; j++) { - if (a[_i4].constraints[j] !== b[_i4].constraints[j]) { - return false; - } - } - } - } - } - return true; - } - var _default = exports.default = (0, _iterationDecorator.default)(elementRoleMap, elementRoleMap.entries()); - } -}); - -// node_modules/aria-query/lib/roleElementMap.js -var require_roleElementMap = __commonJS({ - "node_modules/aria-query/lib/roleElementMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - var _rolesMap = _interopRequireDefault(require_rolesMap()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - function _slicedToArray(r, e) { - return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _unsupportedIterableToArray(r, a) { - if (r) { - if ("string" == typeof r) return _arrayLikeToArray(r, a); - var t = {}.toString.call(r).slice(8, -1); - return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; - } - } - function _arrayLikeToArray(r, a) { - (null == a || a > r.length) && (a = r.length); - for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; - return n; - } - function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, n, i2, u, a = [], f = true, o = false; - try { - if (i2 = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = false; - } else for (; !(f = (e = i2.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; - } catch (r2) { - o = true, n = r2; - } finally { - try { - if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; - } finally { - if (o) throw n; - } - } - return a; - } - } - function _arrayWithHoles(r) { - if (Array.isArray(r)) return r; - } - var roleElement = []; - var keys = _rolesMap.default.keys(); - for (i = 0; i < keys.length; i++) { - key = keys[i]; - role = _rolesMap.default.get(key); - relationConcepts = []; - if (role) { - concepts = [].concat(role.baseConcepts, role.relatedConcepts); - for (k = 0; k < concepts.length; k++) { - relation = concepts[k]; - if (relation.module === "HTML") { - concept = relation.concept; - if (concept != null) { - relationConcepts.push(concept); - } - } - } - if (relationConcepts.length > 0) { - roleElement.push([key, relationConcepts]); - } - } - } - var key; - var role; - var relationConcepts; - var concepts; - var relation; - var concept; - var k; - var i; - var roleElementMap = { - entries: function entries() { - return roleElement; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - for (var _i = 0, _roleElement = roleElement; _i < _roleElement.length; _i++) { - var _roleElement$_i = _slicedToArray(_roleElement[_i], 2), _key = _roleElement$_i[0], values = _roleElement$_i[1]; - fn.call(thisArg, values, _key, roleElement); - } - }, - get: function get(key2) { - var item = roleElement.filter(function(tuple) { - return tuple[0] === key2 ? true : false; - })[0]; - return item && item[1]; - }, - has: function has(key2) { - return !!roleElementMap.get(key2); - }, - keys: function keys2() { - return roleElement.map(function(_ref) { - var _ref2 = _slicedToArray(_ref, 1), key2 = _ref2[0]; - return key2; - }); - }, - values: function values() { - return roleElement.map(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), values2 = _ref4[1]; - return values2; - }); - } - }; - var _default = exports.default = (0, _iterationDecorator.default)(roleElementMap, roleElementMap.entries()); - } -}); - -// node_modules/aria-query/lib/index.js -var require_lib = __commonJS({ - "node_modules/aria-query/lib/index.js"(exports) { - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.roles = exports.roleElements = exports.elementRoles = exports.dom = exports.aria = void 0; - var _ariaPropsMap = _interopRequireDefault(require_ariaPropsMap()); - var _domMap = _interopRequireDefault(require_domMap()); - var _rolesMap = _interopRequireDefault(require_rolesMap()); - var _elementRoleMap = _interopRequireDefault(require_elementRoleMap()); - var _roleElementMap = _interopRequireDefault(require_roleElementMap()); - function _interopRequireDefault(e) { - return e && e.__esModule ? e : { default: e }; - } - var aria = exports.aria = _ariaPropsMap.default; - var dom = exports.dom = _domMap.default; - var roles = exports.roles = _rolesMap.default; - var elementRoles = exports.elementRoles = _elementRoleMap.default; - var roleElements = exports.roleElements = _roleElementMap.default; - } -}); -export default require_lib(); -//# sourceMappingURL=astro___aria-query.js.map diff --git a/site/node_modules/.vite/deps/astro___aria-query.js.map b/site/node_modules/.vite/deps/astro___aria-query.js.map deleted file mode 100644 index 6f737674b1..0000000000 --- a/site/node_modules/.vite/deps/astro___aria-query.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../node_modules/aria-query/lib/util/iteratorProxy.js", "../../../../node_modules/aria-query/lib/util/iterationDecorator.js", "../../../../node_modules/aria-query/lib/ariaPropsMap.js", "../../../../node_modules/aria-query/lib/domMap.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/commandRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/compositeRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/inputRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/landmarkRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/rangeRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/roletypeRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/sectionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/sectionheadRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/selectRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/structureRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/widgetRole.js", "../../../../node_modules/aria-query/lib/etc/roles/abstract/windowRole.js", "../../../../node_modules/aria-query/lib/etc/roles/ariaAbstractRoles.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/alertRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/alertdialogRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/applicationRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/articleRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/bannerRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/blockquoteRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/buttonRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/captionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/cellRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/checkboxRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/codeRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/columnheaderRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/comboboxRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/complementaryRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/contentinfoRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/definitionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/deletionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/dialogRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/directoryRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/documentRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/emphasisRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/feedRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/figureRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/formRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/genericRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/gridRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/gridcellRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/groupRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/headingRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/imgRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/insertionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/linkRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/listRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/listboxRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/listitemRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/logRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/mainRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/markRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/marqueeRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/mathRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/menuRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/menubarRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/menuitemRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/menuitemcheckboxRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/menuitemradioRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/meterRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/navigationRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/noneRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/noteRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/optionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/paragraphRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/presentationRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/progressbarRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/radioRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/radiogroupRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/regionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/rowRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/rowgroupRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/rowheaderRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/scrollbarRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/searchRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/searchboxRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/separatorRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/sliderRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/spinbuttonRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/statusRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/strongRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/subscriptRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/superscriptRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/switchRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/tabRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/tableRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/tablistRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/tabpanelRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/termRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/textboxRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/timeRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/timerRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/toolbarRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/tooltipRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/treeRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/treegridRole.js", "../../../../node_modules/aria-query/lib/etc/roles/literal/treeitemRole.js", "../../../../node_modules/aria-query/lib/etc/roles/ariaLiteralRoles.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docAbstractRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docAcknowledgmentsRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docAfterwordRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docAppendixRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docBacklinkRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docBiblioentryRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docBibliographyRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docBibliorefRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docChapterRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docColophonRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docConclusionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docCoverRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docCreditRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docCreditsRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docDedicationRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docEndnoteRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docEndnotesRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docEpigraphRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docEpilogueRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docErrataRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docExampleRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docFootnoteRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docForewordRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docGlossaryRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docGlossrefRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docIndexRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docIntroductionRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docNoterefRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docNoticeRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docPagebreakRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docPagefooterRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docPageheaderRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docPagelistRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docPartRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docPrefaceRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docPrologueRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docPullquoteRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docQnaRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docSubtitleRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docTipRole.js", "../../../../node_modules/aria-query/lib/etc/roles/dpub/docTocRole.js", "../../../../node_modules/aria-query/lib/etc/roles/ariaDpubRoles.js", "../../../../node_modules/aria-query/lib/etc/roles/graphics/graphicsDocumentRole.js", "../../../../node_modules/aria-query/lib/etc/roles/graphics/graphicsObjectRole.js", "../../../../node_modules/aria-query/lib/etc/roles/graphics/graphicsSymbolRole.js", "../../../../node_modules/aria-query/lib/etc/roles/ariaGraphicsRoles.js", "../../../../node_modules/aria-query/lib/rolesMap.js", "../../../../node_modules/aria-query/lib/elementRoleMap.js", "../../../../node_modules/aria-query/lib/roleElementMap.js", "../../../../node_modules/aria-query/lib/index.js"], - "sourcesContent": ["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n// eslint-disable-next-line no-unused-vars\nfunction iteratorProxy() {\n var values = this;\n var index = 0;\n var iter = {\n '@@iterator': function iterator() {\n return iter;\n },\n next: function next() {\n if (index < values.length) {\n var value = values[index];\n index = index + 1;\n return {\n done: false,\n value: value\n };\n } else {\n return {\n done: true\n };\n }\n }\n };\n return iter;\n}\nvar _default = exports.default = iteratorProxy;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = iterationDecorator;\nvar _iteratorProxy = _interopRequireDefault(require(\"./iteratorProxy\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction iterationDecorator(collection, entries) {\n if (typeof Symbol === 'function' && _typeof(Symbol.iterator) === 'symbol') {\n Object.defineProperty(collection, Symbol.iterator, {\n value: _iteratorProxy.default.bind(entries)\n });\n }\n return collection;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nvar properties = [['aria-activedescendant', {\n 'type': 'id'\n}], ['aria-atomic', {\n 'type': 'boolean'\n}], ['aria-autocomplete', {\n 'type': 'token',\n 'values': ['inline', 'list', 'both', 'none']\n}], ['aria-braillelabel', {\n 'type': 'string'\n}], ['aria-brailleroledescription', {\n 'type': 'string'\n}], ['aria-busy', {\n 'type': 'boolean'\n}], ['aria-checked', {\n 'type': 'tristate'\n}], ['aria-colcount', {\n type: 'integer'\n}], ['aria-colindex', {\n type: 'integer'\n}], ['aria-colspan', {\n type: 'integer'\n}], ['aria-controls', {\n 'type': 'idlist'\n}], ['aria-current', {\n type: 'token',\n values: ['page', 'step', 'location', 'date', 'time', true, false]\n}], ['aria-describedby', {\n 'type': 'idlist'\n}], ['aria-description', {\n 'type': 'string'\n}], ['aria-details', {\n 'type': 'id'\n}], ['aria-disabled', {\n 'type': 'boolean'\n}], ['aria-dropeffect', {\n 'type': 'tokenlist',\n 'values': ['copy', 'execute', 'link', 'move', 'none', 'popup']\n}], ['aria-errormessage', {\n 'type': 'id'\n}], ['aria-expanded', {\n 'type': 'boolean',\n 'allowundefined': true\n}], ['aria-flowto', {\n 'type': 'idlist'\n}], ['aria-grabbed', {\n 'type': 'boolean',\n 'allowundefined': true\n}], ['aria-haspopup', {\n 'type': 'token',\n 'values': [false, true, 'menu', 'listbox', 'tree', 'grid', 'dialog']\n}], ['aria-hidden', {\n 'type': 'boolean',\n 'allowundefined': true\n}], ['aria-invalid', {\n 'type': 'token',\n 'values': ['grammar', false, 'spelling', true]\n}], ['aria-keyshortcuts', {\n type: 'string'\n}], ['aria-label', {\n 'type': 'string'\n}], ['aria-labelledby', {\n 'type': 'idlist'\n}], ['aria-level', {\n 'type': 'integer'\n}], ['aria-live', {\n 'type': 'token',\n 'values': ['assertive', 'off', 'polite']\n}], ['aria-modal', {\n type: 'boolean'\n}], ['aria-multiline', {\n 'type': 'boolean'\n}], ['aria-multiselectable', {\n 'type': 'boolean'\n}], ['aria-orientation', {\n 'type': 'token',\n 'values': ['vertical', 'undefined', 'horizontal']\n}], ['aria-owns', {\n 'type': 'idlist'\n}], ['aria-placeholder', {\n type: 'string'\n}], ['aria-posinset', {\n 'type': 'integer'\n}], ['aria-pressed', {\n 'type': 'tristate'\n}], ['aria-readonly', {\n 'type': 'boolean'\n}], ['aria-relevant', {\n 'type': 'tokenlist',\n 'values': ['additions', 'all', 'removals', 'text']\n}], ['aria-required', {\n 'type': 'boolean'\n}], ['aria-roledescription', {\n type: 'string'\n}], ['aria-rowcount', {\n type: 'integer'\n}], ['aria-rowindex', {\n type: 'integer'\n}], ['aria-rowspan', {\n type: 'integer'\n}], ['aria-selected', {\n 'type': 'boolean',\n 'allowundefined': true\n}], ['aria-setsize', {\n 'type': 'integer'\n}], ['aria-sort', {\n 'type': 'token',\n 'values': ['ascending', 'descending', 'none', 'other']\n}], ['aria-valuemax', {\n 'type': 'number'\n}], ['aria-valuemin', {\n 'type': 'number'\n}], ['aria-valuenow', {\n 'type': 'number'\n}], ['aria-valuetext', {\n 'type': 'string'\n}]];\nvar ariaPropsMap = {\n entries: function entries() {\n return properties;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n for (var _i = 0, _properties = properties; _i < _properties.length; _i++) {\n var _properties$_i = _slicedToArray(_properties[_i], 2),\n key = _properties$_i[0],\n values = _properties$_i[1];\n fn.call(thisArg, values, key, properties);\n }\n },\n get: function get(key) {\n var item = properties.filter(function (tuple) {\n return tuple[0] === key ? true : false;\n })[0];\n return item && item[1];\n },\n has: function has(key) {\n return !!ariaPropsMap.get(key);\n },\n keys: function keys() {\n return properties.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return key;\n });\n },\n values: function values() {\n return properties.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n values = _ref4[1];\n return values;\n });\n }\n};\nvar _default = exports.default = (0, _iterationDecorator.default)(ariaPropsMap, ariaPropsMap.entries());", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nvar dom = [['a', {\n reserved: false\n}], ['abbr', {\n reserved: false\n}], ['acronym', {\n reserved: false\n}], ['address', {\n reserved: false\n}], ['applet', {\n reserved: false\n}], ['area', {\n reserved: false\n}], ['article', {\n reserved: false\n}], ['aside', {\n reserved: false\n}], ['audio', {\n reserved: false\n}], ['b', {\n reserved: false\n}], ['base', {\n reserved: true\n}], ['bdi', {\n reserved: false\n}], ['bdo', {\n reserved: false\n}], ['big', {\n reserved: false\n}], ['blink', {\n reserved: false\n}], ['blockquote', {\n reserved: false\n}], ['body', {\n reserved: false\n}], ['br', {\n reserved: false\n}], ['button', {\n reserved: false\n}], ['canvas', {\n reserved: false\n}], ['caption', {\n reserved: false\n}], ['center', {\n reserved: false\n}], ['cite', {\n reserved: false\n}], ['code', {\n reserved: false\n}], ['col', {\n reserved: true\n}], ['colgroup', {\n reserved: true\n}], ['content', {\n reserved: false\n}], ['data', {\n reserved: false\n}], ['datalist', {\n reserved: false\n}], ['dd', {\n reserved: false\n}], ['del', {\n reserved: false\n}], ['details', {\n reserved: false\n}], ['dfn', {\n reserved: false\n}], ['dialog', {\n reserved: false\n}], ['dir', {\n reserved: false\n}], ['div', {\n reserved: false\n}], ['dl', {\n reserved: false\n}], ['dt', {\n reserved: false\n}], ['em', {\n reserved: false\n}], ['embed', {\n reserved: false\n}], ['fieldset', {\n reserved: false\n}], ['figcaption', {\n reserved: false\n}], ['figure', {\n reserved: false\n}], ['font', {\n reserved: false\n}], ['footer', {\n reserved: false\n}], ['form', {\n reserved: false\n}], ['frame', {\n reserved: false\n}], ['frameset', {\n reserved: false\n}], ['h1', {\n reserved: false\n}], ['h2', {\n reserved: false\n}], ['h3', {\n reserved: false\n}], ['h4', {\n reserved: false\n}], ['h5', {\n reserved: false\n}], ['h6', {\n reserved: false\n}], ['head', {\n reserved: true\n}], ['header', {\n reserved: false\n}], ['hgroup', {\n reserved: false\n}], ['hr', {\n reserved: false\n}], ['html', {\n reserved: true\n}], ['i', {\n reserved: false\n}], ['iframe', {\n reserved: false\n}], ['img', {\n reserved: false\n}], ['input', {\n reserved: false\n}], ['ins', {\n reserved: false\n}], ['kbd', {\n reserved: false\n}], ['keygen', {\n reserved: false\n}], ['label', {\n reserved: false\n}], ['legend', {\n reserved: false\n}], ['li', {\n reserved: false\n}], ['link', {\n reserved: true\n}], ['main', {\n reserved: false\n}], ['map', {\n reserved: false\n}], ['mark', {\n reserved: false\n}], ['marquee', {\n reserved: false\n}], ['menu', {\n reserved: false\n}], ['menuitem', {\n reserved: false\n}], ['meta', {\n reserved: true\n}], ['meter', {\n reserved: false\n}], ['nav', {\n reserved: false\n}], ['noembed', {\n reserved: true\n}], ['noscript', {\n reserved: true\n}], ['object', {\n reserved: false\n}], ['ol', {\n reserved: false\n}], ['optgroup', {\n reserved: false\n}], ['option', {\n reserved: false\n}], ['output', {\n reserved: false\n}], ['p', {\n reserved: false\n}], ['param', {\n reserved: true\n}], ['picture', {\n reserved: true\n}], ['pre', {\n reserved: false\n}], ['progress', {\n reserved: false\n}], ['q', {\n reserved: false\n}], ['rp', {\n reserved: false\n}], ['rt', {\n reserved: false\n}], ['rtc', {\n reserved: false\n}], ['ruby', {\n reserved: false\n}], ['s', {\n reserved: false\n}], ['samp', {\n reserved: false\n}], ['script', {\n reserved: true\n}], ['section', {\n reserved: false\n}], ['select', {\n reserved: false\n}], ['small', {\n reserved: false\n}], ['source', {\n reserved: true\n}], ['spacer', {\n reserved: false\n}], ['span', {\n reserved: false\n}], ['strike', {\n reserved: false\n}], ['strong', {\n reserved: false\n}], ['style', {\n reserved: true\n}], ['sub', {\n reserved: false\n}], ['summary', {\n reserved: false\n}], ['sup', {\n reserved: false\n}], ['table', {\n reserved: false\n}], ['tbody', {\n reserved: false\n}], ['td', {\n reserved: false\n}], ['textarea', {\n reserved: false\n}], ['tfoot', {\n reserved: false\n}], ['th', {\n reserved: false\n}], ['thead', {\n reserved: false\n}], ['time', {\n reserved: false\n}], ['title', {\n reserved: true\n}], ['tr', {\n reserved: false\n}], ['track', {\n reserved: true\n}], ['tt', {\n reserved: false\n}], ['u', {\n reserved: false\n}], ['ul', {\n reserved: false\n}], ['var', {\n reserved: false\n}], ['video', {\n reserved: false\n}], ['wbr', {\n reserved: false\n}], ['xmp', {\n reserved: false\n}]];\nvar domMap = {\n entries: function entries() {\n return dom;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n for (var _i = 0, _dom = dom; _i < _dom.length; _i++) {\n var _dom$_i = _slicedToArray(_dom[_i], 2),\n key = _dom$_i[0],\n values = _dom$_i[1];\n fn.call(thisArg, values, key, dom);\n }\n },\n get: function get(key) {\n var item = dom.filter(function (tuple) {\n return tuple[0] === key ? true : false;\n })[0];\n return item && item[1];\n },\n has: function has(key) {\n return !!domMap.get(key);\n },\n keys: function keys() {\n return dom.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return key;\n });\n },\n values: function values() {\n return dom.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n values = _ref4[1];\n return values;\n });\n }\n};\nvar _default = exports.default = (0, _iterationDecorator.default)(domMap, domMap.entries());", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar commandRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget']]\n};\nvar _default = exports.default = commandRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar compositeRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-activedescendant': null,\n 'aria-disabled': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget']]\n};\nvar _default = exports.default = compositeRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar inputRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null\n },\n relatedConcepts: [{\n concept: {\n name: 'input'\n },\n module: 'XForms'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget']]\n};\nvar _default = exports.default = inputRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar landmarkRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = landmarkRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar rangeRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-valuemax': null,\n 'aria-valuemin': null,\n 'aria-valuenow': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = rangeRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar roletypeRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: [],\n prohibitedProps: [],\n props: {\n 'aria-atomic': null,\n 'aria-busy': null,\n 'aria-controls': null,\n 'aria-current': null,\n 'aria-describedby': null,\n 'aria-details': null,\n 'aria-dropeffect': null,\n 'aria-flowto': null,\n 'aria-grabbed': null,\n 'aria-hidden': null,\n 'aria-keyshortcuts': null,\n 'aria-label': null,\n 'aria-labelledby': null,\n 'aria-live': null,\n 'aria-owns': null,\n 'aria-relevant': null,\n 'aria-roledescription': null\n },\n relatedConcepts: [{\n concept: {\n name: 'role'\n },\n module: 'XHTML'\n }, {\n concept: {\n name: 'type'\n },\n module: 'Dublin Core'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: []\n};\nvar _default = exports.default = roletypeRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar sectionRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: [],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'frontmatter'\n },\n module: 'DTB'\n }, {\n concept: {\n name: 'level'\n },\n module: 'DTB'\n }, {\n concept: {\n name: 'level'\n },\n module: 'SMIL'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = sectionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar sectionheadRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = sectionheadRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar selectRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-orientation': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite'], ['roletype', 'structure', 'section', 'group']]\n};\nvar _default = exports.default = selectRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar structureRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: [],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype']]\n};\nvar _default = exports.default = structureRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar widgetRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: [],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype']]\n};\nvar _default = exports.default = widgetRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar windowRole = {\n abstract: true,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-modal': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype']]\n};\nvar _default = exports.default = windowRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _commandRole = _interopRequireDefault(require(\"./abstract/commandRole\"));\nvar _compositeRole = _interopRequireDefault(require(\"./abstract/compositeRole\"));\nvar _inputRole = _interopRequireDefault(require(\"./abstract/inputRole\"));\nvar _landmarkRole = _interopRequireDefault(require(\"./abstract/landmarkRole\"));\nvar _rangeRole = _interopRequireDefault(require(\"./abstract/rangeRole\"));\nvar _roletypeRole = _interopRequireDefault(require(\"./abstract/roletypeRole\"));\nvar _sectionRole = _interopRequireDefault(require(\"./abstract/sectionRole\"));\nvar _sectionheadRole = _interopRequireDefault(require(\"./abstract/sectionheadRole\"));\nvar _selectRole = _interopRequireDefault(require(\"./abstract/selectRole\"));\nvar _structureRole = _interopRequireDefault(require(\"./abstract/structureRole\"));\nvar _widgetRole = _interopRequireDefault(require(\"./abstract/widgetRole\"));\nvar _windowRole = _interopRequireDefault(require(\"./abstract/windowRole\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar ariaAbstractRoles = [['command', _commandRole.default], ['composite', _compositeRole.default], ['input', _inputRole.default], ['landmark', _landmarkRole.default], ['range', _rangeRole.default], ['roletype', _roletypeRole.default], ['section', _sectionRole.default], ['sectionhead', _sectionheadRole.default], ['select', _selectRole.default], ['structure', _structureRole.default], ['widget', _widgetRole.default], ['window', _windowRole.default]];\nvar _default = exports.default = ariaAbstractRoles;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar alertRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-atomic': 'true',\n 'aria-live': 'assertive'\n },\n relatedConcepts: [{\n concept: {\n name: 'alert'\n },\n module: 'XForms'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = alertRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar alertdialogRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'alert'\n },\n module: 'XForms'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'alert'], ['roletype', 'window', 'dialog']]\n};\nvar _default = exports.default = alertdialogRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar applicationRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-activedescendant': null,\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'Device Independence Delivery Unit'\n }\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = applicationRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar articleRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-posinset': null,\n 'aria-setsize': null\n },\n relatedConcepts: [{\n concept: {\n name: 'article'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'document']]\n};\nvar _default = exports.default = articleRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar bannerRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n constraints: ['scoped to the body element'],\n name: 'header'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = bannerRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar blockquoteRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'blockquote'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = blockquoteRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar buttonRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-pressed': null\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n name: 'type',\n value: 'button'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n name: 'type',\n value: 'image'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n name: 'type',\n value: 'reset'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n name: 'type',\n value: 'submit'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'button'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'trigger'\n },\n module: 'XForms'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'command']]\n};\nvar _default = exports.default = buttonRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar captionRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'caption'\n },\n module: 'HTML'\n }],\n requireContextRole: ['figure', 'grid', 'table'],\n requiredContextRole: ['figure', 'grid', 'table'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = captionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar cellRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-colindex': null,\n 'aria-colspan': null,\n 'aria-rowindex': null,\n 'aria-rowspan': null\n },\n relatedConcepts: [{\n concept: {\n constraints: ['ancestor table element has table role'],\n name: 'td'\n },\n module: 'HTML'\n }],\n requireContextRole: ['row'],\n requiredContextRole: ['row'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = cellRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar checkboxRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-checked': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-invalid': null,\n 'aria-readonly': null,\n 'aria-required': null\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n name: 'type',\n value: 'checkbox'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'option'\n },\n module: 'ARIA'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-checked': null\n },\n superClass: [['roletype', 'widget', 'input']]\n};\nvar _default = exports.default = checkboxRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar codeRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'code'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = codeRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar columnheaderRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-sort': null\n },\n relatedConcepts: [{\n concept: {\n name: 'th'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n name: 'scope',\n value: 'col'\n }],\n name: 'th'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n name: 'scope',\n value: 'colgroup'\n }],\n name: 'th'\n },\n module: 'HTML'\n }],\n requireContextRole: ['row'],\n requiredContextRole: ['row'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'cell'], ['roletype', 'structure', 'section', 'cell', 'gridcell'], ['roletype', 'widget', 'gridcell'], ['roletype', 'structure', 'sectionhead']]\n};\nvar _default = exports.default = columnheaderRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar comboboxRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-activedescendant': null,\n 'aria-autocomplete': null,\n 'aria-errormessage': null,\n 'aria-invalid': null,\n 'aria-readonly': null,\n 'aria-required': null,\n 'aria-expanded': 'false',\n 'aria-haspopup': 'listbox'\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'list'\n }, {\n name: 'type',\n value: 'email'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'list'\n }, {\n name: 'type',\n value: 'search'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'list'\n }, {\n name: 'type',\n value: 'tel'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'list'\n }, {\n name: 'type',\n value: 'text'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'list'\n }, {\n name: 'type',\n value: 'url'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'list'\n }, {\n name: 'type',\n value: 'url'\n }],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['undefined'],\n name: 'multiple'\n }, {\n constraints: ['undefined'],\n name: 'size'\n }],\n constraints: ['the multiple attribute is not set and the size attribute does not have a value greater than 1'],\n name: 'select'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'select'\n },\n module: 'XForms'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-controls': null,\n 'aria-expanded': 'false'\n },\n superClass: [['roletype', 'widget', 'input']]\n};\nvar _default = exports.default = comboboxRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar complementaryRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n constraints: ['scoped to the body element', 'scoped to the main element'],\n name: 'aside'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'aria-label'\n }],\n constraints: ['scoped to a sectioning content element', 'scoped to a sectioning root element other than body'],\n name: 'aside'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'aria-labelledby'\n }],\n constraints: ['scoped to a sectioning content element', 'scoped to a sectioning root element other than body'],\n name: 'aside'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = complementaryRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar contentinfoRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n constraints: ['scoped to the body element'],\n name: 'footer'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = contentinfoRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar definitionRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'dd'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = definitionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar deletionRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'del'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = deletionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar dialogRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'dialog'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'window']]\n};\nvar _default = exports.default = dialogRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar directoryRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n module: 'DAISY Guide'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'list']]\n};\nvar _default = exports.default = directoryRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar documentRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'Device Independence Delivery Unit'\n }\n }, {\n concept: {\n name: 'html'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = documentRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar emphasisRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'em'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = emphasisRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar feedRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['article']],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'list']]\n};\nvar _default = exports.default = feedRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar figureRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'figure'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = figureRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'aria-label'\n }],\n name: 'form'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'aria-labelledby'\n }],\n name: 'form'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'name'\n }],\n name: 'form'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = formRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar genericRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'a'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'area'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'aside'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'b'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'bdo'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'body'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'data'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'div'\n },\n module: 'HTML'\n }, {\n concept: {\n constraints: ['scoped to the main element', 'scoped to a sectioning content element', 'scoped to a sectioning root element other than body'],\n name: 'footer'\n },\n module: 'HTML'\n }, {\n concept: {\n constraints: ['scoped to the main element', 'scoped to a sectioning content element', 'scoped to a sectioning root element other than body'],\n name: 'header'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'hgroup'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'i'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'pre'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'q'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'samp'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'section'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'small'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'span'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'u'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = genericRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar gridRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-multiselectable': null,\n 'aria-readonly': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['row'], ['row', 'rowgroup']],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite'], ['roletype', 'structure', 'section', 'table']]\n};\nvar _default = exports.default = gridRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar gridcellRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null,\n 'aria-readonly': null,\n 'aria-required': null,\n 'aria-selected': null\n },\n relatedConcepts: [{\n concept: {\n constraints: ['ancestor table element has grid role', 'ancestor table element has treegrid role'],\n name: 'td'\n },\n module: 'HTML'\n }],\n requireContextRole: ['row'],\n requiredContextRole: ['row'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'cell'], ['roletype', 'widget']]\n};\nvar _default = exports.default = gridcellRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar groupRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-activedescendant': null,\n 'aria-disabled': null\n },\n relatedConcepts: [{\n concept: {\n name: 'details'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'fieldset'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'optgroup'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'address'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = groupRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar headingRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-level': '2'\n },\n relatedConcepts: [{\n concept: {\n name: 'h1'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'h2'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'h3'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'h4'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'h5'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'h6'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-level': '2'\n },\n superClass: [['roletype', 'structure', 'sectionhead']]\n};\nvar _default = exports.default = headingRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar imgRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'alt'\n }],\n name: 'img'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['undefined'],\n name: 'alt'\n }],\n name: 'img'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'imggroup'\n },\n module: 'DTB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = imgRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar insertionRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'ins'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = insertionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar linkRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-expanded': null,\n 'aria-haspopup': null\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'href'\n }],\n name: 'a'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'href'\n }],\n name: 'area'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'command']]\n};\nvar _default = exports.default = linkRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar listRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'menu'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'ol'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'ul'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['listitem']],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = listRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar listboxRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-invalid': null,\n 'aria-multiselectable': null,\n 'aria-readonly': null,\n 'aria-required': null,\n 'aria-orientation': 'vertical'\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n constraints: ['>1'],\n name: 'size'\n }],\n constraints: ['the size attribute value is greater than 1'],\n name: 'select'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n name: 'multiple'\n }],\n name: 'select'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'datalist'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'list'\n },\n module: 'ARIA'\n }, {\n concept: {\n name: 'select'\n },\n module: 'XForms'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['option', 'group'], ['option']],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite', 'select'], ['roletype', 'structure', 'section', 'group', 'select']]\n};\nvar _default = exports.default = listboxRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar listitemRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-level': null,\n 'aria-posinset': null,\n 'aria-setsize': null\n },\n relatedConcepts: [{\n concept: {\n constraints: ['direct descendant of ol', 'direct descendant of ul', 'direct descendant of menu'],\n name: 'li'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'item'\n },\n module: 'XForms'\n }],\n requireContextRole: ['directory', 'list'],\n requiredContextRole: ['directory', 'list'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = listitemRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar logRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-live': 'polite'\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = logRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar mainRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'main'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = mainRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar markRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: [],\n props: {\n 'aria-braillelabel': null,\n 'aria-brailleroledescription': null,\n 'aria-description': null\n },\n relatedConcepts: [{\n concept: {\n name: 'mark'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = markRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar marqueeRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = marqueeRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar mathRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'math'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = mathRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar menuRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-orientation': 'vertical'\n },\n relatedConcepts: [{\n concept: {\n name: 'MENU'\n },\n module: 'JAPI'\n }, {\n concept: {\n name: 'list'\n },\n module: 'ARIA'\n }, {\n concept: {\n name: 'select'\n },\n module: 'XForms'\n }, {\n concept: {\n name: 'sidebar'\n },\n module: 'DTB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['menuitem', 'group'], ['menuitemradio', 'group'], ['menuitemcheckbox', 'group'], ['menuitem'], ['menuitemcheckbox'], ['menuitemradio']],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite', 'select'], ['roletype', 'structure', 'section', 'group', 'select']]\n};\nvar _default = exports.default = menuRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar menubarRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-orientation': 'horizontal'\n },\n relatedConcepts: [{\n concept: {\n name: 'toolbar'\n },\n module: 'ARIA'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['menuitem', 'group'], ['menuitemradio', 'group'], ['menuitemcheckbox', 'group'], ['menuitem'], ['menuitemcheckbox'], ['menuitemradio']],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite', 'select', 'menu'], ['roletype', 'structure', 'section', 'group', 'select', 'menu']]\n};\nvar _default = exports.default = menubarRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar menuitemRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-posinset': null,\n 'aria-setsize': null\n },\n relatedConcepts: [{\n concept: {\n name: 'MENU_ITEM'\n },\n module: 'JAPI'\n }, {\n concept: {\n name: 'listitem'\n },\n module: 'ARIA'\n }, {\n concept: {\n name: 'option'\n },\n module: 'ARIA'\n }],\n requireContextRole: ['group', 'menu', 'menubar'],\n requiredContextRole: ['group', 'menu', 'menubar'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'command']]\n};\nvar _default = exports.default = menuitemRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar menuitemcheckboxRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'menuitem'\n },\n module: 'ARIA'\n }],\n requireContextRole: ['group', 'menu', 'menubar'],\n requiredContextRole: ['group', 'menu', 'menubar'],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-checked': null\n },\n superClass: [['roletype', 'widget', 'input', 'checkbox'], ['roletype', 'widget', 'command', 'menuitem']]\n};\nvar _default = exports.default = menuitemcheckboxRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar menuitemradioRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'menuitem'\n },\n module: 'ARIA'\n }],\n requireContextRole: ['group', 'menu', 'menubar'],\n requiredContextRole: ['group', 'menu', 'menubar'],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-checked': null\n },\n superClass: [['roletype', 'widget', 'input', 'checkbox', 'menuitemcheckbox'], ['roletype', 'widget', 'command', 'menuitem', 'menuitemcheckbox'], ['roletype', 'widget', 'input', 'radio']]\n};\nvar _default = exports.default = menuitemradioRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar meterRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-valuetext': null,\n 'aria-valuemax': '100',\n 'aria-valuemin': '0'\n },\n relatedConcepts: [{\n concept: {\n name: 'meter'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-valuenow': null\n },\n superClass: [['roletype', 'structure', 'range']]\n};\nvar _default = exports.default = meterRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar navigationRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'nav'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = navigationRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar noneRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: [],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: []\n};\nvar _default = exports.default = noneRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar noteRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = noteRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar optionRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-checked': null,\n 'aria-posinset': null,\n 'aria-setsize': null,\n 'aria-selected': 'false'\n },\n relatedConcepts: [{\n concept: {\n name: 'item'\n },\n module: 'XForms'\n }, {\n concept: {\n name: 'listitem'\n },\n module: 'ARIA'\n }, {\n concept: {\n name: 'option'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-selected': 'false'\n },\n superClass: [['roletype', 'widget', 'input']]\n};\nvar _default = exports.default = optionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar paragraphRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'p'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = paragraphRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar presentationRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n attributes: [{\n name: 'alt',\n value: ''\n }],\n name: 'img'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = presentationRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar progressbarRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-valuetext': null\n },\n relatedConcepts: [{\n concept: {\n name: 'progress'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'status'\n },\n module: 'ARIA'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'range'], ['roletype', 'widget']]\n};\nvar _default = exports.default = progressbarRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar radioRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-checked': null,\n 'aria-posinset': null,\n 'aria-setsize': null\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n name: 'type',\n value: 'radio'\n }],\n name: 'input'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-checked': null\n },\n superClass: [['roletype', 'widget', 'input']]\n};\nvar _default = exports.default = radioRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar radiogroupRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-invalid': null,\n 'aria-readonly': null,\n 'aria-required': null\n },\n relatedConcepts: [{\n concept: {\n name: 'list'\n },\n module: 'ARIA'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['radio']],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite', 'select'], ['roletype', 'structure', 'section', 'group', 'select']]\n};\nvar _default = exports.default = radiogroupRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar regionRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'aria-label'\n }],\n name: 'section'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['set'],\n name: 'aria-labelledby'\n }],\n name: 'section'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'Device Independence Glossart perceivable unit'\n }\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = regionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar rowRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-colindex': null,\n 'aria-expanded': null,\n 'aria-level': null,\n 'aria-posinset': null,\n 'aria-rowindex': null,\n 'aria-selected': null,\n 'aria-setsize': null\n },\n relatedConcepts: [{\n concept: {\n name: 'tr'\n },\n module: 'HTML'\n }],\n requireContextRole: ['grid', 'rowgroup', 'table', 'treegrid'],\n requiredContextRole: ['grid', 'rowgroup', 'table', 'treegrid'],\n requiredOwnedElements: [['cell'], ['columnheader'], ['gridcell'], ['rowheader']],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'group'], ['roletype', 'widget']]\n};\nvar _default = exports.default = rowRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar rowgroupRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'tbody'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'tfoot'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'thead'\n },\n module: 'HTML'\n }],\n requireContextRole: ['grid', 'table', 'treegrid'],\n requiredContextRole: ['grid', 'table', 'treegrid'],\n requiredOwnedElements: [['row']],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = rowgroupRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar rowheaderRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-sort': null\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n name: 'scope',\n value: 'row'\n }],\n name: 'th'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n name: 'scope',\n value: 'rowgroup'\n }],\n name: 'th'\n },\n module: 'HTML'\n }],\n requireContextRole: ['row', 'rowgroup'],\n requiredContextRole: ['row', 'rowgroup'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'cell'], ['roletype', 'structure', 'section', 'cell', 'gridcell'], ['roletype', 'widget', 'gridcell'], ['roletype', 'structure', 'sectionhead']]\n};\nvar _default = exports.default = rowheaderRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar scrollbarRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-valuetext': null,\n 'aria-orientation': 'vertical',\n 'aria-valuemax': '100',\n 'aria-valuemin': '0'\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-controls': null,\n 'aria-valuenow': null\n },\n superClass: [['roletype', 'structure', 'range'], ['roletype', 'widget']]\n};\nvar _default = exports.default = scrollbarRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar searchRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = searchRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar searchboxRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n attributes: [{\n constraints: ['undefined'],\n name: 'list'\n }, {\n name: 'type',\n value: 'search'\n }],\n constraints: ['the list attribute is not set'],\n name: 'input'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'input', 'textbox']]\n};\nvar _default = exports.default = searchboxRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar separatorRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-orientation': 'horizontal',\n 'aria-valuemax': '100',\n 'aria-valuemin': '0',\n 'aria-valuenow': null,\n 'aria-valuetext': null\n },\n relatedConcepts: [{\n concept: {\n name: 'hr'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure']]\n};\nvar _default = exports.default = separatorRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar sliderRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-haspopup': null,\n 'aria-invalid': null,\n 'aria-readonly': null,\n 'aria-valuetext': null,\n 'aria-orientation': 'horizontal',\n 'aria-valuemax': '100',\n 'aria-valuemin': '0'\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n name: 'type',\n value: 'range'\n }],\n name: 'input'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-valuenow': null\n },\n superClass: [['roletype', 'widget', 'input'], ['roletype', 'structure', 'range']]\n};\nvar _default = exports.default = sliderRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar spinbuttonRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-invalid': null,\n 'aria-readonly': null,\n 'aria-required': null,\n 'aria-valuetext': null,\n 'aria-valuenow': '0'\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n name: 'type',\n value: 'number'\n }],\n name: 'input'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite'], ['roletype', 'widget', 'input'], ['roletype', 'structure', 'range']]\n};\nvar _default = exports.default = spinbuttonRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar statusRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-atomic': 'true',\n 'aria-live': 'polite'\n },\n relatedConcepts: [{\n concept: {\n name: 'output'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = statusRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar strongRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'strong'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = strongRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar subscriptRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'sub'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = subscriptRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar superscriptRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: ['aria-label', 'aria-labelledby'],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'sup'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = superscriptRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar switchRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'button'\n },\n module: 'ARIA'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-checked': null\n },\n superClass: [['roletype', 'widget', 'input', 'checkbox']]\n};\nvar _default = exports.default = switchRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar tabRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-posinset': null,\n 'aria-setsize': null,\n 'aria-selected': 'false'\n },\n relatedConcepts: [],\n requireContextRole: ['tablist'],\n requiredContextRole: ['tablist'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'sectionhead'], ['roletype', 'widget']]\n};\nvar _default = exports.default = tabRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar tableRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-colcount': null,\n 'aria-rowcount': null\n },\n relatedConcepts: [{\n concept: {\n name: 'table'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['row'], ['row', 'rowgroup']],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = tableRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar tablistRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-level': null,\n 'aria-multiselectable': null,\n 'aria-orientation': 'horizontal'\n },\n relatedConcepts: [{\n module: 'DAISY',\n concept: {\n name: 'guide'\n }\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['tab']],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite']]\n};\nvar _default = exports.default = tablistRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar tabpanelRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = tabpanelRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar termRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'dfn'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'dt'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = termRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar textboxRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-activedescendant': null,\n 'aria-autocomplete': null,\n 'aria-errormessage': null,\n 'aria-haspopup': null,\n 'aria-invalid': null,\n 'aria-multiline': null,\n 'aria-placeholder': null,\n 'aria-readonly': null,\n 'aria-required': null\n },\n relatedConcepts: [{\n concept: {\n attributes: [{\n constraints: ['undefined'],\n name: 'type'\n }, {\n constraints: ['undefined'],\n name: 'list'\n }],\n constraints: ['the list attribute is not set'],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['undefined'],\n name: 'list'\n }, {\n name: 'type',\n value: 'email'\n }],\n constraints: ['the list attribute is not set'],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['undefined'],\n name: 'list'\n }, {\n name: 'type',\n value: 'tel'\n }],\n constraints: ['the list attribute is not set'],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['undefined'],\n name: 'list'\n }, {\n name: 'type',\n value: 'text'\n }],\n constraints: ['the list attribute is not set'],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n attributes: [{\n constraints: ['undefined'],\n name: 'list'\n }, {\n name: 'type',\n value: 'url'\n }],\n constraints: ['the list attribute is not set'],\n name: 'input'\n },\n module: 'HTML'\n }, {\n concept: {\n name: 'input'\n },\n module: 'XForms'\n }, {\n concept: {\n name: 'textarea'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'input']]\n};\nvar _default = exports.default = textboxRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar timeRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'time'\n },\n module: 'HTML'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = timeRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar timerRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'status']]\n};\nvar _default = exports.default = timerRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar toolbarRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-orientation': 'horizontal'\n },\n relatedConcepts: [{\n concept: {\n name: 'menubar'\n },\n module: 'ARIA'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'group']]\n};\nvar _default = exports.default = toolbarRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar tooltipRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = tooltipRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar treeRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-invalid': null,\n 'aria-multiselectable': null,\n 'aria-required': null,\n 'aria-orientation': 'vertical'\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['treeitem', 'group'], ['treeitem']],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite', 'select'], ['roletype', 'structure', 'section', 'group', 'select']]\n};\nvar _default = exports.default = treeRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar treegridRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['row'], ['row', 'rowgroup']],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'composite', 'grid'], ['roletype', 'structure', 'section', 'table', 'grid'], ['roletype', 'widget', 'composite', 'select', 'tree'], ['roletype', 'structure', 'section', 'group', 'select', 'tree']]\n};\nvar _default = exports.default = treegridRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar treeitemRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-expanded': null,\n 'aria-haspopup': null\n },\n relatedConcepts: [],\n requireContextRole: ['group', 'tree'],\n requiredContextRole: ['group', 'tree'],\n requiredOwnedElements: [],\n requiredProps: {\n 'aria-selected': null\n },\n superClass: [['roletype', 'structure', 'section', 'listitem'], ['roletype', 'widget', 'input', 'option']]\n};\nvar _default = exports.default = treeitemRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _alertRole = _interopRequireDefault(require(\"./literal/alertRole\"));\nvar _alertdialogRole = _interopRequireDefault(require(\"./literal/alertdialogRole\"));\nvar _applicationRole = _interopRequireDefault(require(\"./literal/applicationRole\"));\nvar _articleRole = _interopRequireDefault(require(\"./literal/articleRole\"));\nvar _bannerRole = _interopRequireDefault(require(\"./literal/bannerRole\"));\nvar _blockquoteRole = _interopRequireDefault(require(\"./literal/blockquoteRole\"));\nvar _buttonRole = _interopRequireDefault(require(\"./literal/buttonRole\"));\nvar _captionRole = _interopRequireDefault(require(\"./literal/captionRole\"));\nvar _cellRole = _interopRequireDefault(require(\"./literal/cellRole\"));\nvar _checkboxRole = _interopRequireDefault(require(\"./literal/checkboxRole\"));\nvar _codeRole = _interopRequireDefault(require(\"./literal/codeRole\"));\nvar _columnheaderRole = _interopRequireDefault(require(\"./literal/columnheaderRole\"));\nvar _comboboxRole = _interopRequireDefault(require(\"./literal/comboboxRole\"));\nvar _complementaryRole = _interopRequireDefault(require(\"./literal/complementaryRole\"));\nvar _contentinfoRole = _interopRequireDefault(require(\"./literal/contentinfoRole\"));\nvar _definitionRole = _interopRequireDefault(require(\"./literal/definitionRole\"));\nvar _deletionRole = _interopRequireDefault(require(\"./literal/deletionRole\"));\nvar _dialogRole = _interopRequireDefault(require(\"./literal/dialogRole\"));\nvar _directoryRole = _interopRequireDefault(require(\"./literal/directoryRole\"));\nvar _documentRole = _interopRequireDefault(require(\"./literal/documentRole\"));\nvar _emphasisRole = _interopRequireDefault(require(\"./literal/emphasisRole\"));\nvar _feedRole = _interopRequireDefault(require(\"./literal/feedRole\"));\nvar _figureRole = _interopRequireDefault(require(\"./literal/figureRole\"));\nvar _formRole = _interopRequireDefault(require(\"./literal/formRole\"));\nvar _genericRole = _interopRequireDefault(require(\"./literal/genericRole\"));\nvar _gridRole = _interopRequireDefault(require(\"./literal/gridRole\"));\nvar _gridcellRole = _interopRequireDefault(require(\"./literal/gridcellRole\"));\nvar _groupRole = _interopRequireDefault(require(\"./literal/groupRole\"));\nvar _headingRole = _interopRequireDefault(require(\"./literal/headingRole\"));\nvar _imgRole = _interopRequireDefault(require(\"./literal/imgRole\"));\nvar _insertionRole = _interopRequireDefault(require(\"./literal/insertionRole\"));\nvar _linkRole = _interopRequireDefault(require(\"./literal/linkRole\"));\nvar _listRole = _interopRequireDefault(require(\"./literal/listRole\"));\nvar _listboxRole = _interopRequireDefault(require(\"./literal/listboxRole\"));\nvar _listitemRole = _interopRequireDefault(require(\"./literal/listitemRole\"));\nvar _logRole = _interopRequireDefault(require(\"./literal/logRole\"));\nvar _mainRole = _interopRequireDefault(require(\"./literal/mainRole\"));\nvar _markRole = _interopRequireDefault(require(\"./literal/markRole\"));\nvar _marqueeRole = _interopRequireDefault(require(\"./literal/marqueeRole\"));\nvar _mathRole = _interopRequireDefault(require(\"./literal/mathRole\"));\nvar _menuRole = _interopRequireDefault(require(\"./literal/menuRole\"));\nvar _menubarRole = _interopRequireDefault(require(\"./literal/menubarRole\"));\nvar _menuitemRole = _interopRequireDefault(require(\"./literal/menuitemRole\"));\nvar _menuitemcheckboxRole = _interopRequireDefault(require(\"./literal/menuitemcheckboxRole\"));\nvar _menuitemradioRole = _interopRequireDefault(require(\"./literal/menuitemradioRole\"));\nvar _meterRole = _interopRequireDefault(require(\"./literal/meterRole\"));\nvar _navigationRole = _interopRequireDefault(require(\"./literal/navigationRole\"));\nvar _noneRole = _interopRequireDefault(require(\"./literal/noneRole\"));\nvar _noteRole = _interopRequireDefault(require(\"./literal/noteRole\"));\nvar _optionRole = _interopRequireDefault(require(\"./literal/optionRole\"));\nvar _paragraphRole = _interopRequireDefault(require(\"./literal/paragraphRole\"));\nvar _presentationRole = _interopRequireDefault(require(\"./literal/presentationRole\"));\nvar _progressbarRole = _interopRequireDefault(require(\"./literal/progressbarRole\"));\nvar _radioRole = _interopRequireDefault(require(\"./literal/radioRole\"));\nvar _radiogroupRole = _interopRequireDefault(require(\"./literal/radiogroupRole\"));\nvar _regionRole = _interopRequireDefault(require(\"./literal/regionRole\"));\nvar _rowRole = _interopRequireDefault(require(\"./literal/rowRole\"));\nvar _rowgroupRole = _interopRequireDefault(require(\"./literal/rowgroupRole\"));\nvar _rowheaderRole = _interopRequireDefault(require(\"./literal/rowheaderRole\"));\nvar _scrollbarRole = _interopRequireDefault(require(\"./literal/scrollbarRole\"));\nvar _searchRole = _interopRequireDefault(require(\"./literal/searchRole\"));\nvar _searchboxRole = _interopRequireDefault(require(\"./literal/searchboxRole\"));\nvar _separatorRole = _interopRequireDefault(require(\"./literal/separatorRole\"));\nvar _sliderRole = _interopRequireDefault(require(\"./literal/sliderRole\"));\nvar _spinbuttonRole = _interopRequireDefault(require(\"./literal/spinbuttonRole\"));\nvar _statusRole = _interopRequireDefault(require(\"./literal/statusRole\"));\nvar _strongRole = _interopRequireDefault(require(\"./literal/strongRole\"));\nvar _subscriptRole = _interopRequireDefault(require(\"./literal/subscriptRole\"));\nvar _superscriptRole = _interopRequireDefault(require(\"./literal/superscriptRole\"));\nvar _switchRole = _interopRequireDefault(require(\"./literal/switchRole\"));\nvar _tabRole = _interopRequireDefault(require(\"./literal/tabRole\"));\nvar _tableRole = _interopRequireDefault(require(\"./literal/tableRole\"));\nvar _tablistRole = _interopRequireDefault(require(\"./literal/tablistRole\"));\nvar _tabpanelRole = _interopRequireDefault(require(\"./literal/tabpanelRole\"));\nvar _termRole = _interopRequireDefault(require(\"./literal/termRole\"));\nvar _textboxRole = _interopRequireDefault(require(\"./literal/textboxRole\"));\nvar _timeRole = _interopRequireDefault(require(\"./literal/timeRole\"));\nvar _timerRole = _interopRequireDefault(require(\"./literal/timerRole\"));\nvar _toolbarRole = _interopRequireDefault(require(\"./literal/toolbarRole\"));\nvar _tooltipRole = _interopRequireDefault(require(\"./literal/tooltipRole\"));\nvar _treeRole = _interopRequireDefault(require(\"./literal/treeRole\"));\nvar _treegridRole = _interopRequireDefault(require(\"./literal/treegridRole\"));\nvar _treeitemRole = _interopRequireDefault(require(\"./literal/treeitemRole\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar ariaLiteralRoles = [['alert', _alertRole.default], ['alertdialog', _alertdialogRole.default], ['application', _applicationRole.default], ['article', _articleRole.default], ['banner', _bannerRole.default], ['blockquote', _blockquoteRole.default], ['button', _buttonRole.default], ['caption', _captionRole.default], ['cell', _cellRole.default], ['checkbox', _checkboxRole.default], ['code', _codeRole.default], ['columnheader', _columnheaderRole.default], ['combobox', _comboboxRole.default], ['complementary', _complementaryRole.default], ['contentinfo', _contentinfoRole.default], ['definition', _definitionRole.default], ['deletion', _deletionRole.default], ['dialog', _dialogRole.default], ['directory', _directoryRole.default], ['document', _documentRole.default], ['emphasis', _emphasisRole.default], ['feed', _feedRole.default], ['figure', _figureRole.default], ['form', _formRole.default], ['generic', _genericRole.default], ['grid', _gridRole.default], ['gridcell', _gridcellRole.default], ['group', _groupRole.default], ['heading', _headingRole.default], ['img', _imgRole.default], ['insertion', _insertionRole.default], ['link', _linkRole.default], ['list', _listRole.default], ['listbox', _listboxRole.default], ['listitem', _listitemRole.default], ['log', _logRole.default], ['main', _mainRole.default], ['mark', _markRole.default], ['marquee', _marqueeRole.default], ['math', _mathRole.default], ['menu', _menuRole.default], ['menubar', _menubarRole.default], ['menuitem', _menuitemRole.default], ['menuitemcheckbox', _menuitemcheckboxRole.default], ['menuitemradio', _menuitemradioRole.default], ['meter', _meterRole.default], ['navigation', _navigationRole.default], ['none', _noneRole.default], ['note', _noteRole.default], ['option', _optionRole.default], ['paragraph', _paragraphRole.default], ['presentation', _presentationRole.default], ['progressbar', _progressbarRole.default], ['radio', _radioRole.default], ['radiogroup', _radiogroupRole.default], ['region', _regionRole.default], ['row', _rowRole.default], ['rowgroup', _rowgroupRole.default], ['rowheader', _rowheaderRole.default], ['scrollbar', _scrollbarRole.default], ['search', _searchRole.default], ['searchbox', _searchboxRole.default], ['separator', _separatorRole.default], ['slider', _sliderRole.default], ['spinbutton', _spinbuttonRole.default], ['status', _statusRole.default], ['strong', _strongRole.default], ['subscript', _subscriptRole.default], ['superscript', _superscriptRole.default], ['switch', _switchRole.default], ['tab', _tabRole.default], ['table', _tableRole.default], ['tablist', _tablistRole.default], ['tabpanel', _tabpanelRole.default], ['term', _termRole.default], ['textbox', _textboxRole.default], ['time', _timeRole.default], ['timer', _timerRole.default], ['toolbar', _toolbarRole.default], ['tooltip', _tooltipRole.default], ['tree', _treeRole.default], ['treegrid', _treegridRole.default], ['treeitem', _treeitemRole.default]];\nvar _default = exports.default = ariaLiteralRoles;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docAbstractRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'abstract [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docAbstractRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docAcknowledgmentsRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'acknowledgments [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docAcknowledgmentsRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docAfterwordRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'afterword [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docAfterwordRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docAppendixRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'appendix [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docAppendixRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docBacklinkRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'referrer [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'command', 'link']]\n};\nvar _default = exports.default = docBacklinkRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docBiblioentryRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'EPUB biblioentry [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: ['doc-bibliography'],\n requiredContextRole: ['doc-bibliography'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'listitem']]\n};\nvar _default = exports.default = docBiblioentryRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docBibliographyRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'bibliography [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['doc-biblioentry']],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docBibliographyRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docBibliorefRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'biblioref [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'command', 'link']]\n};\nvar _default = exports.default = docBibliorefRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docChapterRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'chapter [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docChapterRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docColophonRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'colophon [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docColophonRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docConclusionRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'conclusion [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docConclusionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docCoverRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'cover [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'img']]\n};\nvar _default = exports.default = docCoverRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docCreditRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'credit [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docCreditRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docCreditsRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'credits [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docCreditsRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docDedicationRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'dedication [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docDedicationRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docEndnoteRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'rearnote [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: ['doc-endnotes'],\n requiredContextRole: ['doc-endnotes'],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'listitem']]\n};\nvar _default = exports.default = docEndnoteRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docEndnotesRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'rearnotes [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['doc-endnote']],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docEndnotesRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docEpigraphRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'epigraph [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docEpigraphRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docEpilogueRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'epilogue [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docEpilogueRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docErrataRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'errata [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docErrataRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docExampleRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docExampleRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docFootnoteRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'footnote [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docFootnoteRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docForewordRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'foreword [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docForewordRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docGlossaryRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'glossary [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [['definition'], ['term']],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docGlossaryRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docGlossrefRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'glossref [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'command', 'link']]\n};\nvar _default = exports.default = docGlossrefRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docIndexRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'index [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark', 'navigation']]\n};\nvar _default = exports.default = docIndexRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docIntroductionRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'introduction [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docIntroductionRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docNoterefRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'noteref [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'widget', 'command', 'link']]\n};\nvar _default = exports.default = docNoterefRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docNoticeRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'notice [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'note']]\n};\nvar _default = exports.default = docNoticeRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docPagebreakRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'pagebreak [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'separator']]\n};\nvar _default = exports.default = docPagebreakRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docPagefooterRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: [],\n props: {\n 'aria-braillelabel': null,\n 'aria-brailleroledescription': null,\n 'aria-description': null,\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docPagefooterRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docPageheaderRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['prohibited'],\n prohibitedProps: [],\n props: {\n 'aria-braillelabel': null,\n 'aria-brailleroledescription': null,\n 'aria-description': null,\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docPageheaderRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docPagelistRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'page-list [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark', 'navigation']]\n};\nvar _default = exports.default = docPagelistRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docPartRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'part [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docPartRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docPrefaceRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'preface [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docPrefaceRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docPrologueRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'prologue [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark']]\n};\nvar _default = exports.default = docPrologueRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docPullquoteRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {},\n relatedConcepts: [{\n concept: {\n name: 'pullquote [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['none']]\n};\nvar _default = exports.default = docPullquoteRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docQnaRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'qna [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section']]\n};\nvar _default = exports.default = docQnaRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docSubtitleRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'subtitle [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'sectionhead']]\n};\nvar _default = exports.default = docSubtitleRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docTipRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'help [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'note']]\n};\nvar _default = exports.default = docTipRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar docTocRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n concept: {\n name: 'toc [EPUB-SSV]'\n },\n module: 'EPUB'\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'landmark', 'navigation']]\n};\nvar _default = exports.default = docTocRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _docAbstractRole = _interopRequireDefault(require(\"./dpub/docAbstractRole\"));\nvar _docAcknowledgmentsRole = _interopRequireDefault(require(\"./dpub/docAcknowledgmentsRole\"));\nvar _docAfterwordRole = _interopRequireDefault(require(\"./dpub/docAfterwordRole\"));\nvar _docAppendixRole = _interopRequireDefault(require(\"./dpub/docAppendixRole\"));\nvar _docBacklinkRole = _interopRequireDefault(require(\"./dpub/docBacklinkRole\"));\nvar _docBiblioentryRole = _interopRequireDefault(require(\"./dpub/docBiblioentryRole\"));\nvar _docBibliographyRole = _interopRequireDefault(require(\"./dpub/docBibliographyRole\"));\nvar _docBibliorefRole = _interopRequireDefault(require(\"./dpub/docBibliorefRole\"));\nvar _docChapterRole = _interopRequireDefault(require(\"./dpub/docChapterRole\"));\nvar _docColophonRole = _interopRequireDefault(require(\"./dpub/docColophonRole\"));\nvar _docConclusionRole = _interopRequireDefault(require(\"./dpub/docConclusionRole\"));\nvar _docCoverRole = _interopRequireDefault(require(\"./dpub/docCoverRole\"));\nvar _docCreditRole = _interopRequireDefault(require(\"./dpub/docCreditRole\"));\nvar _docCreditsRole = _interopRequireDefault(require(\"./dpub/docCreditsRole\"));\nvar _docDedicationRole = _interopRequireDefault(require(\"./dpub/docDedicationRole\"));\nvar _docEndnoteRole = _interopRequireDefault(require(\"./dpub/docEndnoteRole\"));\nvar _docEndnotesRole = _interopRequireDefault(require(\"./dpub/docEndnotesRole\"));\nvar _docEpigraphRole = _interopRequireDefault(require(\"./dpub/docEpigraphRole\"));\nvar _docEpilogueRole = _interopRequireDefault(require(\"./dpub/docEpilogueRole\"));\nvar _docErrataRole = _interopRequireDefault(require(\"./dpub/docErrataRole\"));\nvar _docExampleRole = _interopRequireDefault(require(\"./dpub/docExampleRole\"));\nvar _docFootnoteRole = _interopRequireDefault(require(\"./dpub/docFootnoteRole\"));\nvar _docForewordRole = _interopRequireDefault(require(\"./dpub/docForewordRole\"));\nvar _docGlossaryRole = _interopRequireDefault(require(\"./dpub/docGlossaryRole\"));\nvar _docGlossrefRole = _interopRequireDefault(require(\"./dpub/docGlossrefRole\"));\nvar _docIndexRole = _interopRequireDefault(require(\"./dpub/docIndexRole\"));\nvar _docIntroductionRole = _interopRequireDefault(require(\"./dpub/docIntroductionRole\"));\nvar _docNoterefRole = _interopRequireDefault(require(\"./dpub/docNoterefRole\"));\nvar _docNoticeRole = _interopRequireDefault(require(\"./dpub/docNoticeRole\"));\nvar _docPagebreakRole = _interopRequireDefault(require(\"./dpub/docPagebreakRole\"));\nvar _docPagefooterRole = _interopRequireDefault(require(\"./dpub/docPagefooterRole\"));\nvar _docPageheaderRole = _interopRequireDefault(require(\"./dpub/docPageheaderRole\"));\nvar _docPagelistRole = _interopRequireDefault(require(\"./dpub/docPagelistRole\"));\nvar _docPartRole = _interopRequireDefault(require(\"./dpub/docPartRole\"));\nvar _docPrefaceRole = _interopRequireDefault(require(\"./dpub/docPrefaceRole\"));\nvar _docPrologueRole = _interopRequireDefault(require(\"./dpub/docPrologueRole\"));\nvar _docPullquoteRole = _interopRequireDefault(require(\"./dpub/docPullquoteRole\"));\nvar _docQnaRole = _interopRequireDefault(require(\"./dpub/docQnaRole\"));\nvar _docSubtitleRole = _interopRequireDefault(require(\"./dpub/docSubtitleRole\"));\nvar _docTipRole = _interopRequireDefault(require(\"./dpub/docTipRole\"));\nvar _docTocRole = _interopRequireDefault(require(\"./dpub/docTocRole\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar ariaDpubRoles = [['doc-abstract', _docAbstractRole.default], ['doc-acknowledgments', _docAcknowledgmentsRole.default], ['doc-afterword', _docAfterwordRole.default], ['doc-appendix', _docAppendixRole.default], ['doc-backlink', _docBacklinkRole.default], ['doc-biblioentry', _docBiblioentryRole.default], ['doc-bibliography', _docBibliographyRole.default], ['doc-biblioref', _docBibliorefRole.default], ['doc-chapter', _docChapterRole.default], ['doc-colophon', _docColophonRole.default], ['doc-conclusion', _docConclusionRole.default], ['doc-cover', _docCoverRole.default], ['doc-credit', _docCreditRole.default], ['doc-credits', _docCreditsRole.default], ['doc-dedication', _docDedicationRole.default], ['doc-endnote', _docEndnoteRole.default], ['doc-endnotes', _docEndnotesRole.default], ['doc-epigraph', _docEpigraphRole.default], ['doc-epilogue', _docEpilogueRole.default], ['doc-errata', _docErrataRole.default], ['doc-example', _docExampleRole.default], ['doc-footnote', _docFootnoteRole.default], ['doc-foreword', _docForewordRole.default], ['doc-glossary', _docGlossaryRole.default], ['doc-glossref', _docGlossrefRole.default], ['doc-index', _docIndexRole.default], ['doc-introduction', _docIntroductionRole.default], ['doc-noteref', _docNoterefRole.default], ['doc-notice', _docNoticeRole.default], ['doc-pagebreak', _docPagebreakRole.default], ['doc-pagefooter', _docPagefooterRole.default], ['doc-pageheader', _docPageheaderRole.default], ['doc-pagelist', _docPagelistRole.default], ['doc-part', _docPartRole.default], ['doc-preface', _docPrefaceRole.default], ['doc-prologue', _docPrologueRole.default], ['doc-pullquote', _docPullquoteRole.default], ['doc-qna', _docQnaRole.default], ['doc-subtitle', _docSubtitleRole.default], ['doc-tip', _docTipRole.default], ['doc-toc', _docTocRole.default]];\nvar _default = exports.default = ariaDpubRoles;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar graphicsDocumentRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n module: 'GRAPHICS',\n concept: {\n name: 'graphics-object'\n }\n }, {\n module: 'ARIA',\n concept: {\n name: 'img'\n }\n }, {\n module: 'ARIA',\n concept: {\n name: 'article'\n }\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'document']]\n};\nvar _default = exports.default = graphicsDocumentRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar graphicsObjectRole = {\n abstract: false,\n accessibleNameRequired: false,\n baseConcepts: [],\n childrenPresentational: false,\n nameFrom: ['author', 'contents'],\n prohibitedProps: [],\n props: {\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [{\n module: 'GRAPHICS',\n concept: {\n name: 'graphics-document'\n }\n }, {\n module: 'ARIA',\n concept: {\n name: 'group'\n }\n }, {\n module: 'ARIA',\n concept: {\n name: 'img'\n }\n }, {\n module: 'GRAPHICS',\n concept: {\n name: 'graphics-symbol'\n }\n }],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'group']]\n};\nvar _default = exports.default = graphicsObjectRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar graphicsSymbolRole = {\n abstract: false,\n accessibleNameRequired: true,\n baseConcepts: [],\n childrenPresentational: true,\n nameFrom: ['author'],\n prohibitedProps: [],\n props: {\n 'aria-disabled': null,\n 'aria-errormessage': null,\n 'aria-expanded': null,\n 'aria-haspopup': null,\n 'aria-invalid': null\n },\n relatedConcepts: [],\n requireContextRole: [],\n requiredContextRole: [],\n requiredOwnedElements: [],\n requiredProps: {},\n superClass: [['roletype', 'structure', 'section', 'img']]\n};\nvar _default = exports.default = graphicsSymbolRole;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _graphicsDocumentRole = _interopRequireDefault(require(\"./graphics/graphicsDocumentRole\"));\nvar _graphicsObjectRole = _interopRequireDefault(require(\"./graphics/graphicsObjectRole\"));\nvar _graphicsSymbolRole = _interopRequireDefault(require(\"./graphics/graphicsSymbolRole\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar ariaGraphicsRoles = [['graphics-document', _graphicsDocumentRole.default], ['graphics-object', _graphicsObjectRole.default], ['graphics-symbol', _graphicsSymbolRole.default]];\nvar _default = exports.default = ariaGraphicsRoles;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _ariaAbstractRoles = _interopRequireDefault(require(\"./etc/roles/ariaAbstractRoles\"));\nvar _ariaLiteralRoles = _interopRequireDefault(require(\"./etc/roles/ariaLiteralRoles\"));\nvar _ariaDpubRoles = _interopRequireDefault(require(\"./etc/roles/ariaDpubRoles\"));\nvar _ariaGraphicsRoles = _interopRequireDefault(require(\"./etc/roles/ariaGraphicsRoles\"));\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nvar roles = [].concat(_ariaAbstractRoles.default, _ariaLiteralRoles.default, _ariaDpubRoles.default, _ariaGraphicsRoles.default);\nroles.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n roleDefinition = _ref2[1];\n // Conglomerate the properties\n var _iterator = _createForOfIteratorHelper(roleDefinition.superClass),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var superClassIter = _step.value;\n var _iterator2 = _createForOfIteratorHelper(superClassIter),\n _step2;\n try {\n var _loop = function _loop() {\n var superClassName = _step2.value;\n var superClassRoleTuple = roles.filter(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 1),\n name = _ref4[0];\n return name === superClassName;\n })[0];\n if (superClassRoleTuple) {\n var superClassDefinition = superClassRoleTuple[1];\n for (var _i = 0, _Object$keys = Object.keys(superClassDefinition.props); _i < _Object$keys.length; _i++) {\n var prop = _Object$keys[_i];\n if (\n // $FlowIssue Accessing the hasOwnProperty on the Object prototype is fine.\n !Object.prototype.hasOwnProperty.call(roleDefinition.props, prop)) {\n // $FlowIgnore assigning without an index signature is fine\n roleDefinition.props[prop] = superClassDefinition.props[prop];\n }\n }\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n});\nvar rolesMap = {\n entries: function entries() {\n return roles;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var _iterator3 = _createForOfIteratorHelper(roles),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _step3$value = _slicedToArray(_step3.value, 2),\n key = _step3$value[0],\n values = _step3$value[1];\n fn.call(thisArg, values, key, roles);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n },\n get: function get(key) {\n var item = roles.filter(function (tuple) {\n return tuple[0] === key ? true : false;\n })[0];\n return item && item[1];\n },\n has: function has(key) {\n return !!rolesMap.get(key);\n },\n keys: function keys() {\n return roles.map(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 1),\n key = _ref6[0];\n return key;\n });\n },\n values: function values() {\n return roles.map(function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n values = _ref8[1];\n return values;\n });\n }\n};\nvar _default = exports.default = (0, _iterationDecorator.default)(rolesMap, rolesMap.entries());", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nvar _rolesMap = _interopRequireDefault(require(\"./rolesMap\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nvar elementRoles = [];\nvar keys = _rolesMap.default.keys();\nfor (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var role = _rolesMap.default.get(key);\n if (role) {\n var concepts = [].concat(role.baseConcepts, role.relatedConcepts);\n var _loop = function _loop() {\n var relation = concepts[k];\n if (relation.module === 'HTML') {\n var concept = relation.concept;\n if (concept) {\n var elementRoleRelation = elementRoles.filter(function (relation) {\n return ariaRoleRelationConceptEquals(relation[0], concept);\n })[0];\n var roles;\n if (elementRoleRelation) {\n roles = elementRoleRelation[1];\n } else {\n roles = [];\n }\n var isUnique = true;\n for (var _i = 0; _i < roles.length; _i++) {\n if (roles[_i] === key) {\n isUnique = false;\n break;\n }\n }\n if (isUnique) {\n roles.push(key);\n }\n if (!elementRoleRelation) {\n elementRoles.push([concept, roles]);\n }\n }\n }\n };\n for (var k = 0; k < concepts.length; k++) {\n _loop();\n }\n }\n}\nvar elementRoleMap = {\n entries: function entries() {\n return elementRoles;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n for (var _i2 = 0, _elementRoles = elementRoles; _i2 < _elementRoles.length; _i2++) {\n var _elementRoles$_i = _slicedToArray(_elementRoles[_i2], 2),\n _key = _elementRoles$_i[0],\n values = _elementRoles$_i[1];\n fn.call(thisArg, values, _key, elementRoles);\n }\n },\n get: function get(key) {\n var item = elementRoles.filter(function (tuple) {\n return key.name === tuple[0].name && ariaRoleRelationConceptAttributeEquals(key.attributes, tuple[0].attributes);\n })[0];\n return item && item[1];\n },\n has: function has(key) {\n return !!elementRoleMap.get(key);\n },\n keys: function keys() {\n return elementRoles.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return key;\n });\n },\n values: function values() {\n return elementRoles.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n values = _ref4[1];\n return values;\n });\n }\n};\nfunction ariaRoleRelationConceptEquals(a, b) {\n return a.name === b.name && ariaRoleRelationConstraintsEquals(a.constraints, b.constraints) && ariaRoleRelationConceptAttributeEquals(a.attributes, b.attributes);\n}\nfunction ariaRoleRelationConstraintsEquals(a, b) {\n if (a === undefined && b !== undefined) {\n return false;\n }\n if (a !== undefined && b === undefined) {\n return false;\n }\n if (a !== undefined && b !== undefined) {\n if (a.length !== b.length) {\n return false;\n }\n for (var _i3 = 0; _i3 < a.length; _i3++) {\n if (a[_i3] !== b[_i3]) {\n return false;\n }\n }\n }\n return true;\n}\nfunction ariaRoleRelationConceptAttributeEquals(a, b) {\n if (a === undefined && b !== undefined) {\n return false;\n }\n if (a !== undefined && b === undefined) {\n return false;\n }\n if (a !== undefined && b !== undefined) {\n if (a.length !== b.length) {\n return false;\n }\n for (var _i4 = 0; _i4 < a.length; _i4++) {\n if (a[_i4].name !== b[_i4].name || a[_i4].value !== b[_i4].value) {\n return false;\n }\n if (a[_i4].constraints === undefined && b[_i4].constraints !== undefined) {\n return false;\n }\n if (a[_i4].constraints !== undefined && b[_i4].constraints === undefined) {\n return false;\n }\n if (a[_i4].constraints !== undefined && b[_i4].constraints !== undefined) {\n if (a[_i4].constraints.length !== b[_i4].constraints.length) {\n return false;\n }\n for (var j = 0; j < a[_i4].constraints.length; j++) {\n if (a[_i4].constraints[j] !== b[_i4].constraints[j]) {\n return false;\n }\n }\n }\n }\n }\n return true;\n}\nvar _default = exports.default = (0, _iterationDecorator.default)(elementRoleMap, elementRoleMap.entries());", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nvar _rolesMap = _interopRequireDefault(require(\"./rolesMap\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nvar roleElement = [];\nvar keys = _rolesMap.default.keys();\nfor (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var role = _rolesMap.default.get(key);\n var relationConcepts = [];\n if (role) {\n var concepts = [].concat(role.baseConcepts, role.relatedConcepts);\n for (var k = 0; k < concepts.length; k++) {\n var relation = concepts[k];\n if (relation.module === 'HTML') {\n var concept = relation.concept;\n if (concept != null) {\n relationConcepts.push(concept);\n }\n }\n }\n if (relationConcepts.length > 0) {\n roleElement.push([key, relationConcepts]);\n }\n }\n}\nvar roleElementMap = {\n entries: function entries() {\n return roleElement;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n for (var _i = 0, _roleElement = roleElement; _i < _roleElement.length; _i++) {\n var _roleElement$_i = _slicedToArray(_roleElement[_i], 2),\n _key = _roleElement$_i[0],\n values = _roleElement$_i[1];\n fn.call(thisArg, values, _key, roleElement);\n }\n },\n get: function get(key) {\n var item = roleElement.filter(function (tuple) {\n return tuple[0] === key ? true : false;\n })[0];\n return item && item[1];\n },\n has: function has(key) {\n return !!roleElementMap.get(key);\n },\n keys: function keys() {\n return roleElement.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return key;\n });\n },\n values: function values() {\n return roleElement.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n values = _ref4[1];\n return values;\n });\n }\n};\nvar _default = exports.default = (0, _iterationDecorator.default)(roleElementMap, roleElementMap.entries());", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.roles = exports.roleElements = exports.elementRoles = exports.dom = exports.aria = void 0;\nvar _ariaPropsMap = _interopRequireDefault(require(\"./ariaPropsMap\"));\nvar _domMap = _interopRequireDefault(require(\"./domMap\"));\nvar _rolesMap = _interopRequireDefault(require(\"./rolesMap\"));\nvar _elementRoleMap = _interopRequireDefault(require(\"./elementRoleMap\"));\nvar _roleElementMap = _interopRequireDefault(require(\"./roleElementMap\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar aria = exports.aria = _ariaPropsMap.default;\nvar dom = exports.dom = _domMap.default;\nvar roles = exports.roles = _rolesMap.default;\nvar elementRoles = exports.elementRoles = _elementRoleMap.default;\nvar roleElements = exports.roleElements = _roleElementMap.default;"], - "mappings": "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", - "names": ["o", "r", "values", "r", "values", "F", "e", "r", "_loop", "values", "i", "r", "_loop", "relation", "key", "keys", "values", "i", "r", "key", "keys", "values"] -} diff --git a/site/node_modules/.vite/deps/astro___axobject-query.js b/site/node_modules/.vite/deps/astro___axobject-query.js deleted file mode 100644 index 3b225bf29c..0000000000 --- a/site/node_modules/.vite/deps/astro___axobject-query.js +++ /dev/null @@ -1,3754 +0,0 @@ -import { - __commonJS -} from "./chunk-BUSYA2B4.js"; - -// node_modules/axobject-query/lib/util/iteratorProxy.js -var require_iteratorProxy = __commonJS({ - "node_modules/axobject-query/lib/util/iteratorProxy.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - function iteratorProxy() { - var values = this; - var index = 0; - var iter = { - "@@iterator": function iterator() { - return iter; - }, - next: function next() { - if (index < values.length) { - var value = values[index]; - index = index + 1; - return { - done: false, - value - }; - } else { - return { - done: true - }; - } - } - }; - return iter; - } - var _default = iteratorProxy; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/util/iterationDecorator.js -var require_iterationDecorator = __commonJS({ - "node_modules/axobject-query/lib/util/iterationDecorator.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = iterationDecorator; - var _iteratorProxy = _interopRequireDefault(require_iteratorProxy()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _typeof(obj) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { - return typeof obj2; - } : function(obj2) { - return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }, _typeof(obj); - } - function iterationDecorator(collection, entries) { - if (typeof Symbol === "function" && _typeof(Symbol.iterator) === "symbol") { - Object.defineProperty(collection, Symbol.iterator, { - value: _iteratorProxy.default.bind(entries) - }); - } - return collection; - } - } -}); - -// node_modules/axobject-query/lib/etc/objects/AbbrRole.js -var require_AbbrRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/AbbrRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var AbbrRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "abbr" - } - }], - type: "structure" - }; - var _default = AbbrRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/AlertDialogRole.js -var require_AlertDialogRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/AlertDialogRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var AlertDialogRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "alertdialog" - } - }], - type: "window" - }; - var _default = AlertDialogRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/AlertRole.js -var require_AlertRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/AlertRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var AlertRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "alert" - } - }], - type: "structure" - }; - var _default = AlertRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/AnnotationRole.js -var require_AnnotationRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/AnnotationRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var AnnotationRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = AnnotationRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ApplicationRole.js -var require_ApplicationRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ApplicationRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ApplicationRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "application" - } - }], - type: "window" - }; - var _default = ApplicationRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ArticleRole.js -var require_ArticleRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ArticleRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ArticleRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "article" - } - }, { - module: "HTML", - concept: { - name: "article" - } - }], - type: "structure" - }; - var _default = ArticleRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/AudioRole.js -var require_AudioRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/AudioRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var AudioRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "audio" - } - }], - type: "widget" - }; - var _default = AudioRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/BannerRole.js -var require_BannerRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/BannerRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var BannerRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "banner" - } - }], - type: "structure" - }; - var _default = BannerRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/BlockquoteRole.js -var require_BlockquoteRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/BlockquoteRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var BlockquoteRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "blockquote" - } - }], - type: "structure" - }; - var _default = BlockquoteRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/BusyIndicatorRole.js -var require_BusyIndicatorRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/BusyIndicatorRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var BusyIndicatorRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - attributes: [{ - name: "aria-busy", - value: "true" - }] - } - }], - type: "widget" - }; - var _default = BusyIndicatorRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ButtonRole.js -var require_ButtonRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ButtonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ButtonRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "button" - } - }, { - module: "HTML", - concept: { - name: "button" - } - }], - type: "widget" - }; - var _default = ButtonRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/CanvasRole.js -var require_CanvasRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/CanvasRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var CanvasRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "canvas" - } - }], - type: "widget" - }; - var _default = CanvasRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/CaptionRole.js -var require_CaptionRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/CaptionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var CaptionRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "caption" - } - }], - type: "structure" - }; - var _default = CaptionRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/CellRole.js -var require_CellRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/CellRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var CellRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "cell" - } - }, { - module: "ARIA", - concept: { - name: "gridcell" - } - }, { - module: "HTML", - concept: { - name: "td" - } - }], - type: "widget" - }; - var _default = CellRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/CheckBoxRole.js -var require_CheckBoxRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/CheckBoxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var CheckBoxRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "checkbox" - } - }, { - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "checkbox" - }] - } - }], - type: "widget" - }; - var _default = CheckBoxRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ColorWellRole.js -var require_ColorWellRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ColorWellRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ColorWellRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "color" - }] - } - }], - type: "widget" - }; - var _default = ColorWellRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ColumnHeaderRole.js -var require_ColumnHeaderRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ColumnHeaderRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ColumnHeaderRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "columnheader" - } - }, { - module: "HTML", - concept: { - name: "th" - } - }], - type: "widget" - }; - var _default = ColumnHeaderRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ColumnRole.js -var require_ColumnRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ColumnRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ColumnRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = ColumnRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ComboBoxRole.js -var require_ComboBoxRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ComboBoxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ComboBoxRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "combobox" - } - }, { - module: "HTML", - concept: { - name: "select" - } - }], - type: "widget" - }; - var _default = ComboBoxRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ComplementaryRole.js -var require_ComplementaryRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ComplementaryRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ComplementaryRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "complementary" - } - }], - type: "structure" - }; - var _default = ComplementaryRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ContentInfoRole.js -var require_ContentInfoRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ContentInfoRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ContentInfoRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "structureinfo" - } - }], - type: "structure" - }; - var _default = ContentInfoRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DateRole.js -var require_DateRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DateRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DateRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "date" - }] - } - }], - type: "widget" - }; - var _default = DateRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DateTimeRole.js -var require_DateTimeRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DateTimeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DateTimeRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "datetime" - }] - } - }], - type: "widget" - }; - var _default = DateTimeRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DefinitionRole.js -var require_DefinitionRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DefinitionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DefinitionRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "dfn" - } - }], - type: "structure" - }; - var _default = DefinitionRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DescriptionListDetailRole.js -var require_DescriptionListDetailRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DescriptionListDetailRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DescriptionListDetailRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "dd" - } - }], - type: "structure" - }; - var _default = DescriptionListDetailRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DescriptionListRole.js -var require_DescriptionListRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DescriptionListRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DescriptionListRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "dl" - } - }], - type: "structure" - }; - var _default = DescriptionListRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DescriptionListTermRole.js -var require_DescriptionListTermRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DescriptionListTermRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DescriptionListTermRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "dt" - } - }], - type: "structure" - }; - var _default = DescriptionListTermRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DetailsRole.js -var require_DetailsRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DetailsRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DetailsRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "details" - } - }], - type: "structure" - }; - var _default = DetailsRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DialogRole.js -var require_DialogRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DialogRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DialogRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "dialog" - } - }, { - module: "HTML", - concept: { - name: "dialog" - } - }], - type: "window" - }; - var _default = DialogRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DirectoryRole.js -var require_DirectoryRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DirectoryRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DirectoryRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "directory" - } - }, { - module: "HTML", - concept: { - name: "dir" - } - }], - type: "structure" - }; - var _default = DirectoryRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DisclosureTriangleRole.js -var require_DisclosureTriangleRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DisclosureTriangleRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DisclosureTriangleRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - constraints: ["scoped to a details element"], - name: "summary" - } - }], - type: "widget" - }; - var _default = DisclosureTriangleRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DivRole.js -var require_DivRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DivRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DivRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "div" - } - }], - type: "generic" - }; - var _default = DivRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/DocumentRole.js -var require_DocumentRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/DocumentRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var DocumentRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "document" - } - }], - type: "structure" - }; - var _default = DocumentRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/EmbeddedObjectRole.js -var require_EmbeddedObjectRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/EmbeddedObjectRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var EmbeddedObjectRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "embed" - } - }], - type: "widget" - }; - var _default = EmbeddedObjectRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/FeedRole.js -var require_FeedRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/FeedRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var FeedRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "feed" - } - }], - type: "structure" - }; - var _default = FeedRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/FigcaptionRole.js -var require_FigcaptionRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/FigcaptionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var FigcaptionRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "figcaption" - } - }], - type: "structure" - }; - var _default = FigcaptionRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/FigureRole.js -var require_FigureRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/FigureRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var FigureRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "figure" - } - }, { - module: "HTML", - concept: { - name: "figure" - } - }], - type: "structure" - }; - var _default = FigureRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/FooterRole.js -var require_FooterRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/FooterRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var FooterRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "footer" - } - }], - type: "structure" - }; - var _default = FooterRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/FormRole.js -var require_FormRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/FormRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var FormRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "form" - } - }, { - module: "HTML", - concept: { - name: "form" - } - }], - type: "structure" - }; - var _default = FormRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/GridRole.js -var require_GridRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/GridRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var GridRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "grid" - } - }], - type: "widget" - }; - var _default = GridRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/GroupRole.js -var require_GroupRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/GroupRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var GroupRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "group" - } - }], - type: "structure" - }; - var _default = GroupRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/HeadingRole.js -var require_HeadingRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/HeadingRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var HeadingRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "heading" - } - }, { - module: "HTML", - concept: { - name: "h1" - } - }, { - module: "HTML", - concept: { - name: "h2" - } - }, { - module: "HTML", - concept: { - name: "h3" - } - }, { - module: "HTML", - concept: { - name: "h4" - } - }, { - module: "HTML", - concept: { - name: "h5" - } - }, { - module: "HTML", - concept: { - name: "h6" - } - }], - type: "structure" - }; - var _default = HeadingRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/IframePresentationalRole.js -var require_IframePresentationalRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/IframePresentationalRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var IframePresentationalRole = { - relatedConcepts: [], - type: "window" - }; - var _default = IframePresentationalRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/IframeRole.js -var require_IframeRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/IframeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var IframeRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "iframe" - } - }], - type: "window" - }; - var _default = IframeRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/IgnoredRole.js -var require_IgnoredRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/IgnoredRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var IgnoredRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = IgnoredRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ImageMapLinkRole.js -var require_ImageMapLinkRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ImageMapLinkRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ImageMapLinkRole = { - relatedConcepts: [], - type: "widget" - }; - var _default = ImageMapLinkRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ImageMapRole.js -var require_ImageMapRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ImageMapRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ImageMapRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "img", - attributes: [{ - name: "usemap" - }] - } - }], - type: "structure" - }; - var _default = ImageMapRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ImageRole.js -var require_ImageRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ImageRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ImageRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "img" - } - }, { - module: "HTML", - concept: { - name: "img" - } - }], - type: "structure" - }; - var _default = ImageRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/InlineTextBoxRole.js -var require_InlineTextBoxRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/InlineTextBoxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var InlineTextBoxRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "input" - } - }], - type: "widget" - }; - var _default = InlineTextBoxRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/InputTimeRole.js -var require_InputTimeRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/InputTimeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var InputTimeRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "time" - }] - } - }], - type: "widget" - }; - var _default = InputTimeRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/LabelRole.js -var require_LabelRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/LabelRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var LabelRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "label" - } - }], - type: "structure" - }; - var _default = LabelRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/LegendRole.js -var require_LegendRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/LegendRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var LegendRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "legend" - } - }], - type: "structure" - }; - var _default = LegendRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/LineBreakRole.js -var require_LineBreakRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/LineBreakRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var LineBreakRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "br" - } - }], - type: "structure" - }; - var _default = LineBreakRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/LinkRole.js -var require_LinkRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/LinkRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var LinkRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "link" - } - }, { - module: "HTML", - concept: { - name: "a", - attributes: [{ - name: "href" - }] - } - }], - type: "widget" - }; - var _default = LinkRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ListBoxOptionRole.js -var require_ListBoxOptionRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ListBoxOptionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ListBoxOptionRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "option" - } - }, { - module: "HTML", - concept: { - name: "option" - } - }], - type: "widget" - }; - var _default = ListBoxOptionRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ListBoxRole.js -var require_ListBoxRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ListBoxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ListBoxRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "listbox" - } - }, { - module: "HTML", - concept: { - name: "datalist" - } - }, { - module: "HTML", - concept: { - name: "select" - } - }], - type: "widget" - }; - var _default = ListBoxRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ListItemRole.js -var require_ListItemRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ListItemRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ListItemRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "listitem" - } - }, { - module: "HTML", - concept: { - name: "li" - } - }], - type: "structure" - }; - var _default = ListItemRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ListMarkerRole.js -var require_ListMarkerRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ListMarkerRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ListMarkerRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = ListMarkerRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ListRole.js -var require_ListRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ListRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ListRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "list" - } - }, { - module: "HTML", - concept: { - name: "ul" - } - }, { - module: "HTML", - concept: { - name: "ol" - } - }], - type: "structure" - }; - var _default = ListRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/LogRole.js -var require_LogRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/LogRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var LogRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "log" - } - }], - type: "structure" - }; - var _default = LogRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MainRole.js -var require_MainRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MainRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MainRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "main" - } - }, { - module: "HTML", - concept: { - name: "main" - } - }], - type: "structure" - }; - var _default = MainRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MarkRole.js -var require_MarkRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MarkRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MarkRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "mark" - } - }], - type: "structure" - }; - var _default = MarkRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MarqueeRole.js -var require_MarqueeRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MarqueeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MarqueeRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "marquee" - } - }, { - module: "HTML", - concept: { - name: "marquee" - } - }], - type: "structure" - }; - var _default = MarqueeRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MathRole.js -var require_MathRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MathRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MathRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "math" - } - }], - type: "structure" - }; - var _default = MathRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MenuBarRole.js -var require_MenuBarRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MenuBarRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MenuBarRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "menubar" - } - }], - type: "structure" - }; - var _default = MenuBarRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MenuButtonRole.js -var require_MenuButtonRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MenuButtonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MenuButtonRole = { - relatedConcepts: [], - type: "widget" - }; - var _default = MenuButtonRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MenuItemRole.js -var require_MenuItemRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MenuItemRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MenuItemRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "menuitem" - } - }, { - module: "HTML", - concept: { - name: "menuitem" - } - }], - type: "widget" - }; - var _default = MenuItemRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MenuItemCheckBoxRole.js -var require_MenuItemCheckBoxRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MenuItemCheckBoxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MenuItemCheckBoxRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "menuitemcheckbox" - } - }], - type: "widget" - }; - var _default = MenuItemCheckBoxRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MenuItemRadioRole.js -var require_MenuItemRadioRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MenuItemRadioRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MenuItemRadioRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "menuitemradio" - } - }], - type: "widget" - }; - var _default = MenuItemRadioRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MenuListOptionRole.js -var require_MenuListOptionRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MenuListOptionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MenuListOptionRole = { - relatedConcepts: [], - type: "widget" - }; - var _default = MenuListOptionRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MenuListPopupRole.js -var require_MenuListPopupRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MenuListPopupRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MenuListPopupRole = { - relatedConcepts: [], - type: "widget" - }; - var _default = MenuListPopupRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MenuRole.js -var require_MenuRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MenuRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MenuRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "menu" - } - }, { - module: "HTML", - concept: { - name: "menu" - } - }], - type: "structure" - }; - var _default = MenuRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/MeterRole.js -var require_MeterRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/MeterRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var MeterRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "meter" - } - }], - type: "structure" - }; - var _default = MeterRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/NavigationRole.js -var require_NavigationRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/NavigationRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var NavigationRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "navigation" - } - }, { - module: "HTML", - concept: { - name: "nav" - } - }], - type: "structure" - }; - var _default = NavigationRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/NoneRole.js -var require_NoneRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/NoneRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var NoneRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "none" - } - }], - type: "structure" - }; - var _default = NoneRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/NoteRole.js -var require_NoteRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/NoteRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var NoteRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "note" - } - }], - type: "structure" - }; - var _default = NoteRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/OutlineRole.js -var require_OutlineRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/OutlineRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var OutlineRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = OutlineRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ParagraphRole.js -var require_ParagraphRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ParagraphRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ParagraphRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "p" - } - }], - type: "structure" - }; - var _default = ParagraphRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/PopUpButtonRole.js -var require_PopUpButtonRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/PopUpButtonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var PopUpButtonRole = { - relatedConcepts: [], - type: "widget" - }; - var _default = PopUpButtonRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/PreRole.js -var require_PreRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/PreRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var PreRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "pre" - } - }], - type: "structure" - }; - var _default = PreRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/PresentationalRole.js -var require_PresentationalRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/PresentationalRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var PresentationalRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "presentation" - } - }], - type: "structure" - }; - var _default = PresentationalRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ProgressIndicatorRole.js -var require_ProgressIndicatorRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ProgressIndicatorRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ProgressIndicatorRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "progressbar" - } - }, { - module: "HTML", - concept: { - name: "progress" - } - }], - type: "structure" - }; - var _default = ProgressIndicatorRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/RadioButtonRole.js -var require_RadioButtonRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/RadioButtonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var RadioButtonRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "radio" - } - }, { - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "radio" - }] - } - }], - type: "widget" - }; - var _default = RadioButtonRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/RadioGroupRole.js -var require_RadioGroupRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/RadioGroupRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var RadioGroupRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "radiogroup" - } - }], - type: "structure" - }; - var _default = RadioGroupRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/RegionRole.js -var require_RegionRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/RegionRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var RegionRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "region" - } - }], - type: "structure" - }; - var _default = RegionRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/RootWebAreaRole.js -var require_RootWebAreaRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/RootWebAreaRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var RootWebAreaRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = RootWebAreaRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/RowHeaderRole.js -var require_RowHeaderRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/RowHeaderRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var RowHeaderRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "rowheader" - } - }, { - module: "HTML", - concept: { - name: "th", - attributes: [{ - name: "scope", - value: "row" - }] - } - }], - type: "widget" - }; - var _default = RowHeaderRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/RowRole.js -var require_RowRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/RowRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var RowRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "row" - } - }, { - module: "HTML", - concept: { - name: "tr" - } - }], - type: "structure" - }; - var _default = RowRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/RubyRole.js -var require_RubyRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/RubyRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var RubyRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "ruby" - } - }], - type: "structure" - }; - var _default = RubyRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/RulerRole.js -var require_RulerRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/RulerRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var RulerRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = RulerRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ScrollAreaRole.js -var require_ScrollAreaRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ScrollAreaRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ScrollAreaRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = ScrollAreaRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ScrollBarRole.js -var require_ScrollBarRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ScrollBarRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ScrollBarRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "scrollbar" - } - }], - type: "widget" - }; - var _default = ScrollBarRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SeamlessWebAreaRole.js -var require_SeamlessWebAreaRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SeamlessWebAreaRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SeamlessWebAreaRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = SeamlessWebAreaRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SearchRole.js -var require_SearchRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SearchRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SearchRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "search" - } - }], - type: "structure" - }; - var _default = SearchRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SearchBoxRole.js -var require_SearchBoxRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SearchBoxRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SearchBoxRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "searchbox" - } - }, { - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "search" - }] - } - }], - type: "widget" - }; - var _default = SearchBoxRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SliderRole.js -var require_SliderRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SliderRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SliderRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "slider" - } - }, { - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "range" - }] - } - }], - type: "widget" - }; - var _default = SliderRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SliderThumbRole.js -var require_SliderThumbRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SliderThumbRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SliderThumbRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = SliderThumbRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SpinButtonRole.js -var require_SpinButtonRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SpinButtonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SpinButtonRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "spinbutton" - } - }, { - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "number" - }] - } - }], - type: "widget" - }; - var _default = SpinButtonRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SpinButtonPartRole.js -var require_SpinButtonPartRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SpinButtonPartRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SpinButtonPartRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = SpinButtonPartRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SplitterRole.js -var require_SplitterRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SplitterRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SplitterRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "separator" - } - }], - type: "widget" - }; - var _default = SplitterRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/StaticTextRole.js -var require_StaticTextRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/StaticTextRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var StaticTextRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = StaticTextRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/StatusRole.js -var require_StatusRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/StatusRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var StatusRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "status" - } - }], - type: "structure" - }; - var _default = StatusRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SVGRootRole.js -var require_SVGRootRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SVGRootRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SVGRootRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = SVGRootRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/SwitchRole.js -var require_SwitchRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/SwitchRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var SwitchRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "switch" - } - }, { - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "checkbox" - }] - } - }], - type: "widget" - }; - var _default = SwitchRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TabGroupRole.js -var require_TabGroupRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TabGroupRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TabGroupRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "tablist" - } - }], - type: "structure" - }; - var _default = TabGroupRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TabRole.js -var require_TabRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TabRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TabRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "tab" - } - }], - type: "widget" - }; - var _default = TabRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TableHeaderContainerRole.js -var require_TableHeaderContainerRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TableHeaderContainerRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TableHeaderContainerRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = TableHeaderContainerRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TableRole.js -var require_TableRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TableRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TableRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "table" - } - }, { - module: "HTML", - concept: { - name: "table" - } - }], - type: "structure" - }; - var _default = TableRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TabListRole.js -var require_TabListRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TabListRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TabListRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "tablist" - } - }], - type: "structure" - }; - var _default = TabListRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TabPanelRole.js -var require_TabPanelRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TabPanelRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TabPanelRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "tabpanel" - } - }], - type: "structure" - }; - var _default = TabPanelRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TermRole.js -var require_TermRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TermRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TermRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "term" - } - }], - type: "structure" - }; - var _default = TermRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TextAreaRole.js -var require_TextAreaRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TextAreaRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TextAreaRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - attributes: [{ - name: "aria-multiline", - value: "true" - }], - name: "textbox" - } - }, { - module: "HTML", - concept: { - name: "textarea" - } - }], - type: "widget" - }; - var _default = TextAreaRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TextFieldRole.js -var require_TextFieldRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TextFieldRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TextFieldRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "textbox" - } - }, { - module: "HTML", - concept: { - name: "input" - } - }, { - module: "HTML", - concept: { - name: "input", - attributes: [{ - name: "type", - value: "text" - }] - } - }], - type: "widget" - }; - var _default = TextFieldRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TimeRole.js -var require_TimeRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TimeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TimeRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "time" - } - }], - type: "structure" - }; - var _default = TimeRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TimerRole.js -var require_TimerRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TimerRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TimerRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "timer" - } - }], - type: "structure" - }; - var _default = TimerRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ToggleButtonRole.js -var require_ToggleButtonRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ToggleButtonRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ToggleButtonRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - attributes: [{ - name: "aria-pressed" - }] - } - }], - type: "widget" - }; - var _default = ToggleButtonRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/ToolbarRole.js -var require_ToolbarRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/ToolbarRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var ToolbarRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "toolbar" - } - }], - type: "structure" - }; - var _default = ToolbarRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TreeRole.js -var require_TreeRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TreeRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TreeRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "tree" - } - }], - type: "widget" - }; - var _default = TreeRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TreeGridRole.js -var require_TreeGridRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TreeGridRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TreeGridRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "treegrid" - } - }], - type: "widget" - }; - var _default = TreeGridRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/TreeItemRole.js -var require_TreeItemRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/TreeItemRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var TreeItemRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "treeitem" - } - }], - type: "widget" - }; - var _default = TreeItemRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/UserInterfaceTooltipRole.js -var require_UserInterfaceTooltipRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/UserInterfaceTooltipRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var UserInterfaceTooltipRole = { - relatedConcepts: [{ - module: "ARIA", - concept: { - name: "tooltip" - } - }], - type: "structure" - }; - var _default = UserInterfaceTooltipRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/VideoRole.js -var require_VideoRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/VideoRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var VideoRole = { - relatedConcepts: [{ - module: "HTML", - concept: { - name: "video" - } - }], - type: "widget" - }; - var _default = VideoRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/WebAreaRole.js -var require_WebAreaRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/WebAreaRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var WebAreaRole = { - relatedConcepts: [], - type: "structure" - }; - var _default = WebAreaRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/etc/objects/WindowRole.js -var require_WindowRole = __commonJS({ - "node_modules/axobject-query/lib/etc/objects/WindowRole.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var WindowRole = { - relatedConcepts: [], - type: "window" - }; - var _default = WindowRole; - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/AXObjectsMap.js -var require_AXObjectsMap = __commonJS({ - "node_modules/axobject-query/lib/AXObjectsMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - var _AbbrRole = _interopRequireDefault(require_AbbrRole()); - var _AlertDialogRole = _interopRequireDefault(require_AlertDialogRole()); - var _AlertRole = _interopRequireDefault(require_AlertRole()); - var _AnnotationRole = _interopRequireDefault(require_AnnotationRole()); - var _ApplicationRole = _interopRequireDefault(require_ApplicationRole()); - var _ArticleRole = _interopRequireDefault(require_ArticleRole()); - var _AudioRole = _interopRequireDefault(require_AudioRole()); - var _BannerRole = _interopRequireDefault(require_BannerRole()); - var _BlockquoteRole = _interopRequireDefault(require_BlockquoteRole()); - var _BusyIndicatorRole = _interopRequireDefault(require_BusyIndicatorRole()); - var _ButtonRole = _interopRequireDefault(require_ButtonRole()); - var _CanvasRole = _interopRequireDefault(require_CanvasRole()); - var _CaptionRole = _interopRequireDefault(require_CaptionRole()); - var _CellRole = _interopRequireDefault(require_CellRole()); - var _CheckBoxRole = _interopRequireDefault(require_CheckBoxRole()); - var _ColorWellRole = _interopRequireDefault(require_ColorWellRole()); - var _ColumnHeaderRole = _interopRequireDefault(require_ColumnHeaderRole()); - var _ColumnRole = _interopRequireDefault(require_ColumnRole()); - var _ComboBoxRole = _interopRequireDefault(require_ComboBoxRole()); - var _ComplementaryRole = _interopRequireDefault(require_ComplementaryRole()); - var _ContentInfoRole = _interopRequireDefault(require_ContentInfoRole()); - var _DateRole = _interopRequireDefault(require_DateRole()); - var _DateTimeRole = _interopRequireDefault(require_DateTimeRole()); - var _DefinitionRole = _interopRequireDefault(require_DefinitionRole()); - var _DescriptionListDetailRole = _interopRequireDefault(require_DescriptionListDetailRole()); - var _DescriptionListRole = _interopRequireDefault(require_DescriptionListRole()); - var _DescriptionListTermRole = _interopRequireDefault(require_DescriptionListTermRole()); - var _DetailsRole = _interopRequireDefault(require_DetailsRole()); - var _DialogRole = _interopRequireDefault(require_DialogRole()); - var _DirectoryRole = _interopRequireDefault(require_DirectoryRole()); - var _DisclosureTriangleRole = _interopRequireDefault(require_DisclosureTriangleRole()); - var _DivRole = _interopRequireDefault(require_DivRole()); - var _DocumentRole = _interopRequireDefault(require_DocumentRole()); - var _EmbeddedObjectRole = _interopRequireDefault(require_EmbeddedObjectRole()); - var _FeedRole = _interopRequireDefault(require_FeedRole()); - var _FigcaptionRole = _interopRequireDefault(require_FigcaptionRole()); - var _FigureRole = _interopRequireDefault(require_FigureRole()); - var _FooterRole = _interopRequireDefault(require_FooterRole()); - var _FormRole = _interopRequireDefault(require_FormRole()); - var _GridRole = _interopRequireDefault(require_GridRole()); - var _GroupRole = _interopRequireDefault(require_GroupRole()); - var _HeadingRole = _interopRequireDefault(require_HeadingRole()); - var _IframePresentationalRole = _interopRequireDefault(require_IframePresentationalRole()); - var _IframeRole = _interopRequireDefault(require_IframeRole()); - var _IgnoredRole = _interopRequireDefault(require_IgnoredRole()); - var _ImageMapLinkRole = _interopRequireDefault(require_ImageMapLinkRole()); - var _ImageMapRole = _interopRequireDefault(require_ImageMapRole()); - var _ImageRole = _interopRequireDefault(require_ImageRole()); - var _InlineTextBoxRole = _interopRequireDefault(require_InlineTextBoxRole()); - var _InputTimeRole = _interopRequireDefault(require_InputTimeRole()); - var _LabelRole = _interopRequireDefault(require_LabelRole()); - var _LegendRole = _interopRequireDefault(require_LegendRole()); - var _LineBreakRole = _interopRequireDefault(require_LineBreakRole()); - var _LinkRole = _interopRequireDefault(require_LinkRole()); - var _ListBoxOptionRole = _interopRequireDefault(require_ListBoxOptionRole()); - var _ListBoxRole = _interopRequireDefault(require_ListBoxRole()); - var _ListItemRole = _interopRequireDefault(require_ListItemRole()); - var _ListMarkerRole = _interopRequireDefault(require_ListMarkerRole()); - var _ListRole = _interopRequireDefault(require_ListRole()); - var _LogRole = _interopRequireDefault(require_LogRole()); - var _MainRole = _interopRequireDefault(require_MainRole()); - var _MarkRole = _interopRequireDefault(require_MarkRole()); - var _MarqueeRole = _interopRequireDefault(require_MarqueeRole()); - var _MathRole = _interopRequireDefault(require_MathRole()); - var _MenuBarRole = _interopRequireDefault(require_MenuBarRole()); - var _MenuButtonRole = _interopRequireDefault(require_MenuButtonRole()); - var _MenuItemRole = _interopRequireDefault(require_MenuItemRole()); - var _MenuItemCheckBoxRole = _interopRequireDefault(require_MenuItemCheckBoxRole()); - var _MenuItemRadioRole = _interopRequireDefault(require_MenuItemRadioRole()); - var _MenuListOptionRole = _interopRequireDefault(require_MenuListOptionRole()); - var _MenuListPopupRole = _interopRequireDefault(require_MenuListPopupRole()); - var _MenuRole = _interopRequireDefault(require_MenuRole()); - var _MeterRole = _interopRequireDefault(require_MeterRole()); - var _NavigationRole = _interopRequireDefault(require_NavigationRole()); - var _NoneRole = _interopRequireDefault(require_NoneRole()); - var _NoteRole = _interopRequireDefault(require_NoteRole()); - var _OutlineRole = _interopRequireDefault(require_OutlineRole()); - var _ParagraphRole = _interopRequireDefault(require_ParagraphRole()); - var _PopUpButtonRole = _interopRequireDefault(require_PopUpButtonRole()); - var _PreRole = _interopRequireDefault(require_PreRole()); - var _PresentationalRole = _interopRequireDefault(require_PresentationalRole()); - var _ProgressIndicatorRole = _interopRequireDefault(require_ProgressIndicatorRole()); - var _RadioButtonRole = _interopRequireDefault(require_RadioButtonRole()); - var _RadioGroupRole = _interopRequireDefault(require_RadioGroupRole()); - var _RegionRole = _interopRequireDefault(require_RegionRole()); - var _RootWebAreaRole = _interopRequireDefault(require_RootWebAreaRole()); - var _RowHeaderRole = _interopRequireDefault(require_RowHeaderRole()); - var _RowRole = _interopRequireDefault(require_RowRole()); - var _RubyRole = _interopRequireDefault(require_RubyRole()); - var _RulerRole = _interopRequireDefault(require_RulerRole()); - var _ScrollAreaRole = _interopRequireDefault(require_ScrollAreaRole()); - var _ScrollBarRole = _interopRequireDefault(require_ScrollBarRole()); - var _SeamlessWebAreaRole = _interopRequireDefault(require_SeamlessWebAreaRole()); - var _SearchRole = _interopRequireDefault(require_SearchRole()); - var _SearchBoxRole = _interopRequireDefault(require_SearchBoxRole()); - var _SliderRole = _interopRequireDefault(require_SliderRole()); - var _SliderThumbRole = _interopRequireDefault(require_SliderThumbRole()); - var _SpinButtonRole = _interopRequireDefault(require_SpinButtonRole()); - var _SpinButtonPartRole = _interopRequireDefault(require_SpinButtonPartRole()); - var _SplitterRole = _interopRequireDefault(require_SplitterRole()); - var _StaticTextRole = _interopRequireDefault(require_StaticTextRole()); - var _StatusRole = _interopRequireDefault(require_StatusRole()); - var _SVGRootRole = _interopRequireDefault(require_SVGRootRole()); - var _SwitchRole = _interopRequireDefault(require_SwitchRole()); - var _TabGroupRole = _interopRequireDefault(require_TabGroupRole()); - var _TabRole = _interopRequireDefault(require_TabRole()); - var _TableHeaderContainerRole = _interopRequireDefault(require_TableHeaderContainerRole()); - var _TableRole = _interopRequireDefault(require_TableRole()); - var _TabListRole = _interopRequireDefault(require_TabListRole()); - var _TabPanelRole = _interopRequireDefault(require_TabPanelRole()); - var _TermRole = _interopRequireDefault(require_TermRole()); - var _TextAreaRole = _interopRequireDefault(require_TextAreaRole()); - var _TextFieldRole = _interopRequireDefault(require_TextFieldRole()); - var _TimeRole = _interopRequireDefault(require_TimeRole()); - var _TimerRole = _interopRequireDefault(require_TimerRole()); - var _ToggleButtonRole = _interopRequireDefault(require_ToggleButtonRole()); - var _ToolbarRole = _interopRequireDefault(require_ToolbarRole()); - var _TreeRole = _interopRequireDefault(require_TreeRole()); - var _TreeGridRole = _interopRequireDefault(require_TreeGridRole()); - var _TreeItemRole = _interopRequireDefault(require_TreeItemRole()); - var _UserInterfaceTooltipRole = _interopRequireDefault(require_UserInterfaceTooltipRole()); - var _VideoRole = _interopRequireDefault(require_VideoRole()); - var _WebAreaRole = _interopRequireDefault(require_WebAreaRole()); - var _WindowRole = _interopRequireDefault(require_WindowRole()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - function _iterableToArrayLimit(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - var AXObjects = [["AbbrRole", _AbbrRole.default], ["AlertDialogRole", _AlertDialogRole.default], ["AlertRole", _AlertRole.default], ["AnnotationRole", _AnnotationRole.default], ["ApplicationRole", _ApplicationRole.default], ["ArticleRole", _ArticleRole.default], ["AudioRole", _AudioRole.default], ["BannerRole", _BannerRole.default], ["BlockquoteRole", _BlockquoteRole.default], ["BusyIndicatorRole", _BusyIndicatorRole.default], ["ButtonRole", _ButtonRole.default], ["CanvasRole", _CanvasRole.default], ["CaptionRole", _CaptionRole.default], ["CellRole", _CellRole.default], ["CheckBoxRole", _CheckBoxRole.default], ["ColorWellRole", _ColorWellRole.default], ["ColumnHeaderRole", _ColumnHeaderRole.default], ["ColumnRole", _ColumnRole.default], ["ComboBoxRole", _ComboBoxRole.default], ["ComplementaryRole", _ComplementaryRole.default], ["ContentInfoRole", _ContentInfoRole.default], ["DateRole", _DateRole.default], ["DateTimeRole", _DateTimeRole.default], ["DefinitionRole", _DefinitionRole.default], ["DescriptionListDetailRole", _DescriptionListDetailRole.default], ["DescriptionListRole", _DescriptionListRole.default], ["DescriptionListTermRole", _DescriptionListTermRole.default], ["DetailsRole", _DetailsRole.default], ["DialogRole", _DialogRole.default], ["DirectoryRole", _DirectoryRole.default], ["DisclosureTriangleRole", _DisclosureTriangleRole.default], ["DivRole", _DivRole.default], ["DocumentRole", _DocumentRole.default], ["EmbeddedObjectRole", _EmbeddedObjectRole.default], ["FeedRole", _FeedRole.default], ["FigcaptionRole", _FigcaptionRole.default], ["FigureRole", _FigureRole.default], ["FooterRole", _FooterRole.default], ["FormRole", _FormRole.default], ["GridRole", _GridRole.default], ["GroupRole", _GroupRole.default], ["HeadingRole", _HeadingRole.default], ["IframePresentationalRole", _IframePresentationalRole.default], ["IframeRole", _IframeRole.default], ["IgnoredRole", _IgnoredRole.default], ["ImageMapLinkRole", _ImageMapLinkRole.default], ["ImageMapRole", _ImageMapRole.default], ["ImageRole", _ImageRole.default], ["InlineTextBoxRole", _InlineTextBoxRole.default], ["InputTimeRole", _InputTimeRole.default], ["LabelRole", _LabelRole.default], ["LegendRole", _LegendRole.default], ["LineBreakRole", _LineBreakRole.default], ["LinkRole", _LinkRole.default], ["ListBoxOptionRole", _ListBoxOptionRole.default], ["ListBoxRole", _ListBoxRole.default], ["ListItemRole", _ListItemRole.default], ["ListMarkerRole", _ListMarkerRole.default], ["ListRole", _ListRole.default], ["LogRole", _LogRole.default], ["MainRole", _MainRole.default], ["MarkRole", _MarkRole.default], ["MarqueeRole", _MarqueeRole.default], ["MathRole", _MathRole.default], ["MenuBarRole", _MenuBarRole.default], ["MenuButtonRole", _MenuButtonRole.default], ["MenuItemRole", _MenuItemRole.default], ["MenuItemCheckBoxRole", _MenuItemCheckBoxRole.default], ["MenuItemRadioRole", _MenuItemRadioRole.default], ["MenuListOptionRole", _MenuListOptionRole.default], ["MenuListPopupRole", _MenuListPopupRole.default], ["MenuRole", _MenuRole.default], ["MeterRole", _MeterRole.default], ["NavigationRole", _NavigationRole.default], ["NoneRole", _NoneRole.default], ["NoteRole", _NoteRole.default], ["OutlineRole", _OutlineRole.default], ["ParagraphRole", _ParagraphRole.default], ["PopUpButtonRole", _PopUpButtonRole.default], ["PreRole", _PreRole.default], ["PresentationalRole", _PresentationalRole.default], ["ProgressIndicatorRole", _ProgressIndicatorRole.default], ["RadioButtonRole", _RadioButtonRole.default], ["RadioGroupRole", _RadioGroupRole.default], ["RegionRole", _RegionRole.default], ["RootWebAreaRole", _RootWebAreaRole.default], ["RowHeaderRole", _RowHeaderRole.default], ["RowRole", _RowRole.default], ["RubyRole", _RubyRole.default], ["RulerRole", _RulerRole.default], ["ScrollAreaRole", _ScrollAreaRole.default], ["ScrollBarRole", _ScrollBarRole.default], ["SeamlessWebAreaRole", _SeamlessWebAreaRole.default], ["SearchRole", _SearchRole.default], ["SearchBoxRole", _SearchBoxRole.default], ["SliderRole", _SliderRole.default], ["SliderThumbRole", _SliderThumbRole.default], ["SpinButtonRole", _SpinButtonRole.default], ["SpinButtonPartRole", _SpinButtonPartRole.default], ["SplitterRole", _SplitterRole.default], ["StaticTextRole", _StaticTextRole.default], ["StatusRole", _StatusRole.default], ["SVGRootRole", _SVGRootRole.default], ["SwitchRole", _SwitchRole.default], ["TabGroupRole", _TabGroupRole.default], ["TabRole", _TabRole.default], ["TableHeaderContainerRole", _TableHeaderContainerRole.default], ["TableRole", _TableRole.default], ["TabListRole", _TabListRole.default], ["TabPanelRole", _TabPanelRole.default], ["TermRole", _TermRole.default], ["TextAreaRole", _TextAreaRole.default], ["TextFieldRole", _TextFieldRole.default], ["TimeRole", _TimeRole.default], ["TimerRole", _TimerRole.default], ["ToggleButtonRole", _ToggleButtonRole.default], ["ToolbarRole", _ToolbarRole.default], ["TreeRole", _TreeRole.default], ["TreeGridRole", _TreeGridRole.default], ["TreeItemRole", _TreeItemRole.default], ["UserInterfaceTooltipRole", _UserInterfaceTooltipRole.default], ["VideoRole", _VideoRole.default], ["WebAreaRole", _WebAreaRole.default], ["WindowRole", _WindowRole.default]]; - var AXObjectsMap = { - entries: function entries() { - return AXObjects; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - for (var _i = 0, _AXObjects = AXObjects; _i < _AXObjects.length; _i++) { - var _AXObjects$_i = _slicedToArray(_AXObjects[_i], 2), key = _AXObjects$_i[0], values = _AXObjects$_i[1]; - fn.call(thisArg, values, key, AXObjects); - } - }, - get: function get(key) { - var item = AXObjects.find(function(tuple) { - return tuple[0] === key ? true : false; - }); - return item && item[1]; - }, - has: function has(key) { - return !!AXObjectsMap.get(key); - }, - keys: function keys() { - return AXObjects.map(function(_ref) { - var _ref2 = _slicedToArray(_ref, 1), key = _ref2[0]; - return key; - }); - }, - values: function values() { - return AXObjects.map(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), values2 = _ref4[1]; - return values2; - }); - } - }; - var _default = (0, _iterationDecorator.default)(AXObjectsMap, AXObjectsMap.entries()); - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/AXObjectElementMap.js -var require_AXObjectElementMap = __commonJS({ - "node_modules/axobject-query/lib/AXObjectElementMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - var _AXObjectsMap = _interopRequireDefault(require_AXObjectsMap()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _iterableToArrayLimit(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (!it) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F2() { - }; - return { s: F, n: function n() { - if (i >= o.length) return { done: true }; - return { done: false, value: o[i++] }; - }, e: function e(_e2) { - throw _e2; - }, f: F }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { s: function s() { - it = it.call(o); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } }; - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - var AXObjectElements = []; - var _iterator = _createForOfIteratorHelper(_AXObjectsMap.default.entries()); - var _step; - try { - _loop = function _loop2() { - var _step$value = _slicedToArray(_step.value, 2), name = _step$value[0], def = _step$value[1]; - var relatedConcepts = def.relatedConcepts; - if (Array.isArray(relatedConcepts)) { - relatedConcepts.forEach(function(relation) { - if (relation.module === "HTML") { - var concept = relation.concept; - if (concept) { - var index = AXObjectElements.findIndex(function(_ref5) { - var _ref6 = _slicedToArray(_ref5, 1), key = _ref6[0]; - return key === name; - }); - if (index === -1) { - AXObjectElements.push([name, []]); - index = AXObjectElements.length - 1; - } - AXObjectElements[index][1].push(concept); - } - } - }); - } - }; - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - _loop(); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - var _loop; - var AXObjectElementMap = { - entries: function entries() { - return AXObjectElements; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - for (var _i = 0, _AXObjectElements = AXObjectElements; _i < _AXObjectElements.length; _i++) { - var _AXObjectElements$_i = _slicedToArray(_AXObjectElements[_i], 2), key = _AXObjectElements$_i[0], values = _AXObjectElements$_i[1]; - fn.call(thisArg, values, key, AXObjectElements); - } - }, - get: function get(key) { - var item = AXObjectElements.find(function(tuple) { - return tuple[0] === key ? true : false; - }); - return item && item[1]; - }, - has: function has(key) { - return !!AXObjectElementMap.get(key); - }, - keys: function keys() { - return AXObjectElements.map(function(_ref) { - var _ref2 = _slicedToArray(_ref, 1), key = _ref2[0]; - return key; - }); - }, - values: function values() { - return AXObjectElements.map(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), values2 = _ref4[1]; - return values2; - }); - } - }; - var _default = (0, _iterationDecorator.default)(AXObjectElementMap, AXObjectElementMap.entries()); - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/AXObjectRoleMap.js -var require_AXObjectRoleMap = __commonJS({ - "node_modules/axobject-query/lib/AXObjectRoleMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - var _AXObjectsMap = _interopRequireDefault(require_AXObjectsMap()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _iterableToArrayLimit(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (!it) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F2() { - }; - return { s: F, n: function n() { - if (i >= o.length) return { done: true }; - return { done: false, value: o[i++] }; - }, e: function e(_e2) { - throw _e2; - }, f: F }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { s: function s() { - it = it.call(o); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } }; - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - var AXObjectRoleElements = []; - var _iterator = _createForOfIteratorHelper(_AXObjectsMap.default.entries()); - var _step; - try { - _loop = function _loop2() { - var _step$value = _slicedToArray(_step.value, 2), name = _step$value[0], def = _step$value[1]; - var relatedConcepts = def.relatedConcepts; - if (Array.isArray(relatedConcepts)) { - relatedConcepts.forEach(function(relation) { - if (relation.module === "ARIA") { - var concept = relation.concept; - if (concept) { - var index = AXObjectRoleElements.findIndex(function(_ref5) { - var _ref6 = _slicedToArray(_ref5, 1), key = _ref6[0]; - return key === name; - }); - if (index === -1) { - AXObjectRoleElements.push([name, []]); - index = AXObjectRoleElements.length - 1; - } - AXObjectRoleElements[index][1].push(concept); - } - } - }); - } - }; - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - _loop(); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - var _loop; - var AXObjectRoleMap = { - entries: function entries() { - return AXObjectRoleElements; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - for (var _i = 0, _AXObjectRoleElements = AXObjectRoleElements; _i < _AXObjectRoleElements.length; _i++) { - var _AXObjectRoleElements2 = _slicedToArray(_AXObjectRoleElements[_i], 2), key = _AXObjectRoleElements2[0], values = _AXObjectRoleElements2[1]; - fn.call(thisArg, values, key, AXObjectRoleElements); - } - }, - get: function get(key) { - var item = AXObjectRoleElements.find(function(tuple) { - return tuple[0] === key ? true : false; - }); - return item && item[1]; - }, - has: function has(key) { - return !!AXObjectRoleMap.get(key); - }, - keys: function keys() { - return AXObjectRoleElements.map(function(_ref) { - var _ref2 = _slicedToArray(_ref, 1), key = _ref2[0]; - return key; - }); - }, - values: function values() { - return AXObjectRoleElements.map(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), values2 = _ref4[1]; - return values2; - }); - } - }; - var _default = (0, _iterationDecorator.default)(AXObjectRoleMap, AXObjectRoleMap.entries()); - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/elementAXObjectMap.js -var require_elementAXObjectMap = __commonJS({ - "node_modules/axobject-query/lib/elementAXObjectMap.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.default = void 0; - var _AXObjectsMap = _interopRequireDefault(require_AXObjectsMap()); - var _iterationDecorator = _interopRequireDefault(require_iterationDecorator()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _iterableToArrayLimit(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (!it) { - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - var F = function F2() { - }; - return { s: F, n: function n() { - if (i >= o.length) return { done: true }; - return { done: false, value: o[i++] }; - }, e: function e(_e2) { - throw _e2; - }, f: F }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var normalCompletion = true, didErr = false, err; - return { s: function s() { - it = it.call(o); - }, n: function n() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, e: function e(_e3) { - didErr = true; - err = _e3; - }, f: function f() { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } }; - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - return arr2; - } - var elementAXObjects = []; - var _iterator = _createForOfIteratorHelper(_AXObjectsMap.default.entries()); - var _step; - try { - _loop = function _loop2() { - var _step$value = _slicedToArray(_step.value, 2), name = _step$value[0], def = _step$value[1]; - var relatedConcepts = def.relatedConcepts; - if (Array.isArray(relatedConcepts)) { - relatedConcepts.forEach(function(relation) { - if (relation.module === "HTML") { - var concept = relation.concept; - if (concept != null) { - var conceptStr = JSON.stringify(concept); - var axObjects; - var index = 0; - for (; index < elementAXObjects.length; index++) { - var key = elementAXObjects[index][0]; - if (JSON.stringify(key) === conceptStr) { - axObjects = elementAXObjects[index][1]; - break; - } - } - if (!Array.isArray(axObjects)) { - axObjects = []; - } - var loc = axObjects.findIndex(function(item) { - return item === name; - }); - if (loc === -1) { - axObjects.push(name); - } - if (index < elementAXObjects.length) { - elementAXObjects.splice(index, 1, [concept, axObjects]); - } else { - elementAXObjects.push([concept, axObjects]); - } - } - } - }); - } - }; - for (_iterator.s(); !(_step = _iterator.n()).done; ) { - _loop(); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - var _loop; - function deepAxObjectModelRelationshipConceptAttributeCheck(a, b) { - if (a === void 0 && b !== void 0) { - return false; - } - if (a !== void 0 && b === void 0) { - return false; - } - if (a !== void 0 && b !== void 0) { - if (a.length != b.length) { - return false; - } - for (var i = 0; i < a.length; i++) { - if (b[i].name !== a[i].name || b[i].value !== a[i].value) { - return false; - } - } - } - return true; - } - var elementAXObjectMap = { - entries: function entries() { - return elementAXObjects; - }, - forEach: function forEach(fn) { - var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - for (var _i = 0, _elementAXObjects = elementAXObjects; _i < _elementAXObjects.length; _i++) { - var _elementAXObjects$_i = _slicedToArray(_elementAXObjects[_i], 2), key = _elementAXObjects$_i[0], values = _elementAXObjects$_i[1]; - fn.call(thisArg, values, key, elementAXObjects); - } - }, - get: function get(key) { - var item = elementAXObjects.find(function(tuple) { - return key.name === tuple[0].name && deepAxObjectModelRelationshipConceptAttributeCheck(key.attributes, tuple[0].attributes); - }); - return item && item[1]; - }, - has: function has(key) { - return !!elementAXObjectMap.get(key); - }, - keys: function keys() { - return elementAXObjects.map(function(_ref) { - var _ref2 = _slicedToArray(_ref, 1), key = _ref2[0]; - return key; - }); - }, - values: function values() { - return elementAXObjects.map(function(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), values2 = _ref4[1]; - return values2; - }); - } - }; - var _default = (0, _iterationDecorator.default)(elementAXObjectMap, elementAXObjectMap.entries()); - exports.default = _default; - } -}); - -// node_modules/axobject-query/lib/index.js -var require_lib = __commonJS({ - "node_modules/axobject-query/lib/index.js"(exports) { - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.elementAXObjects = exports.AXObjects = exports.AXObjectRoles = exports.AXObjectElements = void 0; - var _AXObjectElementMap = _interopRequireDefault(require_AXObjectElementMap()); - var _AXObjectRoleMap = _interopRequireDefault(require_AXObjectRoleMap()); - var _AXObjectsMap = _interopRequireDefault(require_AXObjectsMap()); - var _elementAXObjectMap = _interopRequireDefault(require_elementAXObjectMap()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var AXObjectElements = _AXObjectElementMap.default; - exports.AXObjectElements = AXObjectElements; - var AXObjectRoles = _AXObjectRoleMap.default; - exports.AXObjectRoles = AXObjectRoles; - var AXObjects = _AXObjectsMap.default; - exports.AXObjects = AXObjects; - var elementAXObjects = _elementAXObjectMap.default; - exports.elementAXObjects = elementAXObjects; - } -}); -export default require_lib(); -//# sourceMappingURL=astro___axobject-query.js.map diff --git a/site/node_modules/.vite/deps/astro___axobject-query.js.map b/site/node_modules/.vite/deps/astro___axobject-query.js.map deleted file mode 100644 index f8d6bb022e..0000000000 --- a/site/node_modules/.vite/deps/astro___axobject-query.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../node_modules/axobject-query/lib/util/iteratorProxy.js", "../../../../node_modules/axobject-query/lib/util/iterationDecorator.js", "../../../../node_modules/axobject-query/lib/etc/objects/AbbrRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/AlertDialogRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/AlertRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/AnnotationRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ApplicationRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ArticleRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/AudioRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/BannerRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/BlockquoteRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/BusyIndicatorRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ButtonRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/CanvasRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/CaptionRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/CellRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/CheckBoxRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ColorWellRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ColumnHeaderRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ColumnRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ComboBoxRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ComplementaryRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ContentInfoRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DateRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DateTimeRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DefinitionRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DescriptionListDetailRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DescriptionListRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DescriptionListTermRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DetailsRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DialogRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DirectoryRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DisclosureTriangleRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DivRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/DocumentRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/EmbeddedObjectRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/FeedRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/FigcaptionRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/FigureRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/FooterRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/FormRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/GridRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/GroupRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/HeadingRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/IframePresentationalRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/IframeRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/IgnoredRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ImageMapLinkRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ImageMapRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ImageRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/InlineTextBoxRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/InputTimeRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/LabelRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/LegendRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/LineBreakRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/LinkRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ListBoxOptionRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ListBoxRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ListItemRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ListMarkerRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ListRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/LogRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MainRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MarkRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MarqueeRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MathRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MenuBarRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MenuButtonRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MenuItemRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MenuItemCheckBoxRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MenuItemRadioRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MenuListOptionRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MenuListPopupRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MenuRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/MeterRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/NavigationRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/NoneRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/NoteRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/OutlineRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ParagraphRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/PopUpButtonRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/PreRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/PresentationalRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ProgressIndicatorRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/RadioButtonRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/RadioGroupRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/RegionRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/RootWebAreaRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/RowHeaderRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/RowRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/RubyRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/RulerRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ScrollAreaRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ScrollBarRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SeamlessWebAreaRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SearchRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SearchBoxRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SliderRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SliderThumbRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SpinButtonRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SpinButtonPartRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SplitterRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/StaticTextRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/StatusRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SVGRootRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/SwitchRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TabGroupRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TabRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TableHeaderContainerRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TableRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TabListRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TabPanelRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TermRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TextAreaRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TextFieldRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TimeRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TimerRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ToggleButtonRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/ToolbarRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TreeRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TreeGridRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/TreeItemRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/UserInterfaceTooltipRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/VideoRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/WebAreaRole.js", "../../../../node_modules/axobject-query/lib/etc/objects/WindowRole.js", "../../../../node_modules/axobject-query/lib/AXObjectsMap.js", "../../../../node_modules/axobject-query/lib/AXObjectElementMap.js", "../../../../node_modules/axobject-query/lib/AXObjectRoleMap.js", "../../../../node_modules/axobject-query/lib/elementAXObjectMap.js", "../../../../node_modules/axobject-query/lib/index.js"], - "sourcesContent": ["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n// eslint-disable-next-line no-unused-vars\nfunction iteratorProxy() {\n var values = this;\n var index = 0;\n var iter = {\n '@@iterator': function iterator() {\n return iter;\n },\n next: function next() {\n if (index < values.length) {\n var value = values[index];\n index = index + 1;\n return {\n done: false,\n value: value\n };\n } else {\n return {\n done: true\n };\n }\n }\n };\n return iter;\n}\nvar _default = iteratorProxy;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = iterationDecorator;\nvar _iteratorProxy = _interopRequireDefault(require(\"./iteratorProxy\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction iterationDecorator(collection, entries) {\n if (typeof Symbol === 'function' && _typeof(Symbol.iterator) === 'symbol') {\n Object.defineProperty(collection, Symbol.iterator, {\n value: _iteratorProxy.default.bind(entries)\n });\n }\n return collection;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar AbbrRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'abbr'\n }\n }],\n type: 'structure'\n};\nvar _default = AbbrRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar AlertDialogRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'alertdialog'\n }\n }],\n type: 'window'\n};\nvar _default = AlertDialogRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar AlertRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'alert'\n }\n }],\n type: 'structure'\n};\nvar _default = AlertRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar AnnotationRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = AnnotationRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ApplicationRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'application'\n }\n }],\n type: 'window'\n};\nvar _default = ApplicationRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ArticleRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'article'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'article'\n }\n }],\n type: 'structure'\n};\nvar _default = ArticleRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar AudioRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'audio'\n }\n }],\n type: 'widget'\n};\nvar _default = AudioRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar BannerRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'banner'\n }\n }],\n type: 'structure'\n};\nvar _default = BannerRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar BlockquoteRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'blockquote'\n }\n }],\n type: 'structure'\n};\nvar _default = BlockquoteRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar BusyIndicatorRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n attributes: [{\n name: 'aria-busy',\n value: 'true'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = BusyIndicatorRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ButtonRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'button'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'button'\n }\n }],\n type: 'widget'\n};\nvar _default = ButtonRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar CanvasRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'canvas'\n }\n }],\n type: 'widget'\n};\nvar _default = CanvasRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar CaptionRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'caption'\n }\n }],\n type: 'structure'\n};\nvar _default = CaptionRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar CellRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'cell'\n }\n }, {\n module: 'ARIA',\n concept: {\n name: 'gridcell'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'td'\n }\n }],\n type: 'widget'\n};\nvar _default = CellRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar CheckBoxRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'checkbox'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'checkbox'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = CheckBoxRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ColorWellRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'color'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = ColorWellRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ColumnHeaderRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'columnheader'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'th'\n }\n }],\n type: 'widget'\n};\nvar _default = ColumnHeaderRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ColumnRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = ColumnRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ComboBoxRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'combobox'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'select'\n }\n }],\n type: 'widget'\n};\nvar _default = ComboBoxRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ComplementaryRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'complementary'\n }\n }],\n type: 'structure'\n};\nvar _default = ComplementaryRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ContentInfoRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'structureinfo'\n }\n }],\n type: 'structure'\n};\nvar _default = ContentInfoRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DateRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'date'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = DateRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DateTimeRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'datetime'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = DateTimeRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DefinitionRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'dfn'\n }\n }],\n type: 'structure'\n};\nvar _default = DefinitionRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DescriptionListDetailRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'dd'\n }\n }],\n type: 'structure'\n};\nvar _default = DescriptionListDetailRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DescriptionListRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'dl'\n }\n }],\n type: 'structure'\n};\nvar _default = DescriptionListRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DescriptionListTermRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'dt'\n }\n }],\n type: 'structure'\n};\nvar _default = DescriptionListTermRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DetailsRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'details'\n }\n }],\n type: 'structure'\n};\nvar _default = DetailsRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DialogRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'dialog'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'dialog'\n }\n }],\n type: 'window'\n};\nvar _default = DialogRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DirectoryRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'directory'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'dir'\n }\n }],\n type: 'structure'\n};\nvar _default = DirectoryRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DisclosureTriangleRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n constraints: ['scoped to a details element'],\n name: 'summary'\n }\n }],\n type: 'widget'\n};\nvar _default = DisclosureTriangleRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DivRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'div'\n }\n }],\n type: 'generic'\n};\nvar _default = DivRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar DocumentRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'document'\n }\n }],\n type: 'structure'\n};\nvar _default = DocumentRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar EmbeddedObjectRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'embed'\n }\n }],\n type: 'widget'\n};\nvar _default = EmbeddedObjectRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar FeedRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'feed'\n }\n }],\n type: 'structure'\n};\nvar _default = FeedRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar FigcaptionRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'figcaption'\n }\n }],\n type: 'structure'\n};\nvar _default = FigcaptionRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar FigureRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'figure'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'figure'\n }\n }],\n type: 'structure'\n};\nvar _default = FigureRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar FooterRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'footer'\n }\n }],\n type: 'structure'\n};\nvar _default = FooterRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar FormRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'form'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'form'\n }\n }],\n type: 'structure'\n};\nvar _default = FormRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar GridRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'grid'\n }\n }],\n type: 'widget'\n};\nvar _default = GridRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar GroupRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'group'\n }\n }],\n type: 'structure'\n};\nvar _default = GroupRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar HeadingRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'heading'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'h1'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'h2'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'h3'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'h4'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'h5'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'h6'\n }\n }],\n type: 'structure'\n};\nvar _default = HeadingRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar IframePresentationalRole = {\n relatedConcepts: [],\n type: 'window'\n};\nvar _default = IframePresentationalRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar IframeRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'iframe'\n }\n }],\n type: 'window'\n};\nvar _default = IframeRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar IgnoredRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = IgnoredRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ImageMapLinkRole = {\n relatedConcepts: [],\n type: 'widget'\n};\nvar _default = ImageMapLinkRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ImageMapRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'img',\n attributes: [{\n name: 'usemap'\n }]\n }\n }],\n type: 'structure'\n};\nvar _default = ImageMapRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ImageRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'img'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'img'\n }\n }],\n type: 'structure'\n};\nvar _default = ImageRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar InlineTextBoxRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'input'\n }\n }],\n type: 'widget'\n};\nvar _default = InlineTextBoxRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar InputTimeRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'time'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = InputTimeRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar LabelRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'label'\n }\n }],\n type: 'structure'\n};\nvar _default = LabelRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar LegendRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'legend'\n }\n }],\n type: 'structure'\n};\nvar _default = LegendRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar LineBreakRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'br'\n }\n }],\n type: 'structure'\n};\nvar _default = LineBreakRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar LinkRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'link'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'a',\n attributes: [{\n name: 'href'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = LinkRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ListBoxOptionRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'option'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'option'\n }\n }],\n type: 'widget'\n};\nvar _default = ListBoxOptionRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ListBoxRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'listbox'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'datalist'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'select'\n }\n }],\n type: 'widget'\n};\nvar _default = ListBoxRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ListItemRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'listitem'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'li'\n }\n }],\n type: 'structure'\n};\nvar _default = ListItemRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ListMarkerRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = ListMarkerRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ListRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'list'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'ul'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'ol'\n }\n }],\n type: 'structure'\n};\nvar _default = ListRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar LogRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'log'\n }\n }],\n type: 'structure'\n};\nvar _default = LogRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MainRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'main'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'main'\n }\n }],\n type: 'structure'\n};\nvar _default = MainRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MarkRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'mark'\n }\n }],\n type: 'structure'\n};\nvar _default = MarkRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MarqueeRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'marquee'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'marquee'\n }\n }],\n type: 'structure'\n};\nvar _default = MarqueeRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MathRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'math'\n }\n }],\n type: 'structure'\n};\nvar _default = MathRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MenuBarRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'menubar'\n }\n }],\n type: 'structure'\n};\nvar _default = MenuBarRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MenuButtonRole = {\n relatedConcepts: [],\n type: 'widget'\n};\nvar _default = MenuButtonRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MenuItemRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'menuitem'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'menuitem'\n }\n }],\n type: 'widget'\n};\nvar _default = MenuItemRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MenuItemCheckBoxRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'menuitemcheckbox'\n }\n }],\n type: 'widget'\n};\nvar _default = MenuItemCheckBoxRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MenuItemRadioRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'menuitemradio'\n }\n }],\n type: 'widget'\n};\nvar _default = MenuItemRadioRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MenuListOptionRole = {\n relatedConcepts: [],\n type: 'widget'\n};\nvar _default = MenuListOptionRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MenuListPopupRole = {\n relatedConcepts: [],\n type: 'widget'\n};\nvar _default = MenuListPopupRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MenuRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'menu'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'menu'\n }\n }],\n type: 'structure'\n};\nvar _default = MenuRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar MeterRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'meter'\n }\n }],\n type: 'structure'\n};\nvar _default = MeterRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar NavigationRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'navigation'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'nav'\n }\n }],\n type: 'structure'\n};\nvar _default = NavigationRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar NoneRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'none'\n }\n }],\n type: 'structure'\n};\nvar _default = NoneRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar NoteRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'note'\n }\n }],\n type: 'structure'\n};\nvar _default = NoteRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar OutlineRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = OutlineRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ParagraphRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'p'\n }\n }],\n type: 'structure'\n};\nvar _default = ParagraphRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar PopUpButtonRole = {\n relatedConcepts: [],\n type: 'widget'\n};\nvar _default = PopUpButtonRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar PreRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'pre'\n }\n }],\n type: 'structure'\n};\nvar _default = PreRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar PresentationalRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'presentation'\n }\n }],\n type: 'structure'\n};\nvar _default = PresentationalRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ProgressIndicatorRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'progressbar'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'progress'\n }\n }],\n type: 'structure'\n};\nvar _default = ProgressIndicatorRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar RadioButtonRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'radio'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'radio'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = RadioButtonRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar RadioGroupRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'radiogroup'\n }\n }],\n type: 'structure'\n};\nvar _default = RadioGroupRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar RegionRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'region'\n }\n }],\n type: 'structure'\n};\nvar _default = RegionRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar RootWebAreaRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = RootWebAreaRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar RowHeaderRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'rowheader'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'th',\n attributes: [{\n name: 'scope',\n value: 'row'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = RowHeaderRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar RowRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'row'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'tr'\n }\n }],\n type: 'structure'\n};\nvar _default = RowRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar RubyRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'ruby'\n }\n }],\n type: 'structure'\n};\nvar _default = RubyRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar RulerRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = RulerRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ScrollAreaRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = ScrollAreaRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ScrollBarRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'scrollbar'\n }\n }],\n type: 'widget'\n};\nvar _default = ScrollBarRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SeamlessWebAreaRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = SeamlessWebAreaRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SearchRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'search'\n }\n }],\n type: 'structure'\n};\nvar _default = SearchRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SearchBoxRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'searchbox'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'search'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = SearchBoxRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SliderRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'slider'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'range'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = SliderRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SliderThumbRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = SliderThumbRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SpinButtonRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'spinbutton'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'number'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = SpinButtonRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SpinButtonPartRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = SpinButtonPartRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SplitterRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'separator'\n }\n }],\n type: 'widget'\n};\nvar _default = SplitterRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar StaticTextRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = StaticTextRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar StatusRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'status'\n }\n }],\n type: 'structure'\n};\nvar _default = StatusRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SVGRootRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = SVGRootRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar SwitchRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'switch'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'checkbox'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = SwitchRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TabGroupRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'tablist'\n }\n }],\n type: 'structure'\n};\nvar _default = TabGroupRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TabRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'tab'\n }\n }],\n type: 'widget'\n};\nvar _default = TabRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TableHeaderContainerRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = TableHeaderContainerRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TableRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'table'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'table'\n }\n }],\n type: 'structure'\n};\nvar _default = TableRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TabListRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'tablist'\n }\n }],\n type: 'structure'\n};\nvar _default = TabListRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TabPanelRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'tabpanel'\n }\n }],\n type: 'structure'\n};\nvar _default = TabPanelRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TermRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'term'\n }\n }],\n type: 'structure'\n};\nvar _default = TermRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TextAreaRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n attributes: [{\n name: 'aria-multiline',\n value: 'true'\n }],\n name: 'textbox'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'textarea'\n }\n }],\n type: 'widget'\n};\nvar _default = TextAreaRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TextFieldRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'textbox'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'input'\n }\n }, {\n module: 'HTML',\n concept: {\n name: 'input',\n attributes: [{\n name: 'type',\n value: 'text'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = TextFieldRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TimeRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'time'\n }\n }],\n type: 'structure'\n};\nvar _default = TimeRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TimerRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'timer'\n }\n }],\n type: 'structure'\n};\nvar _default = TimerRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ToggleButtonRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n attributes: [{\n name: 'aria-pressed'\n }]\n }\n }],\n type: 'widget'\n};\nvar _default = ToggleButtonRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar ToolbarRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'toolbar'\n }\n }],\n type: 'structure'\n};\nvar _default = ToolbarRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TreeRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'tree'\n }\n }],\n type: 'widget'\n};\nvar _default = TreeRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TreeGridRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'treegrid'\n }\n }],\n type: 'widget'\n};\nvar _default = TreeGridRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar TreeItemRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'treeitem'\n }\n }],\n type: 'widget'\n};\nvar _default = TreeItemRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar UserInterfaceTooltipRole = {\n relatedConcepts: [{\n module: 'ARIA',\n concept: {\n name: 'tooltip'\n }\n }],\n type: 'structure'\n};\nvar _default = UserInterfaceTooltipRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar VideoRole = {\n relatedConcepts: [{\n module: 'HTML',\n concept: {\n name: 'video'\n }\n }],\n type: 'widget'\n};\nvar _default = VideoRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar WebAreaRole = {\n relatedConcepts: [],\n type: 'structure'\n};\nvar _default = WebAreaRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar WindowRole = {\n relatedConcepts: [],\n type: 'window'\n};\nvar _default = WindowRole;\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nvar _AbbrRole = _interopRequireDefault(require(\"./etc/objects/AbbrRole\"));\nvar _AlertDialogRole = _interopRequireDefault(require(\"./etc/objects/AlertDialogRole\"));\nvar _AlertRole = _interopRequireDefault(require(\"./etc/objects/AlertRole\"));\nvar _AnnotationRole = _interopRequireDefault(require(\"./etc/objects/AnnotationRole\"));\nvar _ApplicationRole = _interopRequireDefault(require(\"./etc/objects/ApplicationRole\"));\nvar _ArticleRole = _interopRequireDefault(require(\"./etc/objects/ArticleRole\"));\nvar _AudioRole = _interopRequireDefault(require(\"./etc/objects/AudioRole\"));\nvar _BannerRole = _interopRequireDefault(require(\"./etc/objects/BannerRole\"));\nvar _BlockquoteRole = _interopRequireDefault(require(\"./etc/objects/BlockquoteRole\"));\nvar _BusyIndicatorRole = _interopRequireDefault(require(\"./etc/objects/BusyIndicatorRole\"));\nvar _ButtonRole = _interopRequireDefault(require(\"./etc/objects/ButtonRole\"));\nvar _CanvasRole = _interopRequireDefault(require(\"./etc/objects/CanvasRole\"));\nvar _CaptionRole = _interopRequireDefault(require(\"./etc/objects/CaptionRole\"));\nvar _CellRole = _interopRequireDefault(require(\"./etc/objects/CellRole\"));\nvar _CheckBoxRole = _interopRequireDefault(require(\"./etc/objects/CheckBoxRole\"));\nvar _ColorWellRole = _interopRequireDefault(require(\"./etc/objects/ColorWellRole\"));\nvar _ColumnHeaderRole = _interopRequireDefault(require(\"./etc/objects/ColumnHeaderRole\"));\nvar _ColumnRole = _interopRequireDefault(require(\"./etc/objects/ColumnRole\"));\nvar _ComboBoxRole = _interopRequireDefault(require(\"./etc/objects/ComboBoxRole\"));\nvar _ComplementaryRole = _interopRequireDefault(require(\"./etc/objects/ComplementaryRole\"));\nvar _ContentInfoRole = _interopRequireDefault(require(\"./etc/objects/ContentInfoRole\"));\nvar _DateRole = _interopRequireDefault(require(\"./etc/objects/DateRole\"));\nvar _DateTimeRole = _interopRequireDefault(require(\"./etc/objects/DateTimeRole\"));\nvar _DefinitionRole = _interopRequireDefault(require(\"./etc/objects/DefinitionRole\"));\nvar _DescriptionListDetailRole = _interopRequireDefault(require(\"./etc/objects/DescriptionListDetailRole\"));\nvar _DescriptionListRole = _interopRequireDefault(require(\"./etc/objects/DescriptionListRole\"));\nvar _DescriptionListTermRole = _interopRequireDefault(require(\"./etc/objects/DescriptionListTermRole\"));\nvar _DetailsRole = _interopRequireDefault(require(\"./etc/objects/DetailsRole\"));\nvar _DialogRole = _interopRequireDefault(require(\"./etc/objects/DialogRole\"));\nvar _DirectoryRole = _interopRequireDefault(require(\"./etc/objects/DirectoryRole\"));\nvar _DisclosureTriangleRole = _interopRequireDefault(require(\"./etc/objects/DisclosureTriangleRole\"));\nvar _DivRole = _interopRequireDefault(require(\"./etc/objects/DivRole\"));\nvar _DocumentRole = _interopRequireDefault(require(\"./etc/objects/DocumentRole\"));\nvar _EmbeddedObjectRole = _interopRequireDefault(require(\"./etc/objects/EmbeddedObjectRole\"));\nvar _FeedRole = _interopRequireDefault(require(\"./etc/objects/FeedRole\"));\nvar _FigcaptionRole = _interopRequireDefault(require(\"./etc/objects/FigcaptionRole\"));\nvar _FigureRole = _interopRequireDefault(require(\"./etc/objects/FigureRole\"));\nvar _FooterRole = _interopRequireDefault(require(\"./etc/objects/FooterRole\"));\nvar _FormRole = _interopRequireDefault(require(\"./etc/objects/FormRole\"));\nvar _GridRole = _interopRequireDefault(require(\"./etc/objects/GridRole\"));\nvar _GroupRole = _interopRequireDefault(require(\"./etc/objects/GroupRole\"));\nvar _HeadingRole = _interopRequireDefault(require(\"./etc/objects/HeadingRole\"));\nvar _IframePresentationalRole = _interopRequireDefault(require(\"./etc/objects/IframePresentationalRole\"));\nvar _IframeRole = _interopRequireDefault(require(\"./etc/objects/IframeRole\"));\nvar _IgnoredRole = _interopRequireDefault(require(\"./etc/objects/IgnoredRole\"));\nvar _ImageMapLinkRole = _interopRequireDefault(require(\"./etc/objects/ImageMapLinkRole\"));\nvar _ImageMapRole = _interopRequireDefault(require(\"./etc/objects/ImageMapRole\"));\nvar _ImageRole = _interopRequireDefault(require(\"./etc/objects/ImageRole\"));\nvar _InlineTextBoxRole = _interopRequireDefault(require(\"./etc/objects/InlineTextBoxRole\"));\nvar _InputTimeRole = _interopRequireDefault(require(\"./etc/objects/InputTimeRole\"));\nvar _LabelRole = _interopRequireDefault(require(\"./etc/objects/LabelRole\"));\nvar _LegendRole = _interopRequireDefault(require(\"./etc/objects/LegendRole\"));\nvar _LineBreakRole = _interopRequireDefault(require(\"./etc/objects/LineBreakRole\"));\nvar _LinkRole = _interopRequireDefault(require(\"./etc/objects/LinkRole\"));\nvar _ListBoxOptionRole = _interopRequireDefault(require(\"./etc/objects/ListBoxOptionRole\"));\nvar _ListBoxRole = _interopRequireDefault(require(\"./etc/objects/ListBoxRole\"));\nvar _ListItemRole = _interopRequireDefault(require(\"./etc/objects/ListItemRole\"));\nvar _ListMarkerRole = _interopRequireDefault(require(\"./etc/objects/ListMarkerRole\"));\nvar _ListRole = _interopRequireDefault(require(\"./etc/objects/ListRole\"));\nvar _LogRole = _interopRequireDefault(require(\"./etc/objects/LogRole\"));\nvar _MainRole = _interopRequireDefault(require(\"./etc/objects/MainRole\"));\nvar _MarkRole = _interopRequireDefault(require(\"./etc/objects/MarkRole\"));\nvar _MarqueeRole = _interopRequireDefault(require(\"./etc/objects/MarqueeRole\"));\nvar _MathRole = _interopRequireDefault(require(\"./etc/objects/MathRole\"));\nvar _MenuBarRole = _interopRequireDefault(require(\"./etc/objects/MenuBarRole\"));\nvar _MenuButtonRole = _interopRequireDefault(require(\"./etc/objects/MenuButtonRole\"));\nvar _MenuItemRole = _interopRequireDefault(require(\"./etc/objects/MenuItemRole\"));\nvar _MenuItemCheckBoxRole = _interopRequireDefault(require(\"./etc/objects/MenuItemCheckBoxRole\"));\nvar _MenuItemRadioRole = _interopRequireDefault(require(\"./etc/objects/MenuItemRadioRole\"));\nvar _MenuListOptionRole = _interopRequireDefault(require(\"./etc/objects/MenuListOptionRole\"));\nvar _MenuListPopupRole = _interopRequireDefault(require(\"./etc/objects/MenuListPopupRole\"));\nvar _MenuRole = _interopRequireDefault(require(\"./etc/objects/MenuRole\"));\nvar _MeterRole = _interopRequireDefault(require(\"./etc/objects/MeterRole\"));\nvar _NavigationRole = _interopRequireDefault(require(\"./etc/objects/NavigationRole\"));\nvar _NoneRole = _interopRequireDefault(require(\"./etc/objects/NoneRole\"));\nvar _NoteRole = _interopRequireDefault(require(\"./etc/objects/NoteRole\"));\nvar _OutlineRole = _interopRequireDefault(require(\"./etc/objects/OutlineRole\"));\nvar _ParagraphRole = _interopRequireDefault(require(\"./etc/objects/ParagraphRole\"));\nvar _PopUpButtonRole = _interopRequireDefault(require(\"./etc/objects/PopUpButtonRole\"));\nvar _PreRole = _interopRequireDefault(require(\"./etc/objects/PreRole\"));\nvar _PresentationalRole = _interopRequireDefault(require(\"./etc/objects/PresentationalRole\"));\nvar _ProgressIndicatorRole = _interopRequireDefault(require(\"./etc/objects/ProgressIndicatorRole\"));\nvar _RadioButtonRole = _interopRequireDefault(require(\"./etc/objects/RadioButtonRole\"));\nvar _RadioGroupRole = _interopRequireDefault(require(\"./etc/objects/RadioGroupRole\"));\nvar _RegionRole = _interopRequireDefault(require(\"./etc/objects/RegionRole\"));\nvar _RootWebAreaRole = _interopRequireDefault(require(\"./etc/objects/RootWebAreaRole\"));\nvar _RowHeaderRole = _interopRequireDefault(require(\"./etc/objects/RowHeaderRole\"));\nvar _RowRole = _interopRequireDefault(require(\"./etc/objects/RowRole\"));\nvar _RubyRole = _interopRequireDefault(require(\"./etc/objects/RubyRole\"));\nvar _RulerRole = _interopRequireDefault(require(\"./etc/objects/RulerRole\"));\nvar _ScrollAreaRole = _interopRequireDefault(require(\"./etc/objects/ScrollAreaRole\"));\nvar _ScrollBarRole = _interopRequireDefault(require(\"./etc/objects/ScrollBarRole\"));\nvar _SeamlessWebAreaRole = _interopRequireDefault(require(\"./etc/objects/SeamlessWebAreaRole\"));\nvar _SearchRole = _interopRequireDefault(require(\"./etc/objects/SearchRole\"));\nvar _SearchBoxRole = _interopRequireDefault(require(\"./etc/objects/SearchBoxRole\"));\nvar _SliderRole = _interopRequireDefault(require(\"./etc/objects/SliderRole\"));\nvar _SliderThumbRole = _interopRequireDefault(require(\"./etc/objects/SliderThumbRole\"));\nvar _SpinButtonRole = _interopRequireDefault(require(\"./etc/objects/SpinButtonRole\"));\nvar _SpinButtonPartRole = _interopRequireDefault(require(\"./etc/objects/SpinButtonPartRole\"));\nvar _SplitterRole = _interopRequireDefault(require(\"./etc/objects/SplitterRole\"));\nvar _StaticTextRole = _interopRequireDefault(require(\"./etc/objects/StaticTextRole\"));\nvar _StatusRole = _interopRequireDefault(require(\"./etc/objects/StatusRole\"));\nvar _SVGRootRole = _interopRequireDefault(require(\"./etc/objects/SVGRootRole\"));\nvar _SwitchRole = _interopRequireDefault(require(\"./etc/objects/SwitchRole\"));\nvar _TabGroupRole = _interopRequireDefault(require(\"./etc/objects/TabGroupRole\"));\nvar _TabRole = _interopRequireDefault(require(\"./etc/objects/TabRole\"));\nvar _TableHeaderContainerRole = _interopRequireDefault(require(\"./etc/objects/TableHeaderContainerRole\"));\nvar _TableRole = _interopRequireDefault(require(\"./etc/objects/TableRole\"));\nvar _TabListRole = _interopRequireDefault(require(\"./etc/objects/TabListRole\"));\nvar _TabPanelRole = _interopRequireDefault(require(\"./etc/objects/TabPanelRole\"));\nvar _TermRole = _interopRequireDefault(require(\"./etc/objects/TermRole\"));\nvar _TextAreaRole = _interopRequireDefault(require(\"./etc/objects/TextAreaRole\"));\nvar _TextFieldRole = _interopRequireDefault(require(\"./etc/objects/TextFieldRole\"));\nvar _TimeRole = _interopRequireDefault(require(\"./etc/objects/TimeRole\"));\nvar _TimerRole = _interopRequireDefault(require(\"./etc/objects/TimerRole\"));\nvar _ToggleButtonRole = _interopRequireDefault(require(\"./etc/objects/ToggleButtonRole\"));\nvar _ToolbarRole = _interopRequireDefault(require(\"./etc/objects/ToolbarRole\"));\nvar _TreeRole = _interopRequireDefault(require(\"./etc/objects/TreeRole\"));\nvar _TreeGridRole = _interopRequireDefault(require(\"./etc/objects/TreeGridRole\"));\nvar _TreeItemRole = _interopRequireDefault(require(\"./etc/objects/TreeItemRole\"));\nvar _UserInterfaceTooltipRole = _interopRequireDefault(require(\"./etc/objects/UserInterfaceTooltipRole\"));\nvar _VideoRole = _interopRequireDefault(require(\"./etc/objects/VideoRole\"));\nvar _WebAreaRole = _interopRequireDefault(require(\"./etc/objects/WebAreaRole\"));\nvar _WindowRole = _interopRequireDefault(require(\"./etc/objects/WindowRole\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nvar AXObjects = [['AbbrRole', _AbbrRole.default], ['AlertDialogRole', _AlertDialogRole.default], ['AlertRole', _AlertRole.default], ['AnnotationRole', _AnnotationRole.default], ['ApplicationRole', _ApplicationRole.default], ['ArticleRole', _ArticleRole.default], ['AudioRole', _AudioRole.default], ['BannerRole', _BannerRole.default], ['BlockquoteRole', _BlockquoteRole.default], ['BusyIndicatorRole', _BusyIndicatorRole.default], ['ButtonRole', _ButtonRole.default], ['CanvasRole', _CanvasRole.default], ['CaptionRole', _CaptionRole.default], ['CellRole', _CellRole.default], ['CheckBoxRole', _CheckBoxRole.default], ['ColorWellRole', _ColorWellRole.default], ['ColumnHeaderRole', _ColumnHeaderRole.default], ['ColumnRole', _ColumnRole.default], ['ComboBoxRole', _ComboBoxRole.default], ['ComplementaryRole', _ComplementaryRole.default], ['ContentInfoRole', _ContentInfoRole.default], ['DateRole', _DateRole.default], ['DateTimeRole', _DateTimeRole.default], ['DefinitionRole', _DefinitionRole.default], ['DescriptionListDetailRole', _DescriptionListDetailRole.default], ['DescriptionListRole', _DescriptionListRole.default], ['DescriptionListTermRole', _DescriptionListTermRole.default], ['DetailsRole', _DetailsRole.default], ['DialogRole', _DialogRole.default], ['DirectoryRole', _DirectoryRole.default], ['DisclosureTriangleRole', _DisclosureTriangleRole.default], ['DivRole', _DivRole.default], ['DocumentRole', _DocumentRole.default], ['EmbeddedObjectRole', _EmbeddedObjectRole.default], ['FeedRole', _FeedRole.default], ['FigcaptionRole', _FigcaptionRole.default], ['FigureRole', _FigureRole.default], ['FooterRole', _FooterRole.default], ['FormRole', _FormRole.default], ['GridRole', _GridRole.default], ['GroupRole', _GroupRole.default], ['HeadingRole', _HeadingRole.default], ['IframePresentationalRole', _IframePresentationalRole.default], ['IframeRole', _IframeRole.default], ['IgnoredRole', _IgnoredRole.default], ['ImageMapLinkRole', _ImageMapLinkRole.default], ['ImageMapRole', _ImageMapRole.default], ['ImageRole', _ImageRole.default], ['InlineTextBoxRole', _InlineTextBoxRole.default], ['InputTimeRole', _InputTimeRole.default], ['LabelRole', _LabelRole.default], ['LegendRole', _LegendRole.default], ['LineBreakRole', _LineBreakRole.default], ['LinkRole', _LinkRole.default], ['ListBoxOptionRole', _ListBoxOptionRole.default], ['ListBoxRole', _ListBoxRole.default], ['ListItemRole', _ListItemRole.default], ['ListMarkerRole', _ListMarkerRole.default], ['ListRole', _ListRole.default], ['LogRole', _LogRole.default], ['MainRole', _MainRole.default], ['MarkRole', _MarkRole.default], ['MarqueeRole', _MarqueeRole.default], ['MathRole', _MathRole.default], ['MenuBarRole', _MenuBarRole.default], ['MenuButtonRole', _MenuButtonRole.default], ['MenuItemRole', _MenuItemRole.default], ['MenuItemCheckBoxRole', _MenuItemCheckBoxRole.default], ['MenuItemRadioRole', _MenuItemRadioRole.default], ['MenuListOptionRole', _MenuListOptionRole.default], ['MenuListPopupRole', _MenuListPopupRole.default], ['MenuRole', _MenuRole.default], ['MeterRole', _MeterRole.default], ['NavigationRole', _NavigationRole.default], ['NoneRole', _NoneRole.default], ['NoteRole', _NoteRole.default], ['OutlineRole', _OutlineRole.default], ['ParagraphRole', _ParagraphRole.default], ['PopUpButtonRole', _PopUpButtonRole.default], ['PreRole', _PreRole.default], ['PresentationalRole', _PresentationalRole.default], ['ProgressIndicatorRole', _ProgressIndicatorRole.default], ['RadioButtonRole', _RadioButtonRole.default], ['RadioGroupRole', _RadioGroupRole.default], ['RegionRole', _RegionRole.default], ['RootWebAreaRole', _RootWebAreaRole.default], ['RowHeaderRole', _RowHeaderRole.default], ['RowRole', _RowRole.default], ['RubyRole', _RubyRole.default], ['RulerRole', _RulerRole.default], ['ScrollAreaRole', _ScrollAreaRole.default], ['ScrollBarRole', _ScrollBarRole.default], ['SeamlessWebAreaRole', _SeamlessWebAreaRole.default], ['SearchRole', _SearchRole.default], ['SearchBoxRole', _SearchBoxRole.default], ['SliderRole', _SliderRole.default], ['SliderThumbRole', _SliderThumbRole.default], ['SpinButtonRole', _SpinButtonRole.default], ['SpinButtonPartRole', _SpinButtonPartRole.default], ['SplitterRole', _SplitterRole.default], ['StaticTextRole', _StaticTextRole.default], ['StatusRole', _StatusRole.default], ['SVGRootRole', _SVGRootRole.default], ['SwitchRole', _SwitchRole.default], ['TabGroupRole', _TabGroupRole.default], ['TabRole', _TabRole.default], ['TableHeaderContainerRole', _TableHeaderContainerRole.default], ['TableRole', _TableRole.default], ['TabListRole', _TabListRole.default], ['TabPanelRole', _TabPanelRole.default], ['TermRole', _TermRole.default], ['TextAreaRole', _TextAreaRole.default], ['TextFieldRole', _TextFieldRole.default], ['TimeRole', _TimeRole.default], ['TimerRole', _TimerRole.default], ['ToggleButtonRole', _ToggleButtonRole.default], ['ToolbarRole', _ToolbarRole.default], ['TreeRole', _TreeRole.default], ['TreeGridRole', _TreeGridRole.default], ['TreeItemRole', _TreeItemRole.default], ['UserInterfaceTooltipRole', _UserInterfaceTooltipRole.default], ['VideoRole', _VideoRole.default], ['WebAreaRole', _WebAreaRole.default], ['WindowRole', _WindowRole.default]];\nvar AXObjectsMap = {\n entries: function entries() {\n return AXObjects;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n for (var _i = 0, _AXObjects = AXObjects; _i < _AXObjects.length; _i++) {\n var _AXObjects$_i = _slicedToArray(_AXObjects[_i], 2),\n key = _AXObjects$_i[0],\n values = _AXObjects$_i[1];\n fn.call(thisArg, values, key, AXObjects);\n }\n },\n get: function get(key) {\n var item = AXObjects.find(function (tuple) {\n return tuple[0] === key ? true : false;\n });\n return item && item[1];\n },\n has: function has(key) {\n return !!AXObjectsMap.get(key);\n },\n keys: function keys() {\n return AXObjects.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return key;\n });\n },\n values: function values() {\n return AXObjects.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n values = _ref4[1];\n return values;\n });\n }\n};\nvar _default = (0, _iterationDecorator.default)(AXObjectsMap, AXObjectsMap.entries());\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nvar _AXObjectsMap = _interopRequireDefault(require(\"./AXObjectsMap\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nvar AXObjectElements = [];\nvar _iterator = _createForOfIteratorHelper(_AXObjectsMap.default.entries()),\n _step;\ntry {\n var _loop = function _loop() {\n var _step$value = _slicedToArray(_step.value, 2),\n name = _step$value[0],\n def = _step$value[1];\n var relatedConcepts = def.relatedConcepts;\n if (Array.isArray(relatedConcepts)) {\n relatedConcepts.forEach(function (relation) {\n if (relation.module === 'HTML') {\n var concept = relation.concept;\n if (concept) {\n var index = AXObjectElements.findIndex(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 1),\n key = _ref6[0];\n return key === name;\n });\n if (index === -1) {\n AXObjectElements.push([name, []]);\n index = AXObjectElements.length - 1;\n }\n AXObjectElements[index][1].push(concept);\n }\n }\n });\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n} catch (err) {\n _iterator.e(err);\n} finally {\n _iterator.f();\n}\nvar AXObjectElementMap = {\n entries: function entries() {\n return AXObjectElements;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n for (var _i = 0, _AXObjectElements = AXObjectElements; _i < _AXObjectElements.length; _i++) {\n var _AXObjectElements$_i = _slicedToArray(_AXObjectElements[_i], 2),\n key = _AXObjectElements$_i[0],\n values = _AXObjectElements$_i[1];\n fn.call(thisArg, values, key, AXObjectElements);\n }\n },\n get: function get(key) {\n var item = AXObjectElements.find(function (tuple) {\n return tuple[0] === key ? true : false;\n });\n return item && item[1];\n },\n has: function has(key) {\n return !!AXObjectElementMap.get(key);\n },\n keys: function keys() {\n return AXObjectElements.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return key;\n });\n },\n values: function values() {\n return AXObjectElements.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n values = _ref4[1];\n return values;\n });\n }\n};\nvar _default = (0, _iterationDecorator.default)(AXObjectElementMap, AXObjectElementMap.entries());\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nvar _AXObjectsMap = _interopRequireDefault(require(\"./AXObjectsMap\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nvar AXObjectRoleElements = [];\nvar _iterator = _createForOfIteratorHelper(_AXObjectsMap.default.entries()),\n _step;\ntry {\n var _loop = function _loop() {\n var _step$value = _slicedToArray(_step.value, 2),\n name = _step$value[0],\n def = _step$value[1];\n var relatedConcepts = def.relatedConcepts;\n if (Array.isArray(relatedConcepts)) {\n relatedConcepts.forEach(function (relation) {\n if (relation.module === 'ARIA') {\n var concept = relation.concept;\n if (concept) {\n var index = AXObjectRoleElements.findIndex(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 1),\n key = _ref6[0];\n return key === name;\n });\n if (index === -1) {\n AXObjectRoleElements.push([name, []]);\n index = AXObjectRoleElements.length - 1;\n }\n AXObjectRoleElements[index][1].push(concept);\n }\n }\n });\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n} catch (err) {\n _iterator.e(err);\n} finally {\n _iterator.f();\n}\nvar AXObjectRoleMap = {\n entries: function entries() {\n return AXObjectRoleElements;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n for (var _i = 0, _AXObjectRoleElements = AXObjectRoleElements; _i < _AXObjectRoleElements.length; _i++) {\n var _AXObjectRoleElements2 = _slicedToArray(_AXObjectRoleElements[_i], 2),\n key = _AXObjectRoleElements2[0],\n values = _AXObjectRoleElements2[1];\n fn.call(thisArg, values, key, AXObjectRoleElements);\n }\n },\n get: function get(key) {\n var item = AXObjectRoleElements.find(function (tuple) {\n return tuple[0] === key ? true : false;\n });\n return item && item[1];\n },\n has: function has(key) {\n return !!AXObjectRoleMap.get(key);\n },\n keys: function keys() {\n return AXObjectRoleElements.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return key;\n });\n },\n values: function values() {\n return AXObjectRoleElements.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n values = _ref4[1];\n return values;\n });\n }\n};\nvar _default = (0, _iterationDecorator.default)(AXObjectRoleMap, AXObjectRoleMap.entries());\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _AXObjectsMap = _interopRequireDefault(require(\"./AXObjectsMap\"));\nvar _iterationDecorator = _interopRequireDefault(require(\"./util/iterationDecorator\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nvar elementAXObjects = [];\nvar _iterator = _createForOfIteratorHelper(_AXObjectsMap.default.entries()),\n _step;\ntry {\n var _loop = function _loop() {\n var _step$value = _slicedToArray(_step.value, 2),\n name = _step$value[0],\n def = _step$value[1];\n var relatedConcepts = def.relatedConcepts;\n if (Array.isArray(relatedConcepts)) {\n relatedConcepts.forEach(function (relation) {\n if (relation.module === 'HTML') {\n var concept = relation.concept;\n if (concept != null) {\n var conceptStr = JSON.stringify(concept);\n var axObjects;\n var index = 0;\n for (; index < elementAXObjects.length; index++) {\n var key = elementAXObjects[index][0];\n if (JSON.stringify(key) === conceptStr) {\n axObjects = elementAXObjects[index][1];\n break;\n }\n }\n if (!Array.isArray(axObjects)) {\n axObjects = [];\n }\n var loc = axObjects.findIndex(function (item) {\n return item === name;\n });\n if (loc === -1) {\n axObjects.push(name);\n }\n if (index < elementAXObjects.length) {\n elementAXObjects.splice(index, 1, [concept, axObjects]);\n } else {\n elementAXObjects.push([concept, axObjects]);\n }\n }\n }\n });\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n} catch (err) {\n _iterator.e(err);\n} finally {\n _iterator.f();\n}\nfunction deepAxObjectModelRelationshipConceptAttributeCheck(a, b) {\n if (a === undefined && b !== undefined) {\n return false;\n }\n if (a !== undefined && b === undefined) {\n return false;\n }\n if (a !== undefined && b !== undefined) {\n if (a.length != b.length) {\n return false;\n }\n\n // dequal checks position equality\n // https://github.com/lukeed/dequal/blob/5ecd990c4c055c4658c64b4bdfc170f219604eea/src/index.js#L17-L22\n for (var i = 0; i < a.length; i++) {\n if (b[i].name !== a[i].name || b[i].value !== a[i].value) {\n return false;\n }\n }\n }\n return true;\n}\nvar elementAXObjectMap = {\n entries: function entries() {\n return elementAXObjects;\n },\n forEach: function forEach(fn) {\n var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n for (var _i = 0, _elementAXObjects = elementAXObjects; _i < _elementAXObjects.length; _i++) {\n var _elementAXObjects$_i = _slicedToArray(_elementAXObjects[_i], 2),\n key = _elementAXObjects$_i[0],\n values = _elementAXObjects$_i[1];\n fn.call(thisArg, values, key, elementAXObjects);\n }\n },\n get: function get(key) {\n var item = elementAXObjects.find(function (tuple) {\n return key.name === tuple[0].name && deepAxObjectModelRelationshipConceptAttributeCheck(key.attributes, tuple[0].attributes);\n });\n return item && item[1];\n },\n has: function has(key) {\n return !!elementAXObjectMap.get(key);\n },\n keys: function keys() {\n return elementAXObjects.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n key = _ref2[0];\n return key;\n });\n },\n values: function values() {\n return elementAXObjects.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n values = _ref4[1];\n return values;\n });\n }\n};\nvar _default = (0, _iterationDecorator.default)(elementAXObjectMap, elementAXObjectMap.entries());\nexports.default = _default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.elementAXObjects = exports.AXObjects = exports.AXObjectRoles = exports.AXObjectElements = void 0;\nvar _AXObjectElementMap = _interopRequireDefault(require(\"./AXObjectElementMap\"));\nvar _AXObjectRoleMap = _interopRequireDefault(require(\"./AXObjectRoleMap\"));\nvar _AXObjectsMap = _interopRequireDefault(require(\"./AXObjectsMap\"));\nvar _elementAXObjectMap = _interopRequireDefault(require(\"./elementAXObjectMap\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar AXObjectElements = _AXObjectElementMap.default;\nexports.AXObjectElements = AXObjectElements;\nvar AXObjectRoles = _AXObjectRoleMap.default;\nexports.AXObjectRoles = AXObjectRoles;\nvar AXObjects = _AXObjectsMap.default;\nexports.AXObjects = AXObjects;\nvar elementAXObjects = _elementAXObjectMap.default;\nexports.elementAXObjects = elementAXObjects;"], - "mappings": ";;;;;AAAA;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAElB,aAAS,gBAAgB;AACvB,UAAI,SAAS;AACb,UAAI,QAAQ;AACZ,UAAI,OAAO;AAAA,QACT,cAAc,SAAS,WAAW;AAChC,iBAAO;AAAA,QACT;AAAA,QACA,MAAM,SAAS,OAAO;AACpB,cAAI,QAAQ,OAAO,QAAQ;AACzB,gBAAI,QAAQ,OAAO,KAAK;AACxB,oBAAQ,QAAQ;AAChB,mBAAO;AAAA,cACL,MAAM;AAAA,cACN;AAAA,YACF;AAAA,UACF,OAAO;AACL,mBAAO;AAAA,cACL,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChClB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB,uBAAuB,uBAA0B;AACtE,aAAS,uBAAuB,KAAK;AAAE,aAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,IAAG;AAC9F,aAAS,QAAQ,KAAK;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUA,MAAK;AAAE,eAAO,OAAOA;AAAA,MAAK,IAAI,SAAUA,MAAK;AAAE,eAAOA,QAAO,cAAc,OAAO,UAAUA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAK,GAAG,QAAQ,GAAG;AAAA,IAAG;AAC/U,aAAS,mBAAmB,YAAY,SAAS;AAC/C,UAAI,OAAO,WAAW,cAAc,QAAQ,OAAO,QAAQ,MAAM,UAAU;AACzE,eAAO,eAAe,YAAY,OAAO,UAAU;AAAA,UACjD,OAAO,eAAe,QAAQ,KAAK,OAAO;AAAA,QAC5C,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AChBA;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,kBAAkB;AAAA,MACpB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,kBAAkB;AAAA,MACpB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,oBAAoB;AAAA,MACtB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACnBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AC1BlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACpBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,mBAAmB;AAAA,MACrB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,oBAAoB;AAAA,MACtB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,kBAAkB;AAAA,MACpB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACpBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACpBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,4BAA4B;AAAA,MAC9B,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,sBAAsB;AAAA,MACxB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,0BAA0B;AAAA,MAC5B,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,yBAAyB;AAAA,MAC3B,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,aAAa,CAAC,6BAA6B;AAAA,UAC3C,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACjBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,UAAU;AAAA,MACZ,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,qBAAqB;AAAA,MACvB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AC9ClB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,2BAA2B;AAAA,MAC7B,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,mBAAmB;AAAA,MACrB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACnBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,oBAAoB;AAAA,MACtB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACpBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACxBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,oBAAoB;AAAA,MACtB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AC1BlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AC1BlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,UAAU;AAAA,MACZ,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,uBAAuB;AAAA,MACzB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,oBAAoB;AAAA,MACtB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,qBAAqB;AAAA,MACvB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,oBAAoB;AAAA,MACtB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,kBAAkB;AAAA,MACpB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,UAAU;AAAA,MACZ,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,qBAAqB;AAAA,MACvB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,wBAAwB;AAAA,MAC1B,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,kBAAkB;AAAA,MACpB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,kBAAkB;AAAA,MACpB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,UAAU;AAAA,MACZ,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,sBAAsB;AAAA,MACxB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,kBAAkB;AAAA,MACpB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,qBAAqB;AAAA,MACvB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,iBAAiB;AAAA,MACnB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,UAAU;AAAA,MACZ,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,2BAA2B;AAAA,MAC7B,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACrBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,UACD,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACzBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB;AAAA,MAClB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,GAAG;AAAA,QACD,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AC9BlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,mBAAmB;AAAA,MACrB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AClBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,WAAW;AAAA,MACb,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,eAAe;AAAA,MACjB,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,2BAA2B;AAAA,MAC7B,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,YAAY;AAAA,MACd,iBAAiB,CAAC;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;AChBlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,cAAc;AAAA,MAChB,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,aAAa;AAAA,MACf,iBAAiB,CAAC;AAAA,MAClB,MAAM;AAAA,IACR;AACA,QAAI,WAAW;AACf,YAAQ,UAAU;AAAA;AAAA;;;ACXlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,sBAAsB,uBAAuB,4BAAoC;AACrF,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,mBAAmB,uBAAuB,yBAAwC;AACtF,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,mBAAmB,uBAAuB,yBAAwC;AACtF,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,qBAAqB,uBAAuB,2BAA0C;AAC1F,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,oBAAoB,uBAAuB,0BAAyC;AACxF,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,qBAAqB,uBAAuB,2BAA0C;AAC1F,QAAI,mBAAmB,uBAAuB,yBAAwC;AACtF,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,6BAA6B,uBAAuB,mCAAkD;AAC1G,QAAI,uBAAuB,uBAAuB,6BAA4C;AAC9F,QAAI,2BAA2B,uBAAuB,iCAAgD;AACtG,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,0BAA0B,uBAAuB,gCAA+C;AACpG,QAAI,WAAW,uBAAuB,iBAAgC;AACtE,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,sBAAsB,uBAAuB,4BAA2C;AAC5F,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,4BAA4B,uBAAuB,kCAAiD;AACxG,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,oBAAoB,uBAAuB,0BAAyC;AACxF,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,qBAAqB,uBAAuB,2BAA0C;AAC1F,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,qBAAqB,uBAAuB,2BAA0C;AAC1F,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,WAAW,uBAAuB,iBAAgC;AACtE,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,wBAAwB,uBAAuB,8BAA6C;AAChG,QAAI,qBAAqB,uBAAuB,2BAA0C;AAC1F,QAAI,sBAAsB,uBAAuB,4BAA2C;AAC5F,QAAI,qBAAqB,uBAAuB,2BAA0C;AAC1F,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,mBAAmB,uBAAuB,yBAAwC;AACtF,QAAI,WAAW,uBAAuB,iBAAgC;AACtE,QAAI,sBAAsB,uBAAuB,4BAA2C;AAC5F,QAAI,yBAAyB,uBAAuB,+BAA8C;AAClG,QAAI,mBAAmB,uBAAuB,yBAAwC;AACtF,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,mBAAmB,uBAAuB,yBAAwC;AACtF,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,WAAW,uBAAuB,iBAAgC;AACtE,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,uBAAuB,uBAAuB,6BAA4C;AAC9F,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,mBAAmB,uBAAuB,yBAAwC;AACtF,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,sBAAsB,uBAAuB,4BAA2C;AAC5F,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,kBAAkB,uBAAuB,wBAAuC;AACpF,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,WAAW,uBAAuB,iBAAgC;AACtE,QAAI,4BAA4B,uBAAuB,kCAAiD;AACxG,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,iBAAiB,uBAAuB,uBAAsC;AAClF,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,oBAAoB,uBAAuB,0BAAyC;AACxF,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,YAAY,uBAAuB,kBAAiC;AACxE,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,gBAAgB,uBAAuB,sBAAqC;AAChF,QAAI,4BAA4B,uBAAuB,kCAAiD;AACxG,QAAI,aAAa,uBAAuB,mBAAkC;AAC1E,QAAI,eAAe,uBAAuB,qBAAoC;AAC9E,QAAI,cAAc,uBAAuB,oBAAmC;AAC5E,aAAS,uBAAuB,KAAK;AAAE,aAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,IAAG;AAC9F,aAAS,eAAe,KAAK,GAAG;AAAE,aAAO,gBAAgB,GAAG,KAAK,sBAAsB,KAAK,CAAC,KAAK,4BAA4B,KAAK,CAAC,KAAK,iBAAiB;AAAA,IAAG;AAC7J,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,4BAA4B,GAAG,QAAQ;AAAE,UAAI,CAAC,EAAG;AAAQ,UAAI,OAAO,MAAM,SAAU,QAAO,kBAAkB,GAAG,MAAM;AAAG,UAAI,IAAI,OAAO,UAAU,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,UAAI,MAAM,YAAY,EAAE,YAAa,KAAI,EAAE,YAAY;AAAM,UAAI,MAAM,SAAS,MAAM,MAAO,QAAO,MAAM,KAAK,CAAC;AAAG,UAAI,MAAM,eAAe,2CAA2C,KAAK,CAAC,EAAG,QAAO,kBAAkB,GAAG,MAAM;AAAA,IAAG;AAC/Z,aAAS,kBAAkB,KAAK,KAAK;AAAE,UAAI,OAAO,QAAQ,MAAM,IAAI,OAAQ,OAAM,IAAI;AAAQ,eAAS,IAAI,GAAG,OAAO,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,KAAK;AAAE,aAAK,CAAC,IAAI,IAAI,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAM;AACtL,aAAS,sBAAsB,KAAK,GAAG;AAAE,UAAI,KAAK,OAAO,OAAO,OAAO,OAAO,WAAW,eAAe,IAAI,OAAO,QAAQ,KAAK,IAAI,YAAY;AAAG,UAAI,MAAM,KAAM;AAAQ,UAAI,OAAO,CAAC;AAAG,UAAI,KAAK;AAAM,UAAI,KAAK;AAAO,UAAI,IAAI;AAAI,UAAI;AAAE,aAAK,KAAK,GAAG,KAAK,GAAG,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,MAAM;AAAE,eAAK,KAAK,GAAG,KAAK;AAAG,cAAI,KAAK,KAAK,WAAW,EAAG;AAAA,QAAO;AAAA,MAAE,SAAS,KAAK;AAAE,aAAK;AAAM,aAAK;AAAA,MAAK,UAAE;AAAU,YAAI;AAAE,cAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,KAAM,IAAG,QAAQ,EAAE;AAAA,QAAG,UAAE;AAAU,cAAI,GAAI,OAAM;AAAA,QAAI;AAAA,MAAE;AAAE,aAAO;AAAA,IAAM;AAChgB,aAAS,gBAAgB,KAAK;AAAE,UAAI,MAAM,QAAQ,GAAG,EAAG,QAAO;AAAA,IAAK;AACpE,QAAI,YAAY,CAAC,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,mBAAmB,iBAAiB,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,mBAAmB,iBAAiB,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,qBAAqB,mBAAmB,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,oBAAoB,kBAAkB,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,qBAAqB,mBAAmB,OAAO,GAAG,CAAC,mBAAmB,iBAAiB,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,6BAA6B,2BAA2B,OAAO,GAAG,CAAC,uBAAuB,qBAAqB,OAAO,GAAG,CAAC,2BAA2B,yBAAyB,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,0BAA0B,wBAAwB,OAAO,GAAG,CAAC,WAAW,SAAS,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,sBAAsB,oBAAoB,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,4BAA4B,0BAA0B,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,oBAAoB,kBAAkB,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,qBAAqB,mBAAmB,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,qBAAqB,mBAAmB,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,WAAW,SAAS,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,wBAAwB,sBAAsB,OAAO,GAAG,CAAC,qBAAqB,mBAAmB,OAAO,GAAG,CAAC,sBAAsB,oBAAoB,OAAO,GAAG,CAAC,qBAAqB,mBAAmB,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,mBAAmB,iBAAiB,OAAO,GAAG,CAAC,WAAW,SAAS,OAAO,GAAG,CAAC,sBAAsB,oBAAoB,OAAO,GAAG,CAAC,yBAAyB,uBAAuB,OAAO,GAAG,CAAC,mBAAmB,iBAAiB,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,mBAAmB,iBAAiB,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,WAAW,SAAS,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,uBAAuB,qBAAqB,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,mBAAmB,iBAAiB,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,sBAAsB,oBAAoB,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,kBAAkB,gBAAgB,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,WAAW,SAAS,OAAO,GAAG,CAAC,4BAA4B,0BAA0B,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,iBAAiB,eAAe,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,oBAAoB,kBAAkB,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,YAAY,UAAU,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,gBAAgB,cAAc,OAAO,GAAG,CAAC,4BAA4B,0BAA0B,OAAO,GAAG,CAAC,aAAa,WAAW,OAAO,GAAG,CAAC,eAAe,aAAa,OAAO,GAAG,CAAC,cAAc,YAAY,OAAO,CAAC;AAC7kK,QAAI,eAAe;AAAA,MACjB,SAAS,SAAS,UAAU;AAC1B,eAAO;AAAA,MACT;AAAA,MACA,SAAS,SAAS,QAAQ,IAAI;AAC5B,YAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,iBAAS,KAAK,GAAG,aAAa,WAAW,KAAK,WAAW,QAAQ,MAAM;AACrE,cAAI,gBAAgB,eAAe,WAAW,EAAE,GAAG,CAAC,GAClD,MAAM,cAAc,CAAC,GACrB,SAAS,cAAc,CAAC;AAC1B,aAAG,KAAK,SAAS,QAAQ,KAAK,SAAS;AAAA,QACzC;AAAA,MACF;AAAA,MACA,KAAK,SAAS,IAAI,KAAK;AACrB,YAAI,OAAO,UAAU,KAAK,SAAU,OAAO;AACzC,iBAAO,MAAM,CAAC,MAAM,MAAM,OAAO;AAAA,QACnC,CAAC;AACD,eAAO,QAAQ,KAAK,CAAC;AAAA,MACvB;AAAA,MACA,KAAK,SAAS,IAAI,KAAK;AACrB,eAAO,CAAC,CAAC,aAAa,IAAI,GAAG;AAAA,MAC/B;AAAA,MACA,MAAM,SAAS,OAAO;AACpB,eAAO,UAAU,IAAI,SAAU,MAAM;AACnC,cAAI,QAAQ,eAAe,MAAM,CAAC,GAChC,MAAM,MAAM,CAAC;AACf,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MACA,QAAQ,SAAS,SAAS;AACxB,eAAO,UAAU,IAAI,SAAU,OAAO;AACpC,cAAI,QAAQ,eAAe,OAAO,CAAC,GACjCC,UAAS,MAAM,CAAC;AAClB,iBAAOA;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,YAAY,GAAG,oBAAoB,SAAS,cAAc,aAAa,QAAQ,CAAC;AACpF,YAAQ,UAAU;AAAA;AAAA;;;ACjLlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,sBAAsB,uBAAuB,4BAAoC;AACrF,QAAI,gBAAgB,uBAAuB,sBAAyB;AACpE,aAAS,uBAAuB,KAAK;AAAE,aAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,IAAG;AAC9F,aAAS,eAAe,KAAK,GAAG;AAAE,aAAO,gBAAgB,GAAG,KAAK,sBAAsB,KAAK,CAAC,KAAK,4BAA4B,KAAK,CAAC,KAAK,iBAAiB;AAAA,IAAG;AAC7J,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,sBAAsB,KAAK,GAAG;AAAE,UAAI,KAAK,OAAO,OAAO,OAAO,OAAO,WAAW,eAAe,IAAI,OAAO,QAAQ,KAAK,IAAI,YAAY;AAAG,UAAI,MAAM,KAAM;AAAQ,UAAI,OAAO,CAAC;AAAG,UAAI,KAAK;AAAM,UAAI,KAAK;AAAO,UAAI,IAAI;AAAI,UAAI;AAAE,aAAK,KAAK,GAAG,KAAK,GAAG,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,MAAM;AAAE,eAAK,KAAK,GAAG,KAAK;AAAG,cAAI,KAAK,KAAK,WAAW,EAAG;AAAA,QAAO;AAAA,MAAE,SAAS,KAAK;AAAE,aAAK;AAAM,aAAK;AAAA,MAAK,UAAE;AAAU,YAAI;AAAE,cAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,KAAM,IAAG,QAAQ,EAAE;AAAA,QAAG,UAAE;AAAU,cAAI,GAAI,OAAM;AAAA,QAAI;AAAA,MAAE;AAAE,aAAO;AAAA,IAAM;AAChgB,aAAS,gBAAgB,KAAK;AAAE,UAAI,MAAM,QAAQ,GAAG,EAAG,QAAO;AAAA,IAAK;AACpE,aAAS,2BAA2B,GAAG,gBAAgB;AAAE,UAAI,KAAK,OAAO,WAAW,eAAe,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,CAAC,IAAI;AAAE,YAAI,MAAM,QAAQ,CAAC,MAAM,KAAK,4BAA4B,CAAC,MAAM,kBAAkB,KAAK,OAAO,EAAE,WAAW,UAAU;AAAE,cAAI,GAAI,KAAI;AAAI,cAAI,IAAI;AAAG,cAAI,IAAI,SAASC,KAAI;AAAA,UAAC;AAAG,iBAAO,EAAE,GAAG,GAAG,GAAG,SAAS,IAAI;AAAE,gBAAI,KAAK,EAAE,OAAQ,QAAO,EAAE,MAAM,KAAK;AAAG,mBAAO,EAAE,MAAM,OAAO,OAAO,EAAE,GAAG,EAAE;AAAA,UAAG,GAAG,GAAG,SAAS,EAAE,KAAK;AAAE,kBAAM;AAAA,UAAK,GAAG,GAAG,EAAE;AAAA,QAAG;AAAE,cAAM,IAAI,UAAU,uIAAuI;AAAA,MAAG;AAAE,UAAI,mBAAmB,MAAM,SAAS,OAAO;AAAK,aAAO,EAAE,GAAG,SAAS,IAAI;AAAE,aAAK,GAAG,KAAK,CAAC;AAAA,MAAG,GAAG,GAAG,SAAS,IAAI;AAAE,YAAI,OAAO,GAAG,KAAK;AAAG,2BAAmB,KAAK;AAAM,eAAO;AAAA,MAAM,GAAG,GAAG,SAAS,EAAE,KAAK;AAAE,iBAAS;AAAM,cAAM;AAAA,MAAK,GAAG,GAAG,SAAS,IAAI;AAAE,YAAI;AAAE,cAAI,CAAC,oBAAoB,GAAG,UAAU,KAAM,IAAG,OAAO;AAAA,QAAG,UAAE;AAAU,cAAI,OAAQ,OAAM;AAAA,QAAK;AAAA,MAAE,EAAE;AAAA,IAAG;AACv+B,aAAS,4BAA4B,GAAG,QAAQ;AAAE,UAAI,CAAC,EAAG;AAAQ,UAAI,OAAO,MAAM,SAAU,QAAO,kBAAkB,GAAG,MAAM;AAAG,UAAI,IAAI,OAAO,UAAU,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,UAAI,MAAM,YAAY,EAAE,YAAa,KAAI,EAAE,YAAY;AAAM,UAAI,MAAM,SAAS,MAAM,MAAO,QAAO,MAAM,KAAK,CAAC;AAAG,UAAI,MAAM,eAAe,2CAA2C,KAAK,CAAC,EAAG,QAAO,kBAAkB,GAAG,MAAM;AAAA,IAAG;AAC/Z,aAAS,kBAAkB,KAAK,KAAK;AAAE,UAAI,OAAO,QAAQ,MAAM,IAAI,OAAQ,OAAM,IAAI;AAAQ,eAAS,IAAI,GAAG,OAAO,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,KAAK;AAAE,aAAK,CAAC,IAAI,IAAI,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAM;AACtL,QAAI,mBAAmB,CAAC;AACxB,QAAI,YAAY,2BAA2B,cAAc,QAAQ,QAAQ,CAAC;AAA1E,QACE;AACF,QAAI;AACE,cAAQ,SAASC,SAAQ;AAC3B,YAAI,cAAc,eAAe,MAAM,OAAO,CAAC,GAC7C,OAAO,YAAY,CAAC,GACpB,MAAM,YAAY,CAAC;AACrB,YAAI,kBAAkB,IAAI;AAC1B,YAAI,MAAM,QAAQ,eAAe,GAAG;AAClC,0BAAgB,QAAQ,SAAU,UAAU;AAC1C,gBAAI,SAAS,WAAW,QAAQ;AAC9B,kBAAI,UAAU,SAAS;AACvB,kBAAI,SAAS;AACX,oBAAI,QAAQ,iBAAiB,UAAU,SAAU,OAAO;AACtD,sBAAI,QAAQ,eAAe,OAAO,CAAC,GACjC,MAAM,MAAM,CAAC;AACf,yBAAO,QAAQ;AAAA,gBACjB,CAAC;AACD,oBAAI,UAAU,IAAI;AAChB,mCAAiB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,0BAAQ,iBAAiB,SAAS;AAAA,gBACpC;AACA,iCAAiB,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO;AAAA,cACzC;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AACA,WAAK,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,EAAE,GAAG,QAAO;AAClD,cAAM;AAAA,MACR;AAAA,IACF,SAAS,KAAK;AACZ,gBAAU,EAAE,GAAG;AAAA,IACjB,UAAE;AACA,gBAAU,EAAE;AAAA,IACd;AAhCM;AAiCN,QAAI,qBAAqB;AAAA,MACvB,SAAS,SAAS,UAAU;AAC1B,eAAO;AAAA,MACT;AAAA,MACA,SAAS,SAAS,QAAQ,IAAI;AAC5B,YAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,iBAAS,KAAK,GAAG,oBAAoB,kBAAkB,KAAK,kBAAkB,QAAQ,MAAM;AAC1F,cAAI,uBAAuB,eAAe,kBAAkB,EAAE,GAAG,CAAC,GAChE,MAAM,qBAAqB,CAAC,GAC5B,SAAS,qBAAqB,CAAC;AACjC,aAAG,KAAK,SAAS,QAAQ,KAAK,gBAAgB;AAAA,QAChD;AAAA,MACF;AAAA,MACA,KAAK,SAAS,IAAI,KAAK;AACrB,YAAI,OAAO,iBAAiB,KAAK,SAAU,OAAO;AAChD,iBAAO,MAAM,CAAC,MAAM,MAAM,OAAO;AAAA,QACnC,CAAC;AACD,eAAO,QAAQ,KAAK,CAAC;AAAA,MACvB;AAAA,MACA,KAAK,SAAS,IAAI,KAAK;AACrB,eAAO,CAAC,CAAC,mBAAmB,IAAI,GAAG;AAAA,MACrC;AAAA,MACA,MAAM,SAAS,OAAO;AACpB,eAAO,iBAAiB,IAAI,SAAU,MAAM;AAC1C,cAAI,QAAQ,eAAe,MAAM,CAAC,GAChC,MAAM,MAAM,CAAC;AACf,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MACA,QAAQ,SAAS,SAAS;AACxB,eAAO,iBAAiB,IAAI,SAAU,OAAO;AAC3C,cAAI,QAAQ,eAAe,OAAO,CAAC,GACjCC,UAAS,MAAM,CAAC;AAClB,iBAAOA;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,YAAY,GAAG,oBAAoB,SAAS,oBAAoB,mBAAmB,QAAQ,CAAC;AAChG,YAAQ,UAAU;AAAA;AAAA;;;AC3FlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,sBAAsB,uBAAuB,4BAAoC;AACrF,QAAI,gBAAgB,uBAAuB,sBAAyB;AACpE,aAAS,uBAAuB,KAAK;AAAE,aAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,IAAG;AAC9F,aAAS,eAAe,KAAK,GAAG;AAAE,aAAO,gBAAgB,GAAG,KAAK,sBAAsB,KAAK,CAAC,KAAK,4BAA4B,KAAK,CAAC,KAAK,iBAAiB;AAAA,IAAG;AAC7J,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,sBAAsB,KAAK,GAAG;AAAE,UAAI,KAAK,OAAO,OAAO,OAAO,OAAO,WAAW,eAAe,IAAI,OAAO,QAAQ,KAAK,IAAI,YAAY;AAAG,UAAI,MAAM,KAAM;AAAQ,UAAI,OAAO,CAAC;AAAG,UAAI,KAAK;AAAM,UAAI,KAAK;AAAO,UAAI,IAAI;AAAI,UAAI;AAAE,aAAK,KAAK,GAAG,KAAK,GAAG,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,MAAM;AAAE,eAAK,KAAK,GAAG,KAAK;AAAG,cAAI,KAAK,KAAK,WAAW,EAAG;AAAA,QAAO;AAAA,MAAE,SAAS,KAAK;AAAE,aAAK;AAAM,aAAK;AAAA,MAAK,UAAE;AAAU,YAAI;AAAE,cAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,KAAM,IAAG,QAAQ,EAAE;AAAA,QAAG,UAAE;AAAU,cAAI,GAAI,OAAM;AAAA,QAAI;AAAA,MAAE;AAAE,aAAO;AAAA,IAAM;AAChgB,aAAS,gBAAgB,KAAK;AAAE,UAAI,MAAM,QAAQ,GAAG,EAAG,QAAO;AAAA,IAAK;AACpE,aAAS,2BAA2B,GAAG,gBAAgB;AAAE,UAAI,KAAK,OAAO,WAAW,eAAe,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,CAAC,IAAI;AAAE,YAAI,MAAM,QAAQ,CAAC,MAAM,KAAK,4BAA4B,CAAC,MAAM,kBAAkB,KAAK,OAAO,EAAE,WAAW,UAAU;AAAE,cAAI,GAAI,KAAI;AAAI,cAAI,IAAI;AAAG,cAAI,IAAI,SAASC,KAAI;AAAA,UAAC;AAAG,iBAAO,EAAE,GAAG,GAAG,GAAG,SAAS,IAAI;AAAE,gBAAI,KAAK,EAAE,OAAQ,QAAO,EAAE,MAAM,KAAK;AAAG,mBAAO,EAAE,MAAM,OAAO,OAAO,EAAE,GAAG,EAAE;AAAA,UAAG,GAAG,GAAG,SAAS,EAAE,KAAK;AAAE,kBAAM;AAAA,UAAK,GAAG,GAAG,EAAE;AAAA,QAAG;AAAE,cAAM,IAAI,UAAU,uIAAuI;AAAA,MAAG;AAAE,UAAI,mBAAmB,MAAM,SAAS,OAAO;AAAK,aAAO,EAAE,GAAG,SAAS,IAAI;AAAE,aAAK,GAAG,KAAK,CAAC;AAAA,MAAG,GAAG,GAAG,SAAS,IAAI;AAAE,YAAI,OAAO,GAAG,KAAK;AAAG,2BAAmB,KAAK;AAAM,eAAO;AAAA,MAAM,GAAG,GAAG,SAAS,EAAE,KAAK;AAAE,iBAAS;AAAM,cAAM;AAAA,MAAK,GAAG,GAAG,SAAS,IAAI;AAAE,YAAI;AAAE,cAAI,CAAC,oBAAoB,GAAG,UAAU,KAAM,IAAG,OAAO;AAAA,QAAG,UAAE;AAAU,cAAI,OAAQ,OAAM;AAAA,QAAK;AAAA,MAAE,EAAE;AAAA,IAAG;AACv+B,aAAS,4BAA4B,GAAG,QAAQ;AAAE,UAAI,CAAC,EAAG;AAAQ,UAAI,OAAO,MAAM,SAAU,QAAO,kBAAkB,GAAG,MAAM;AAAG,UAAI,IAAI,OAAO,UAAU,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,UAAI,MAAM,YAAY,EAAE,YAAa,KAAI,EAAE,YAAY;AAAM,UAAI,MAAM,SAAS,MAAM,MAAO,QAAO,MAAM,KAAK,CAAC;AAAG,UAAI,MAAM,eAAe,2CAA2C,KAAK,CAAC,EAAG,QAAO,kBAAkB,GAAG,MAAM;AAAA,IAAG;AAC/Z,aAAS,kBAAkB,KAAK,KAAK;AAAE,UAAI,OAAO,QAAQ,MAAM,IAAI,OAAQ,OAAM,IAAI;AAAQ,eAAS,IAAI,GAAG,OAAO,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,KAAK;AAAE,aAAK,CAAC,IAAI,IAAI,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAM;AACtL,QAAI,uBAAuB,CAAC;AAC5B,QAAI,YAAY,2BAA2B,cAAc,QAAQ,QAAQ,CAAC;AAA1E,QACE;AACF,QAAI;AACE,cAAQ,SAASC,SAAQ;AAC3B,YAAI,cAAc,eAAe,MAAM,OAAO,CAAC,GAC7C,OAAO,YAAY,CAAC,GACpB,MAAM,YAAY,CAAC;AACrB,YAAI,kBAAkB,IAAI;AAC1B,YAAI,MAAM,QAAQ,eAAe,GAAG;AAClC,0BAAgB,QAAQ,SAAU,UAAU;AAC1C,gBAAI,SAAS,WAAW,QAAQ;AAC9B,kBAAI,UAAU,SAAS;AACvB,kBAAI,SAAS;AACX,oBAAI,QAAQ,qBAAqB,UAAU,SAAU,OAAO;AAC1D,sBAAI,QAAQ,eAAe,OAAO,CAAC,GACjC,MAAM,MAAM,CAAC;AACf,yBAAO,QAAQ;AAAA,gBACjB,CAAC;AACD,oBAAI,UAAU,IAAI;AAChB,uCAAqB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,0BAAQ,qBAAqB,SAAS;AAAA,gBACxC;AACA,qCAAqB,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO;AAAA,cAC7C;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AACA,WAAK,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,EAAE,GAAG,QAAO;AAClD,cAAM;AAAA,MACR;AAAA,IACF,SAAS,KAAK;AACZ,gBAAU,EAAE,GAAG;AAAA,IACjB,UAAE;AACA,gBAAU,EAAE;AAAA,IACd;AAhCM;AAiCN,QAAI,kBAAkB;AAAA,MACpB,SAAS,SAAS,UAAU;AAC1B,eAAO;AAAA,MACT;AAAA,MACA,SAAS,SAAS,QAAQ,IAAI;AAC5B,YAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,iBAAS,KAAK,GAAG,wBAAwB,sBAAsB,KAAK,sBAAsB,QAAQ,MAAM;AACtG,cAAI,yBAAyB,eAAe,sBAAsB,EAAE,GAAG,CAAC,GACtE,MAAM,uBAAuB,CAAC,GAC9B,SAAS,uBAAuB,CAAC;AACnC,aAAG,KAAK,SAAS,QAAQ,KAAK,oBAAoB;AAAA,QACpD;AAAA,MACF;AAAA,MACA,KAAK,SAAS,IAAI,KAAK;AACrB,YAAI,OAAO,qBAAqB,KAAK,SAAU,OAAO;AACpD,iBAAO,MAAM,CAAC,MAAM,MAAM,OAAO;AAAA,QACnC,CAAC;AACD,eAAO,QAAQ,KAAK,CAAC;AAAA,MACvB;AAAA,MACA,KAAK,SAAS,IAAI,KAAK;AACrB,eAAO,CAAC,CAAC,gBAAgB,IAAI,GAAG;AAAA,MAClC;AAAA,MACA,MAAM,SAAS,OAAO;AACpB,eAAO,qBAAqB,IAAI,SAAU,MAAM;AAC9C,cAAI,QAAQ,eAAe,MAAM,CAAC,GAChC,MAAM,MAAM,CAAC;AACf,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MACA,QAAQ,SAAS,SAAS;AACxB,eAAO,qBAAqB,IAAI,SAAU,OAAO;AAC/C,cAAI,QAAQ,eAAe,OAAO,CAAC,GACjCC,UAAS,MAAM,CAAC;AAClB,iBAAOA;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,YAAY,GAAG,oBAAoB,SAAS,iBAAiB,gBAAgB,QAAQ,CAAC;AAC1F,YAAQ,UAAU;AAAA;AAAA;;;AC3FlB;AAAA;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,UAAU;AAClB,QAAI,gBAAgB,uBAAuB,sBAAyB;AACpE,QAAI,sBAAsB,uBAAuB,4BAAoC;AACrF,aAAS,uBAAuB,KAAK;AAAE,aAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,IAAG;AAC9F,aAAS,eAAe,KAAK,GAAG;AAAE,aAAO,gBAAgB,GAAG,KAAK,sBAAsB,KAAK,CAAC,KAAK,4BAA4B,KAAK,CAAC,KAAK,iBAAiB;AAAA,IAAG;AAC7J,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,sBAAsB,KAAK,GAAG;AAAE,UAAI,KAAK,OAAO,OAAO,OAAO,OAAO,WAAW,eAAe,IAAI,OAAO,QAAQ,KAAK,IAAI,YAAY;AAAG,UAAI,MAAM,KAAM;AAAQ,UAAI,OAAO,CAAC;AAAG,UAAI,KAAK;AAAM,UAAI,KAAK;AAAO,UAAI,IAAI;AAAI,UAAI;AAAE,aAAK,KAAK,GAAG,KAAK,GAAG,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,MAAM;AAAE,eAAK,KAAK,GAAG,KAAK;AAAG,cAAI,KAAK,KAAK,WAAW,EAAG;AAAA,QAAO;AAAA,MAAE,SAAS,KAAK;AAAE,aAAK;AAAM,aAAK;AAAA,MAAK,UAAE;AAAU,YAAI;AAAE,cAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,KAAM,IAAG,QAAQ,EAAE;AAAA,QAAG,UAAE;AAAU,cAAI,GAAI,OAAM;AAAA,QAAI;AAAA,MAAE;AAAE,aAAO;AAAA,IAAM;AAChgB,aAAS,gBAAgB,KAAK;AAAE,UAAI,MAAM,QAAQ,GAAG,EAAG,QAAO;AAAA,IAAK;AACpE,aAAS,2BAA2B,GAAG,gBAAgB;AAAE,UAAI,KAAK,OAAO,WAAW,eAAe,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,CAAC,IAAI;AAAE,YAAI,MAAM,QAAQ,CAAC,MAAM,KAAK,4BAA4B,CAAC,MAAM,kBAAkB,KAAK,OAAO,EAAE,WAAW,UAAU;AAAE,cAAI,GAAI,KAAI;AAAI,cAAI,IAAI;AAAG,cAAI,IAAI,SAASC,KAAI;AAAA,UAAC;AAAG,iBAAO,EAAE,GAAG,GAAG,GAAG,SAAS,IAAI;AAAE,gBAAI,KAAK,EAAE,OAAQ,QAAO,EAAE,MAAM,KAAK;AAAG,mBAAO,EAAE,MAAM,OAAO,OAAO,EAAE,GAAG,EAAE;AAAA,UAAG,GAAG,GAAG,SAAS,EAAE,KAAK;AAAE,kBAAM;AAAA,UAAK,GAAG,GAAG,EAAE;AAAA,QAAG;AAAE,cAAM,IAAI,UAAU,uIAAuI;AAAA,MAAG;AAAE,UAAI,mBAAmB,MAAM,SAAS,OAAO;AAAK,aAAO,EAAE,GAAG,SAAS,IAAI;AAAE,aAAK,GAAG,KAAK,CAAC;AAAA,MAAG,GAAG,GAAG,SAAS,IAAI;AAAE,YAAI,OAAO,GAAG,KAAK;AAAG,2BAAmB,KAAK;AAAM,eAAO;AAAA,MAAM,GAAG,GAAG,SAAS,EAAE,KAAK;AAAE,iBAAS;AAAM,cAAM;AAAA,MAAK,GAAG,GAAG,SAAS,IAAI;AAAE,YAAI;AAAE,cAAI,CAAC,oBAAoB,GAAG,UAAU,KAAM,IAAG,OAAO;AAAA,QAAG,UAAE;AAAU,cAAI,OAAQ,OAAM;AAAA,QAAK;AAAA,MAAE,EAAE;AAAA,IAAG;AACv+B,aAAS,4BAA4B,GAAG,QAAQ;AAAE,UAAI,CAAC,EAAG;AAAQ,UAAI,OAAO,MAAM,SAAU,QAAO,kBAAkB,GAAG,MAAM;AAAG,UAAI,IAAI,OAAO,UAAU,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,UAAI,MAAM,YAAY,EAAE,YAAa,KAAI,EAAE,YAAY;AAAM,UAAI,MAAM,SAAS,MAAM,MAAO,QAAO,MAAM,KAAK,CAAC;AAAG,UAAI,MAAM,eAAe,2CAA2C,KAAK,CAAC,EAAG,QAAO,kBAAkB,GAAG,MAAM;AAAA,IAAG;AAC/Z,aAAS,kBAAkB,KAAK,KAAK;AAAE,UAAI,OAAO,QAAQ,MAAM,IAAI,OAAQ,OAAM,IAAI;AAAQ,eAAS,IAAI,GAAG,OAAO,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,KAAK;AAAE,aAAK,CAAC,IAAI,IAAI,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAM;AACtL,QAAI,mBAAmB,CAAC;AACxB,QAAI,YAAY,2BAA2B,cAAc,QAAQ,QAAQ,CAAC;AAA1E,QACE;AACF,QAAI;AACE,cAAQ,SAASC,SAAQ;AAC3B,YAAI,cAAc,eAAe,MAAM,OAAO,CAAC,GAC7C,OAAO,YAAY,CAAC,GACpB,MAAM,YAAY,CAAC;AACrB,YAAI,kBAAkB,IAAI;AAC1B,YAAI,MAAM,QAAQ,eAAe,GAAG;AAClC,0BAAgB,QAAQ,SAAU,UAAU;AAC1C,gBAAI,SAAS,WAAW,QAAQ;AAC9B,kBAAI,UAAU,SAAS;AACvB,kBAAI,WAAW,MAAM;AACnB,oBAAI,aAAa,KAAK,UAAU,OAAO;AACvC,oBAAI;AACJ,oBAAI,QAAQ;AACZ,uBAAO,QAAQ,iBAAiB,QAAQ,SAAS;AAC/C,sBAAI,MAAM,iBAAiB,KAAK,EAAE,CAAC;AACnC,sBAAI,KAAK,UAAU,GAAG,MAAM,YAAY;AACtC,gCAAY,iBAAiB,KAAK,EAAE,CAAC;AACrC;AAAA,kBACF;AAAA,gBACF;AACA,oBAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC7B,8BAAY,CAAC;AAAA,gBACf;AACA,oBAAI,MAAM,UAAU,UAAU,SAAU,MAAM;AAC5C,yBAAO,SAAS;AAAA,gBAClB,CAAC;AACD,oBAAI,QAAQ,IAAI;AACd,4BAAU,KAAK,IAAI;AAAA,gBACrB;AACA,oBAAI,QAAQ,iBAAiB,QAAQ;AACnC,mCAAiB,OAAO,OAAO,GAAG,CAAC,SAAS,SAAS,CAAC;AAAA,gBACxD,OAAO;AACL,mCAAiB,KAAK,CAAC,SAAS,SAAS,CAAC;AAAA,gBAC5C;AAAA,cACF;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AACA,WAAK,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,EAAE,GAAG,QAAO;AAClD,cAAM;AAAA,MACR;AAAA,IACF,SAAS,KAAK;AACZ,gBAAU,EAAE,GAAG;AAAA,IACjB,UAAE;AACA,gBAAU,EAAE;AAAA,IACd;AA9CM;AA+CN,aAAS,mDAAmD,GAAG,GAAG;AAChE,UAAI,MAAM,UAAa,MAAM,QAAW;AACtC,eAAO;AAAA,MACT;AACA,UAAI,MAAM,UAAa,MAAM,QAAW;AACtC,eAAO;AAAA,MACT;AACA,UAAI,MAAM,UAAa,MAAM,QAAW;AACtC,YAAI,EAAE,UAAU,EAAE,QAAQ;AACxB,iBAAO;AAAA,QACT;AAIA,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,cAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO;AACxD,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,QAAI,qBAAqB;AAAA,MACvB,SAAS,SAAS,UAAU;AAC1B,eAAO;AAAA,MACT;AAAA,MACA,SAAS,SAAS,QAAQ,IAAI;AAC5B,YAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,iBAAS,KAAK,GAAG,oBAAoB,kBAAkB,KAAK,kBAAkB,QAAQ,MAAM;AAC1F,cAAI,uBAAuB,eAAe,kBAAkB,EAAE,GAAG,CAAC,GAChE,MAAM,qBAAqB,CAAC,GAC5B,SAAS,qBAAqB,CAAC;AACjC,aAAG,KAAK,SAAS,QAAQ,KAAK,gBAAgB;AAAA,QAChD;AAAA,MACF;AAAA,MACA,KAAK,SAAS,IAAI,KAAK;AACrB,YAAI,OAAO,iBAAiB,KAAK,SAAU,OAAO;AAChD,iBAAO,IAAI,SAAS,MAAM,CAAC,EAAE,QAAQ,mDAAmD,IAAI,YAAY,MAAM,CAAC,EAAE,UAAU;AAAA,QAC7H,CAAC;AACD,eAAO,QAAQ,KAAK,CAAC;AAAA,MACvB;AAAA,MACA,KAAK,SAAS,IAAI,KAAK;AACrB,eAAO,CAAC,CAAC,mBAAmB,IAAI,GAAG;AAAA,MACrC;AAAA,MACA,MAAM,SAAS,OAAO;AACpB,eAAO,iBAAiB,IAAI,SAAU,MAAM;AAC1C,cAAI,QAAQ,eAAe,MAAM,CAAC,GAChC,MAAM,MAAM,CAAC;AACf,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MACA,QAAQ,SAAS,SAAS;AACxB,eAAO,iBAAiB,IAAI,SAAU,OAAO;AAC3C,cAAI,QAAQ,eAAe,OAAO,CAAC,GACjCC,UAAS,MAAM,CAAC;AAClB,iBAAOA;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,YAAY,GAAG,oBAAoB,SAAS,oBAAoB,mBAAmB,QAAQ,CAAC;AAChG,YAAQ,UAAU;AAAA;AAAA;;;AC/HlB;AAAA;AAEA,WAAO,eAAe,SAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,YAAQ,mBAAmB,QAAQ,YAAY,QAAQ,gBAAgB,QAAQ,mBAAmB;AAClG,QAAI,sBAAsB,uBAAuB,4BAA+B;AAChF,QAAI,mBAAmB,uBAAuB,yBAA4B;AAC1E,QAAI,gBAAgB,uBAAuB,sBAAyB;AACpE,QAAI,sBAAsB,uBAAuB,4BAA+B;AAChF,aAAS,uBAAuB,KAAK;AAAE,aAAO,OAAO,IAAI,aAAa,MAAM,EAAE,SAAS,IAAI;AAAA,IAAG;AAC9F,QAAI,mBAAmB,oBAAoB;AAC3C,YAAQ,mBAAmB;AAC3B,QAAI,gBAAgB,iBAAiB;AACrC,YAAQ,gBAAgB;AACxB,QAAI,YAAY,cAAc;AAC9B,YAAQ,YAAY;AACpB,QAAI,mBAAmB,oBAAoB;AAC3C,YAAQ,mBAAmB;AAAA;AAAA;", - "names": ["obj", "values", "F", "_loop", "values", "F", "_loop", "values", "F", "_loop", "values"] -} diff --git a/site/node_modules/.vite/deps/astro___cssesc.js b/site/node_modules/.vite/deps/astro___cssesc.js deleted file mode 100644 index f418f4fe77..0000000000 --- a/site/node_modules/.vite/deps/astro___cssesc.js +++ /dev/null @@ -1,99 +0,0 @@ -import { - __commonJS -} from "./chunk-BUSYA2B4.js"; - -// node_modules/cssesc/cssesc.js -var require_cssesc = __commonJS({ - "node_modules/cssesc/cssesc.js"(exports, module) { - var object = {}; - var hasOwnProperty = object.hasOwnProperty; - var merge = function merge2(options, defaults) { - if (!options) { - return defaults; - } - var result = {}; - for (var key in defaults) { - result[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key]; - } - return result; - }; - var regexAnySingleEscape = /[ -,\.\/:-@\[-\^`\{-~]/; - var regexSingleEscape = /[ -,\.\/:-@\[\]\^`\{-~]/; - var regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g; - var cssesc = function cssesc2(string, options) { - options = merge(options, cssesc2.options); - if (options.quotes != "single" && options.quotes != "double") { - options.quotes = "single"; - } - var quote = options.quotes == "double" ? '"' : "'"; - var isIdentifier = options.isIdentifier; - var firstChar = string.charAt(0); - var output = ""; - var counter = 0; - var length = string.length; - while (counter < length) { - var character = string.charAt(counter++); - var codePoint = character.charCodeAt(); - var value = void 0; - if (codePoint < 32 || codePoint > 126) { - if (codePoint >= 55296 && codePoint <= 56319 && counter < length) { - var extra = string.charCodeAt(counter++); - if ((extra & 64512) == 56320) { - codePoint = ((codePoint & 1023) << 10) + (extra & 1023) + 65536; - } else { - counter--; - } - } - value = "\\" + codePoint.toString(16).toUpperCase() + " "; - } else { - if (options.escapeEverything) { - if (regexAnySingleEscape.test(character)) { - value = "\\" + character; - } else { - value = "\\" + codePoint.toString(16).toUpperCase() + " "; - } - } else if (/[\t\n\f\r\x0B]/.test(character)) { - value = "\\" + codePoint.toString(16).toUpperCase() + " "; - } else if (character == "\\" || !isIdentifier && (character == '"' && quote == character || character == "'" && quote == character) || isIdentifier && regexSingleEscape.test(character)) { - value = "\\" + character; - } else { - value = character; - } - } - output += value; - } - if (isIdentifier) { - if (/^-[-\d]/.test(output)) { - output = "\\-" + output.slice(1); - } else if (/\d/.test(firstChar)) { - output = "\\3" + firstChar + " " + output.slice(1); - } - } - output = output.replace(regexExcessiveSpaces, function($0, $1, $2) { - if ($1 && $1.length % 2) { - return $0; - } - return ($1 || "") + $2; - }); - if (!isIdentifier && options.wrap) { - return quote + output + quote; - } - return output; - }; - cssesc.options = { - "escapeEverything": false, - "isIdentifier": false, - "quotes": "single", - "wrap": false - }; - cssesc.version = "3.0.0"; - module.exports = cssesc; - } -}); -export default require_cssesc(); -/*! Bundled license information: - -cssesc/cssesc.js: - (*! https://mths.be/cssesc v3.0.0 by @mathias *) -*/ -//# sourceMappingURL=astro___cssesc.js.map diff --git a/site/node_modules/.vite/deps/astro___cssesc.js.map b/site/node_modules/.vite/deps/astro___cssesc.js.map deleted file mode 100644 index 51d909ec73..0000000000 --- a/site/node_modules/.vite/deps/astro___cssesc.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../node_modules/cssesc/cssesc.js"], - "sourcesContent": ["/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n"], - "mappings": ";;;;;AAAA;AAAA;AAGA,QAAI,SAAS,CAAC;AACd,QAAI,iBAAiB,OAAO;AAC5B,QAAI,QAAQ,SAASA,OAAM,SAAS,UAAU;AAC7C,UAAI,CAAC,SAAS;AACb,eAAO;AAAA,MACR;AACA,UAAI,SAAS,CAAC;AACd,eAAS,OAAO,UAAU;AAGzB,eAAO,GAAG,IAAI,eAAe,KAAK,SAAS,GAAG,IAAI,QAAQ,GAAG,IAAI,SAAS,GAAG;AAAA,MAC9E;AACA,aAAO;AAAA,IACR;AAEA,QAAI,uBAAuB;AAC3B,QAAI,oBAAoB;AAExB,QAAI,uBAAuB;AAG3B,QAAI,SAAS,SAASC,QAAO,QAAQ,SAAS;AAC7C,gBAAU,MAAM,SAASA,QAAO,OAAO;AACvC,UAAI,QAAQ,UAAU,YAAY,QAAQ,UAAU,UAAU;AAC7D,gBAAQ,SAAS;AAAA,MAClB;AACA,UAAI,QAAQ,QAAQ,UAAU,WAAW,MAAM;AAC/C,UAAI,eAAe,QAAQ;AAE3B,UAAI,YAAY,OAAO,OAAO,CAAC;AAC/B,UAAI,SAAS;AACb,UAAI,UAAU;AACd,UAAI,SAAS,OAAO;AACpB,aAAO,UAAU,QAAQ;AACxB,YAAI,YAAY,OAAO,OAAO,SAAS;AACvC,YAAI,YAAY,UAAU,WAAW;AACrC,YAAI,QAAQ;AAEZ,YAAI,YAAY,MAAQ,YAAY,KAAM;AACzC,cAAI,aAAa,SAAU,aAAa,SAAU,UAAU,QAAQ;AAEnE,gBAAI,QAAQ,OAAO,WAAW,SAAS;AACvC,iBAAK,QAAQ,UAAW,OAAQ;AAE/B,4BAAc,YAAY,SAAU,OAAO,QAAQ,QAAS;AAAA,YAC7D,OAAO;AAGN;AAAA,YACD;AAAA,UACD;AACA,kBAAQ,OAAO,UAAU,SAAS,EAAE,EAAE,YAAY,IAAI;AAAA,QACvD,OAAO;AACN,cAAI,QAAQ,kBAAkB;AAC7B,gBAAI,qBAAqB,KAAK,SAAS,GAAG;AACzC,sBAAQ,OAAO;AAAA,YAChB,OAAO;AACN,sBAAQ,OAAO,UAAU,SAAS,EAAE,EAAE,YAAY,IAAI;AAAA,YACvD;AAAA,UACD,WAAW,iBAAiB,KAAK,SAAS,GAAG;AAC5C,oBAAQ,OAAO,UAAU,SAAS,EAAE,EAAE,YAAY,IAAI;AAAA,UACvD,WAAW,aAAa,QAAQ,CAAC,iBAAiB,aAAa,OAAO,SAAS,aAAa,aAAa,OAAQ,SAAS,cAAc,gBAAgB,kBAAkB,KAAK,SAAS,GAAG;AAC1L,oBAAQ,OAAO;AAAA,UAChB,OAAO;AACN,oBAAQ;AAAA,UACT;AAAA,QACD;AACA,kBAAU;AAAA,MACX;AAEA,UAAI,cAAc;AACjB,YAAI,UAAU,KAAK,MAAM,GAAG;AAC3B,mBAAS,QAAQ,OAAO,MAAM,CAAC;AAAA,QAChC,WAAW,KAAK,KAAK,SAAS,GAAG;AAChC,mBAAS,QAAQ,YAAY,MAAM,OAAO,MAAM,CAAC;AAAA,QAClD;AAAA,MACD;AAKA,eAAS,OAAO,QAAQ,sBAAsB,SAAU,IAAI,IAAI,IAAI;AACnE,YAAI,MAAM,GAAG,SAAS,GAAG;AAExB,iBAAO;AAAA,QACR;AAEA,gBAAQ,MAAM,MAAM;AAAA,MACrB,CAAC;AAED,UAAI,CAAC,gBAAgB,QAAQ,MAAM;AAClC,eAAO,QAAQ,SAAS;AAAA,MACzB;AACA,aAAO;AAAA,IACR;AAGA,WAAO,UAAU;AAAA,MAChB,oBAAoB;AAAA,MACpB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAEA,WAAO,UAAU;AAEjB,WAAO,UAAU;AAAA;AAAA;", - "names": ["merge", "cssesc"] -} diff --git a/site/node_modules/.vite/deps/chunk-BUSYA2B4.js b/site/node_modules/.vite/deps/chunk-BUSYA2B4.js deleted file mode 100644 index b1e98ebedd..0000000000 --- a/site/node_modules/.vite/deps/chunk-BUSYA2B4.js +++ /dev/null @@ -1,8 +0,0 @@ -var __getOwnPropNames = Object.getOwnPropertyNames; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; - -export { - __commonJS -}; diff --git a/site/node_modules/.vite/deps/chunk-BUSYA2B4.js.map b/site/node_modules/.vite/deps/chunk-BUSYA2B4.js.map deleted file mode 100644 index 98652118b6..0000000000 --- a/site/node_modules/.vite/deps/chunk-BUSYA2B4.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/site/node_modules/.vite/deps/package.json b/site/node_modules/.vite/deps/package.json deleted file mode 100644 index 3dbc1ca591..0000000000 --- a/site/node_modules/.vite/deps/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/site/public/CNAME b/site/public/CNAME deleted file mode 100644 index 52c853392c..0000000000 --- a/site/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -getbootstrap.com diff --git a/site/public/apple-touch-icon.png b/site/public/apple-touch-icon.png deleted file mode 100644 index 8f8ff8a810..0000000000 Binary files a/site/public/apple-touch-icon.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/CNAME b/site/public/docs/5.3/assets/CNAME deleted file mode 100644 index 52c853392c..0000000000 --- a/site/public/docs/5.3/assets/CNAME +++ /dev/null @@ -1 +0,0 @@ -getbootstrap.com diff --git a/site/public/docs/5.3/assets/apple-touch-icon.png b/site/public/docs/5.3/assets/apple-touch-icon.png deleted file mode 100644 index 8f8ff8a810..0000000000 Binary files a/site/public/docs/5.3/assets/apple-touch-icon.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/brand/bootstrap-logo-black.svg b/site/public/docs/5.3/assets/brand/bootstrap-logo-black.svg deleted file mode 100644 index 31e66e1e9c..0000000000 --- a/site/public/docs/5.3/assets/brand/bootstrap-logo-black.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/site/public/docs/5.3/assets/brand/bootstrap-logo-shadow.png b/site/public/docs/5.3/assets/brand/bootstrap-logo-shadow.png deleted file mode 100644 index cf0bf70951..0000000000 Binary files a/site/public/docs/5.3/assets/brand/bootstrap-logo-shadow.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/brand/bootstrap-logo-shadow@2x.png b/site/public/docs/5.3/assets/brand/bootstrap-logo-shadow@2x.png deleted file mode 100644 index fd4eaffb29..0000000000 Binary files a/site/public/docs/5.3/assets/brand/bootstrap-logo-shadow@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/brand/bootstrap-logo-white.svg b/site/public/docs/5.3/assets/brand/bootstrap-logo-white.svg deleted file mode 100644 index f73d7ca2a4..0000000000 --- a/site/public/docs/5.3/assets/brand/bootstrap-logo-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/site/public/docs/5.3/assets/brand/bootstrap-logo.svg b/site/public/docs/5.3/assets/brand/bootstrap-logo.svg deleted file mode 100644 index f0189652b8..0000000000 --- a/site/public/docs/5.3/assets/brand/bootstrap-logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/site/public/docs/5.3/assets/brand/bootstrap-social.png b/site/public/docs/5.3/assets/brand/bootstrap-social.png deleted file mode 100644 index 898e396c1d..0000000000 Binary files a/site/public/docs/5.3/assets/brand/bootstrap-social.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/favicon.ico b/site/public/docs/5.3/assets/favicon.ico deleted file mode 100644 index 0549906208..0000000000 Binary files a/site/public/docs/5.3/assets/favicon.ico and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/bootstrap-icons.png b/site/public/docs/5.3/assets/img/bootstrap-icons.png deleted file mode 100644 index 0000e83825..0000000000 Binary files a/site/public/docs/5.3/assets/img/bootstrap-icons.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/bootstrap-icons@2x.png b/site/public/docs/5.3/assets/img/bootstrap-icons@2x.png deleted file mode 100644 index ca04965670..0000000000 Binary files a/site/public/docs/5.3/assets/img/bootstrap-icons@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/bootstrap-themes-collage.png b/site/public/docs/5.3/assets/img/bootstrap-themes-collage.png deleted file mode 100644 index da99b30a8a..0000000000 Binary files a/site/public/docs/5.3/assets/img/bootstrap-themes-collage.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/bootstrap-themes-collage@2x.png b/site/public/docs/5.3/assets/img/bootstrap-themes-collage@2x.png deleted file mode 100644 index 2ffb1ce9ea..0000000000 Binary files a/site/public/docs/5.3/assets/img/bootstrap-themes-collage@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/bootstrap-themes.png b/site/public/docs/5.3/assets/img/bootstrap-themes.png deleted file mode 100644 index d43dba2a7d..0000000000 Binary files a/site/public/docs/5.3/assets/img/bootstrap-themes.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/bootstrap-themes@2x.png b/site/public/docs/5.3/assets/img/bootstrap-themes@2x.png deleted file mode 100644 index 13c32337d6..0000000000 Binary files a/site/public/docs/5.3/assets/img/bootstrap-themes@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/album-rtl.png b/site/public/docs/5.3/assets/img/examples/album-rtl.png deleted file mode 100644 index d998c56272..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/album-rtl.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/album-rtl@2x.png b/site/public/docs/5.3/assets/img/examples/album-rtl@2x.png deleted file mode 100644 index d44ee0de11..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/album-rtl@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/album.png b/site/public/docs/5.3/assets/img/examples/album.png deleted file mode 100644 index f0af624013..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/album.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/album@2x.png b/site/public/docs/5.3/assets/img/examples/album@2x.png deleted file mode 100644 index bd43a51e1a..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/album@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/badges.png b/site/public/docs/5.3/assets/img/examples/badges.png deleted file mode 100644 index af4a9ac6b6..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/badges.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/badges@2x.png b/site/public/docs/5.3/assets/img/examples/badges@2x.png deleted file mode 100644 index 8c3fd3f722..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/badges@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/blog-rtl.png b/site/public/docs/5.3/assets/img/examples/blog-rtl.png deleted file mode 100644 index 5d01bb0924..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/blog-rtl.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/blog-rtl@2x.png b/site/public/docs/5.3/assets/img/examples/blog-rtl@2x.png deleted file mode 100644 index 56554e2bf1..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/blog-rtl@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/blog.png b/site/public/docs/5.3/assets/img/examples/blog.png deleted file mode 100644 index 3ce428418e..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/blog.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/blog@2x.png b/site/public/docs/5.3/assets/img/examples/blog@2x.png deleted file mode 100644 index f5480314b4..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/blog@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/breadcrumbs.png b/site/public/docs/5.3/assets/img/examples/breadcrumbs.png deleted file mode 100644 index 4417e95b3a..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/breadcrumbs.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/breadcrumbs@2x.png b/site/public/docs/5.3/assets/img/examples/breadcrumbs@2x.png deleted file mode 100644 index 0eb36d1362..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/breadcrumbs@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/buttons.png b/site/public/docs/5.3/assets/img/examples/buttons.png deleted file mode 100644 index 4da03f7917..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/buttons.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/buttons@2x.png b/site/public/docs/5.3/assets/img/examples/buttons@2x.png deleted file mode 100644 index 752e659028..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/buttons@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/carousel-rtl.png b/site/public/docs/5.3/assets/img/examples/carousel-rtl.png deleted file mode 100644 index 2290943f98..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/carousel-rtl.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/carousel-rtl@2x.png b/site/public/docs/5.3/assets/img/examples/carousel-rtl@2x.png deleted file mode 100644 index 9afa5a5d1a..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/carousel-rtl@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/carousel.png b/site/public/docs/5.3/assets/img/examples/carousel.png deleted file mode 100644 index e2bbba6c80..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/carousel.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/carousel@2x.png b/site/public/docs/5.3/assets/img/examples/carousel@2x.png deleted file mode 100644 index bc5d4a09d0..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/carousel@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/cheatsheet-rtl.png b/site/public/docs/5.3/assets/img/examples/cheatsheet-rtl.png deleted file mode 100644 index 93fd59324f..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/cheatsheet-rtl.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/cheatsheet-rtl@2x.png b/site/public/docs/5.3/assets/img/examples/cheatsheet-rtl@2x.png deleted file mode 100644 index fa895cec03..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/cheatsheet-rtl@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/cheatsheet.png b/site/public/docs/5.3/assets/img/examples/cheatsheet.png deleted file mode 100644 index 074be00155..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/cheatsheet.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/cheatsheet@2x.png b/site/public/docs/5.3/assets/img/examples/cheatsheet@2x.png deleted file mode 100644 index c958b6cb60..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/cheatsheet@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/checkout-rtl.png b/site/public/docs/5.3/assets/img/examples/checkout-rtl.png deleted file mode 100644 index 1edd0a9336..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/checkout-rtl.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/checkout-rtl@2x.png b/site/public/docs/5.3/assets/img/examples/checkout-rtl@2x.png deleted file mode 100644 index 41d0009053..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/checkout-rtl@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/checkout.png b/site/public/docs/5.3/assets/img/examples/checkout.png deleted file mode 100644 index cb81ef2d7c..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/checkout.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/checkout@2x.png b/site/public/docs/5.3/assets/img/examples/checkout@2x.png deleted file mode 100644 index 79c7b4bb82..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/checkout@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/cover.png b/site/public/docs/5.3/assets/img/examples/cover.png deleted file mode 100644 index 5458ff11d3..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/cover.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/cover@2x.png b/site/public/docs/5.3/assets/img/examples/cover@2x.png deleted file mode 100644 index eacd82e983..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/cover@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/dashboard-rtl.png b/site/public/docs/5.3/assets/img/examples/dashboard-rtl.png deleted file mode 100644 index 7f5b5bb9de..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/dashboard-rtl.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/dashboard-rtl@2x.png b/site/public/docs/5.3/assets/img/examples/dashboard-rtl@2x.png deleted file mode 100644 index 7e57520257..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/dashboard-rtl@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/dashboard.png b/site/public/docs/5.3/assets/img/examples/dashboard.png deleted file mode 100644 index 52988da739..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/dashboard.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/dashboard@2x.png b/site/public/docs/5.3/assets/img/examples/dashboard@2x.png deleted file mode 100644 index 52b23dff69..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/dashboard@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/dropdowns.png b/site/public/docs/5.3/assets/img/examples/dropdowns.png deleted file mode 100644 index 64fc8f2f00..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/dropdowns.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/dropdowns@2x.png b/site/public/docs/5.3/assets/img/examples/dropdowns@2x.png deleted file mode 100644 index 6978dcb563..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/dropdowns@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/features.png b/site/public/docs/5.3/assets/img/examples/features.png deleted file mode 100644 index c77ed09bbc..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/features.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/features@2x.png b/site/public/docs/5.3/assets/img/examples/features@2x.png deleted file mode 100644 index 28bcbf1f5a..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/features@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/footers.png b/site/public/docs/5.3/assets/img/examples/footers.png deleted file mode 100644 index 74fe820653..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/footers.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/footers@2x.png b/site/public/docs/5.3/assets/img/examples/footers@2x.png deleted file mode 100644 index 2700392156..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/footers@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/grid.png b/site/public/docs/5.3/assets/img/examples/grid.png deleted file mode 100644 index 9b8afb78b9..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/grid.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/grid@2x.png b/site/public/docs/5.3/assets/img/examples/grid@2x.png deleted file mode 100644 index 78ade65f50..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/grid@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/headers.png b/site/public/docs/5.3/assets/img/examples/headers.png deleted file mode 100644 index 9895762460..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/headers.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/headers@2x.png b/site/public/docs/5.3/assets/img/examples/headers@2x.png deleted file mode 100644 index e8de7498cc..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/headers@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/heroes.png b/site/public/docs/5.3/assets/img/examples/heroes.png deleted file mode 100644 index e9bc3e627a..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/heroes.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/heroes@2x.png b/site/public/docs/5.3/assets/img/examples/heroes@2x.png deleted file mode 100644 index fff3a72c70..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/heroes@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/jumbotron.png b/site/public/docs/5.3/assets/img/examples/jumbotron.png deleted file mode 100644 index 48e0c9c0e0..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/jumbotron.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/jumbotron@2x.png b/site/public/docs/5.3/assets/img/examples/jumbotron@2x.png deleted file mode 100644 index 229b630076..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/jumbotron@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/jumbotrons.png b/site/public/docs/5.3/assets/img/examples/jumbotrons.png deleted file mode 100644 index daafe594ba..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/jumbotrons.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/jumbotrons@2x.png b/site/public/docs/5.3/assets/img/examples/jumbotrons@2x.png deleted file mode 100644 index 4e549a484c..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/jumbotrons@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/list-groups.png b/site/public/docs/5.3/assets/img/examples/list-groups.png deleted file mode 100644 index 6c63f93ca1..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/list-groups.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/list-groups@2x.png b/site/public/docs/5.3/assets/img/examples/list-groups@2x.png deleted file mode 100644 index 6181038a61..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/list-groups@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/masonry.png b/site/public/docs/5.3/assets/img/examples/masonry.png deleted file mode 100644 index 67e0d8a838..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/masonry.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/masonry@2x.png b/site/public/docs/5.3/assets/img/examples/masonry@2x.png deleted file mode 100644 index fe6d1569eb..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/masonry@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/modals.png b/site/public/docs/5.3/assets/img/examples/modals.png deleted file mode 100644 index 0c8876a676..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/modals.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/modals@2x.png b/site/public/docs/5.3/assets/img/examples/modals@2x.png deleted file mode 100644 index 34ab6d61b3..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/modals@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbar-bottom.png b/site/public/docs/5.3/assets/img/examples/navbar-bottom.png deleted file mode 100644 index 77f1dc83a8..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbar-bottom.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbar-bottom@2x.png b/site/public/docs/5.3/assets/img/examples/navbar-bottom@2x.png deleted file mode 100644 index 031e12d2ae..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbar-bottom@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbar-fixed.png b/site/public/docs/5.3/assets/img/examples/navbar-fixed.png deleted file mode 100644 index 1b18d79dd8..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbar-fixed.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbar-fixed@2x.png b/site/public/docs/5.3/assets/img/examples/navbar-fixed@2x.png deleted file mode 100644 index 6d2a644f78..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbar-fixed@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbar-static.png b/site/public/docs/5.3/assets/img/examples/navbar-static.png deleted file mode 100644 index eb09fca836..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbar-static.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbar-static@2x.png b/site/public/docs/5.3/assets/img/examples/navbar-static@2x.png deleted file mode 100644 index 6cf7c52eaf..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbar-static@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbars-offcanvas.png b/site/public/docs/5.3/assets/img/examples/navbars-offcanvas.png deleted file mode 100644 index a628dffc0f..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbars-offcanvas.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbars-offcanvas@2x.png b/site/public/docs/5.3/assets/img/examples/navbars-offcanvas@2x.png deleted file mode 100644 index 83acbca562..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbars-offcanvas@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbars.png b/site/public/docs/5.3/assets/img/examples/navbars.png deleted file mode 100644 index a81e85cbdf..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbars.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/navbars@2x.png b/site/public/docs/5.3/assets/img/examples/navbars@2x.png deleted file mode 100644 index dc0cea0854..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/navbars@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/offcanvas-navbar.png b/site/public/docs/5.3/assets/img/examples/offcanvas-navbar.png deleted file mode 100644 index 9540fe5962..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/offcanvas-navbar.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/offcanvas-navbar@2x.png b/site/public/docs/5.3/assets/img/examples/offcanvas-navbar@2x.png deleted file mode 100644 index abb13bc379..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/offcanvas-navbar@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/pricing.png b/site/public/docs/5.3/assets/img/examples/pricing.png deleted file mode 100644 index ea7224615a..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/pricing.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/pricing@2x.png b/site/public/docs/5.3/assets/img/examples/pricing@2x.png deleted file mode 100644 index 543b0a3f28..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/pricing@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/product.png b/site/public/docs/5.3/assets/img/examples/product.png deleted file mode 100644 index a95eff6221..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/product.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/product@2x.png b/site/public/docs/5.3/assets/img/examples/product@2x.png deleted file mode 100644 index 1dfe454821..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/product@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/sidebars.png b/site/public/docs/5.3/assets/img/examples/sidebars.png deleted file mode 100644 index 00efb311e7..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/sidebars.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/sidebars@2x.png b/site/public/docs/5.3/assets/img/examples/sidebars@2x.png deleted file mode 100644 index cb167e5351..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/sidebars@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/sign-in.png b/site/public/docs/5.3/assets/img/examples/sign-in.png deleted file mode 100644 index 8d57f561ca..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/sign-in.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/sign-in@2x.png b/site/public/docs/5.3/assets/img/examples/sign-in@2x.png deleted file mode 100644 index 477335984d..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/sign-in@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/starter-template.png b/site/public/docs/5.3/assets/img/examples/starter-template.png deleted file mode 100644 index d4b20217ac..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/starter-template.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/starter-template@2x.png b/site/public/docs/5.3/assets/img/examples/starter-template@2x.png deleted file mode 100644 index 9323837caa..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/starter-template@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/sticky-footer-navbar.png b/site/public/docs/5.3/assets/img/examples/sticky-footer-navbar.png deleted file mode 100644 index 8417cc8300..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/sticky-footer-navbar.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/sticky-footer-navbar@2x.png b/site/public/docs/5.3/assets/img/examples/sticky-footer-navbar@2x.png deleted file mode 100644 index 1abb382230..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/sticky-footer-navbar@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/sticky-footer.png b/site/public/docs/5.3/assets/img/examples/sticky-footer.png deleted file mode 100644 index c5ea6ef820..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/sticky-footer.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/examples/sticky-footer@2x.png b/site/public/docs/5.3/assets/img/examples/sticky-footer@2x.png deleted file mode 100644 index 5a008a0ac3..0000000000 Binary files a/site/public/docs/5.3/assets/img/examples/sticky-footer@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/favicons/android-chrome-192x192.png b/site/public/docs/5.3/assets/img/favicons/android-chrome-192x192.png deleted file mode 100644 index 17e5ce11cd..0000000000 Binary files a/site/public/docs/5.3/assets/img/favicons/android-chrome-192x192.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/favicons/android-chrome-512x512.png b/site/public/docs/5.3/assets/img/favicons/android-chrome-512x512.png deleted file mode 100644 index 621c3641d8..0000000000 Binary files a/site/public/docs/5.3/assets/img/favicons/android-chrome-512x512.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/favicons/apple-touch-icon.png b/site/public/docs/5.3/assets/img/favicons/apple-touch-icon.png deleted file mode 100644 index 8f8ff8a810..0000000000 Binary files a/site/public/docs/5.3/assets/img/favicons/apple-touch-icon.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/favicons/favicon-16x16.png b/site/public/docs/5.3/assets/img/favicons/favicon-16x16.png deleted file mode 100644 index f4754c1a3b..0000000000 Binary files a/site/public/docs/5.3/assets/img/favicons/favicon-16x16.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/favicons/favicon-32x32.png b/site/public/docs/5.3/assets/img/favicons/favicon-32x32.png deleted file mode 100644 index 7f99a91e30..0000000000 Binary files a/site/public/docs/5.3/assets/img/favicons/favicon-32x32.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/favicons/favicon.ico b/site/public/docs/5.3/assets/img/favicons/favicon.ico deleted file mode 100644 index 0549906208..0000000000 Binary files a/site/public/docs/5.3/assets/img/favicons/favicon.ico and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/favicons/manifest.json b/site/public/docs/5.3/assets/img/favicons/manifest.json deleted file mode 100644 index 8f2f0f76bf..0000000000 --- a/site/public/docs/5.3/assets/img/favicons/manifest.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Bootstrap", - "short_name": "Bootstrap", - "icons": [ - { - "src": "android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "start_url": "/?utm_source=a2hs", - "theme_color": "#7952b3", - "background_color": "#7952b3", - "display": "standalone" -} diff --git a/site/public/docs/5.3/assets/img/favicons/safari-pinned-tab.svg b/site/public/docs/5.3/assets/img/favicons/safari-pinned-tab.svg deleted file mode 100644 index aa6e85cb91..0000000000 --- a/site/public/docs/5.3/assets/img/favicons/safari-pinned-tab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/site/public/docs/5.3/assets/img/guides/bootstrap-parcel.png b/site/public/docs/5.3/assets/img/guides/bootstrap-parcel.png deleted file mode 100644 index 50fc799513..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/bootstrap-parcel.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/bootstrap-parcel@2x.png b/site/public/docs/5.3/assets/img/guides/bootstrap-parcel@2x.png deleted file mode 100644 index fe0ec4c638..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/bootstrap-parcel@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/bootstrap-vite.png b/site/public/docs/5.3/assets/img/guides/bootstrap-vite.png deleted file mode 100644 index de4cad7343..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/bootstrap-vite.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/bootstrap-vite@2x.png b/site/public/docs/5.3/assets/img/guides/bootstrap-vite@2x.png deleted file mode 100644 index f8d4858088..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/bootstrap-vite@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/bootstrap-webpack.png b/site/public/docs/5.3/assets/img/guides/bootstrap-webpack.png deleted file mode 100644 index c7be9fc390..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/bootstrap-webpack.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/bootstrap-webpack@2x.png b/site/public/docs/5.3/assets/img/guides/bootstrap-webpack@2x.png deleted file mode 100644 index 58fdb9cab8..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/bootstrap-webpack@2x.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/parcel-dev-server-bootstrap.png b/site/public/docs/5.3/assets/img/guides/parcel-dev-server-bootstrap.png deleted file mode 100644 index 59538797c6..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/parcel-dev-server-bootstrap.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/parcel-dev-server.png b/site/public/docs/5.3/assets/img/guides/parcel-dev-server.png deleted file mode 100644 index aaca949b4a..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/parcel-dev-server.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/vite-dev-server-bootstrap.png b/site/public/docs/5.3/assets/img/guides/vite-dev-server-bootstrap.png deleted file mode 100644 index a3ae0953fe..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/vite-dev-server-bootstrap.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/vite-dev-server.png b/site/public/docs/5.3/assets/img/guides/vite-dev-server.png deleted file mode 100644 index 4b1f1f69e5..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/vite-dev-server.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/webpack-dev-server-bootstrap.png b/site/public/docs/5.3/assets/img/guides/webpack-dev-server-bootstrap.png deleted file mode 100644 index 0bf8304e95..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/webpack-dev-server-bootstrap.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/guides/webpack-dev-server.png b/site/public/docs/5.3/assets/img/guides/webpack-dev-server.png deleted file mode 100644 index 2802d891c5..0000000000 Binary files a/site/public/docs/5.3/assets/img/guides/webpack-dev-server.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/parcel.png b/site/public/docs/5.3/assets/img/parcel.png deleted file mode 100644 index b48b46a784..0000000000 Binary files a/site/public/docs/5.3/assets/img/parcel.png and /dev/null differ diff --git a/site/public/docs/5.3/assets/img/vite.svg b/site/public/docs/5.3/assets/img/vite.svg deleted file mode 100644 index 831cb16105..0000000000 --- a/site/public/docs/5.3/assets/img/vite.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/site/public/docs/5.3/assets/img/webpack.svg b/site/public/docs/5.3/assets/img/webpack.svg deleted file mode 100644 index ed885f2fe1..0000000000 --- a/site/public/docs/5.3/assets/img/webpack.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/site/public/docs/5.3/assets/js/color-modes.js b/site/public/docs/5.3/assets/js/color-modes.js deleted file mode 100644 index 18bc849443..0000000000 --- a/site/public/docs/5.3/assets/js/color-modes.js +++ /dev/null @@ -1,80 +0,0 @@ -/*! - * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/) - * Copyright 2011-2025 The Bootstrap Authors - * Licensed under the Creative Commons Attribution 3.0 Unported License. - */ - -(() => { - 'use strict' - - const getStoredTheme = () => localStorage.getItem('theme') - const setStoredTheme = theme => localStorage.setItem('theme', theme) - - const getPreferredTheme = () => { - const storedTheme = getStoredTheme() - if (storedTheme) { - return storedTheme - } - - return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' - } - - const setTheme = theme => { - if (theme === 'auto') { - document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) - } else { - document.documentElement.setAttribute('data-bs-theme', theme) - } - } - - setTheme(getPreferredTheme()) - - const showActiveTheme = (theme, focus = false) => { - const themeSwitcher = document.querySelector('#bd-theme') - - if (!themeSwitcher) { - return - } - - const themeSwitcherText = document.querySelector('#bd-theme-text') - const activeThemeIcon = document.querySelector('.theme-icon-active use') - const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`) - const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href') - - document.querySelectorAll('[data-bs-theme-value]').forEach(element => { - element.classList.remove('active') - element.setAttribute('aria-pressed', 'false') - }) - - btnToActive.classList.add('active') - btnToActive.setAttribute('aria-pressed', 'true') - activeThemeIcon.setAttribute('href', svgOfActiveBtn) - const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})` - themeSwitcher.setAttribute('aria-label', themeSwitcherLabel) - - if (focus) { - themeSwitcher.focus() - } - } - - window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { - const storedTheme = getStoredTheme() - if (storedTheme !== 'light' && storedTheme !== 'dark') { - setTheme(getPreferredTheme()) - } - }) - - window.addEventListener('DOMContentLoaded', () => { - showActiveTheme(getPreferredTheme()) - - document.querySelectorAll('[data-bs-theme-value]') - .forEach(toggle => { - toggle.addEventListener('click', () => { - const theme = toggle.getAttribute('data-bs-theme-value') - setStoredTheme(theme) - setTheme(theme) - showActiveTheme(theme, true) - }) - }) - }) -})() diff --git a/site/public/docs/5.3/assets/js/validate-forms.js b/site/public/docs/5.3/assets/js/validate-forms.js deleted file mode 100644 index 30ea0aa6b1..0000000000 --- a/site/public/docs/5.3/assets/js/validate-forms.js +++ /dev/null @@ -1,19 +0,0 @@ -// Example starter JavaScript for disabling form submissions if there are invalid fields -(() => { - 'use strict' - - // Fetch all the forms we want to apply custom Bootstrap validation styles to - const forms = document.querySelectorAll('.needs-validation') - - // Loop over them and prevent submission - Array.from(forms).forEach(form => { - form.addEventListener('submit', event => { - if (!form.checkValidity()) { - event.preventDefault() - event.stopPropagation() - } - - form.classList.add('was-validated') - }, false) - }) -})() diff --git a/site/public/docs/5.3/assets/sw.js b/site/public/docs/5.3/assets/sw.js deleted file mode 100644 index dcebfd2d67..0000000000 --- a/site/public/docs/5.3/assets/sw.js +++ /dev/null @@ -1,27 +0,0 @@ -// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT -// IT'S ALL JUST JUNK FOR OUR DOCS! -// ++++++++++++++++++++++++++++++++++++++++++ - -(function () { - 'use strict' - - if ('serviceWorker' in navigator) { - window.addEventListener('load', function () { - navigator.serviceWorker.getRegistrations().then(function (registrations) { - for (var registration of registrations) { - registration.unregister() - .then(function () { - return self.clients.matchAll() - }) - .then(function (clients) { - clients.forEach(function (client) { - if (client.url && 'navigate' in client) { - client.navigate(client.url) - } - }) - }) - } - }) - }) - } -})() diff --git a/site/public/docs/5.3/dist/css/bootstrap-grid.css b/site/public/docs/5.3/dist/css/bootstrap-grid.css deleted file mode 100644 index 3882a8199b..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-grid.css +++ /dev/null @@ -1,4085 +0,0 @@ -/*! - * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - width: 100%; - padding-right: calc(var(--bs-gutter-x) * 0.5); - padding-left: calc(var(--bs-gutter-x) * 0.5); - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; - } -} -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; - } -} -:root { - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; -} - -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--bs-gutter-y)); - margin-right: calc(-0.5 * var(--bs-gutter-x)); - margin-left: calc(-0.5 * var(--bs-gutter-x)); -} -.row > * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--bs-gutter-x) * 0.5); - padding-left: calc(var(--bs-gutter-x) * 0.5); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.33333333%; -} - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; -} - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-left: 8.33333333%; -} - -.offset-2 { - margin-left: 16.66666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.33333333%; -} - -.offset-5 { - margin-left: 41.66666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.33333333%; -} - -.offset-8 { - margin-left: 66.66666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.33333333%; -} - -.offset-11 { - margin-left: 91.66666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-sm-0 { - margin-left: 0; - } - .offset-sm-1 { - margin-left: 8.33333333%; - } - .offset-sm-2 { - margin-left: 16.66666667%; - } - .offset-sm-3 { - margin-left: 25%; - } - .offset-sm-4 { - margin-left: 33.33333333%; - } - .offset-sm-5 { - margin-left: 41.66666667%; - } - .offset-sm-6 { - margin-left: 50%; - } - .offset-sm-7 { - margin-left: 58.33333333%; - } - .offset-sm-8 { - margin-left: 66.66666667%; - } - .offset-sm-9 { - margin-left: 75%; - } - .offset-sm-10 { - margin-left: 83.33333333%; - } - .offset-sm-11 { - margin-left: 91.66666667%; - } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; - } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; - } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; - } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; - } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; - } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-md-0 { - margin-left: 0; - } - .offset-md-1 { - margin-left: 8.33333333%; - } - .offset-md-2 { - margin-left: 16.66666667%; - } - .offset-md-3 { - margin-left: 25%; - } - .offset-md-4 { - margin-left: 33.33333333%; - } - .offset-md-5 { - margin-left: 41.66666667%; - } - .offset-md-6 { - margin-left: 50%; - } - .offset-md-7 { - margin-left: 58.33333333%; - } - .offset-md-8 { - margin-left: 66.66666667%; - } - .offset-md-9 { - margin-left: 75%; - } - .offset-md-10 { - margin-left: 83.33333333%; - } - .offset-md-11 { - margin-left: 91.66666667%; - } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; - } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; - } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; - } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; - } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; - } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; - } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; - } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; - } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; - } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; - } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; - } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-lg-0 { - margin-left: 0; - } - .offset-lg-1 { - margin-left: 8.33333333%; - } - .offset-lg-2 { - margin-left: 16.66666667%; - } - .offset-lg-3 { - margin-left: 25%; - } - .offset-lg-4 { - margin-left: 33.33333333%; - } - .offset-lg-5 { - margin-left: 41.66666667%; - } - .offset-lg-6 { - margin-left: 50%; - } - .offset-lg-7 { - margin-left: 58.33333333%; - } - .offset-lg-8 { - margin-left: 66.66666667%; - } - .offset-lg-9 { - margin-left: 75%; - } - .offset-lg-10 { - margin-left: 83.33333333%; - } - .offset-lg-11 { - margin-left: 91.66666667%; - } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; - } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; - } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; - } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; - } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; - } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xl-0 { - margin-left: 0; - } - .offset-xl-1 { - margin-left: 8.33333333%; - } - .offset-xl-2 { - margin-left: 16.66666667%; - } - .offset-xl-3 { - margin-left: 25%; - } - .offset-xl-4 { - margin-left: 33.33333333%; - } - .offset-xl-5 { - margin-left: 41.66666667%; - } - .offset-xl-6 { - margin-left: 50%; - } - .offset-xl-7 { - margin-left: 58.33333333%; - } - .offset-xl-8 { - margin-left: 66.66666667%; - } - .offset-xl-9 { - margin-left: 75%; - } - .offset-xl-10 { - margin-left: 83.33333333%; - } - .offset-xl-11 { - margin-left: 91.66666667%; - } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; - } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; - } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; - } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; - } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; - } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xxl-0 { - margin-left: 0; - } - .offset-xxl-1 { - margin-left: 8.33333333%; - } - .offset-xxl-2 { - margin-left: 16.66666667%; - } - .offset-xxl-3 { - margin-left: 25%; - } - .offset-xxl-4 { - margin-left: 33.33333333%; - } - .offset-xxl-5 { - margin-left: 41.66666667%; - } - .offset-xxl-6 { - margin-left: 50%; - } - .offset-xxl-7 { - margin-left: 58.33333333%; - } - .offset-xxl-8 { - margin-left: 66.66666667%; - } - .offset-xxl-9 { - margin-left: 75%; - } - .offset-xxl-10 { - margin-left: 83.33333333%; - } - .offset-xxl-11 { - margin-left: 91.66666667%; - } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; - } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; - } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; - } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; - } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; - } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: grid !important; -} - -.d-inline-grid { - display: inline-grid !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-none { - display: none !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important; -} - -.mx-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; -} - -.mx-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; -} - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; -} - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; -} - -.mx-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; -} - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-right: 0 !important; -} - -.me-1 { - margin-right: 0.25rem !important; -} - -.me-2 { - margin-right: 0.5rem !important; -} - -.me-3 { - margin-right: 1rem !important; -} - -.me-4 { - margin-right: 1.5rem !important; -} - -.me-5 { - margin-right: 3rem !important; -} - -.me-auto { - margin-right: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-left: 0 !important; -} - -.ms-1 { - margin-left: 0.25rem !important; -} - -.ms-2 { - margin-left: 0.5rem !important; -} - -.ms-3 { - margin-left: 1rem !important; -} - -.ms-4 { - margin-left: 1.5rem !important; -} - -.ms-5 { - margin-left: 3rem !important; -} - -.ms-auto { - margin-left: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important; -} - -.px-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; -} - -.px-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; -} - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; -} - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; -} - -.px-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-right: 0 !important; -} - -.pe-1 { - padding-right: 0.25rem !important; -} - -.pe-2 { - padding-right: 0.5rem !important; -} - -.pe-3 { - padding-right: 1rem !important; -} - -.pe-4 { - padding-right: 1.5rem !important; -} - -.pe-5 { - padding-right: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-left: 0 !important; -} - -.ps-1 { - padding-left: 0.25rem !important; -} - -.ps-2 { - padding-left: 0.5rem !important; -} - -.ps-3 { - padding-left: 1rem !important; -} - -.ps-4 { - padding-left: 1.5rem !important; -} - -.ps-5 { - padding-left: 3rem !important; -} - -@media (min-width: 576px) { - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-grid { - display: grid !important; - } - .d-sm-inline-grid { - display: inline-grid !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: flex !important; - } - .d-sm-inline-flex { - display: inline-flex !important; - } - .d-sm-none { - display: none !important; - } - .flex-sm-fill { - flex: 1 1 auto !important; - } - .flex-sm-row { - flex-direction: row !important; - } - .flex-sm-column { - flex-direction: column !important; - } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - .flex-sm-wrap { - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-sm-start { - justify-content: flex-start !important; - } - .justify-content-sm-end { - justify-content: flex-end !important; - } - .justify-content-sm-center { - justify-content: center !important; - } - .justify-content-sm-between { - justify-content: space-between !important; - } - .justify-content-sm-around { - justify-content: space-around !important; - } - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - .align-items-sm-start { - align-items: flex-start !important; - } - .align-items-sm-end { - align-items: flex-end !important; - } - .align-items-sm-center { - align-items: center !important; - } - .align-items-sm-baseline { - align-items: baseline !important; - } - .align-items-sm-stretch { - align-items: stretch !important; - } - .align-content-sm-start { - align-content: flex-start !important; - } - .align-content-sm-end { - align-content: flex-end !important; - } - .align-content-sm-center { - align-content: center !important; - } - .align-content-sm-between { - align-content: space-between !important; - } - .align-content-sm-around { - align-content: space-around !important; - } - .align-content-sm-stretch { - align-content: stretch !important; - } - .align-self-sm-auto { - align-self: auto !important; - } - .align-self-sm-start { - align-self: flex-start !important; - } - .align-self-sm-end { - align-self: flex-end !important; - } - .align-self-sm-center { - align-self: center !important; - } - .align-self-sm-baseline { - align-self: baseline !important; - } - .align-self-sm-stretch { - align-self: stretch !important; - } - .order-sm-first { - order: -1 !important; - } - .order-sm-0 { - order: 0 !important; - } - .order-sm-1 { - order: 1 !important; - } - .order-sm-2 { - order: 2 !important; - } - .order-sm-3 { - order: 3 !important; - } - .order-sm-4 { - order: 4 !important; - } - .order-sm-5 { - order: 5 !important; - } - .order-sm-last { - order: 6 !important; - } - .m-sm-0 { - margin: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-sm-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-sm-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-sm-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-sm-0 { - margin-top: 0 !important; - } - .mt-sm-1 { - margin-top: 0.25rem !important; - } - .mt-sm-2 { - margin-top: 0.5rem !important; - } - .mt-sm-3 { - margin-top: 1rem !important; - } - .mt-sm-4 { - margin-top: 1.5rem !important; - } - .mt-sm-5 { - margin-top: 3rem !important; - } - .mt-sm-auto { - margin-top: auto !important; - } - .me-sm-0 { - margin-right: 0 !important; - } - .me-sm-1 { - margin-right: 0.25rem !important; - } - .me-sm-2 { - margin-right: 0.5rem !important; - } - .me-sm-3 { - margin-right: 1rem !important; - } - .me-sm-4 { - margin-right: 1.5rem !important; - } - .me-sm-5 { - margin-right: 3rem !important; - } - .me-sm-auto { - margin-right: auto !important; - } - .mb-sm-0 { - margin-bottom: 0 !important; - } - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - .mb-sm-3 { - margin-bottom: 1rem !important; - } - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - .mb-sm-5 { - margin-bottom: 3rem !important; - } - .mb-sm-auto { - margin-bottom: auto !important; - } - .ms-sm-0 { - margin-left: 0 !important; - } - .ms-sm-1 { - margin-left: 0.25rem !important; - } - .ms-sm-2 { - margin-left: 0.5rem !important; - } - .ms-sm-3 { - margin-left: 1rem !important; - } - .ms-sm-4 { - margin-left: 1.5rem !important; - } - .ms-sm-5 { - margin-left: 3rem !important; - } - .ms-sm-auto { - margin-left: auto !important; - } - .p-sm-0 { - padding: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-sm-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-sm-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-sm-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-sm-0 { - padding-top: 0 !important; - } - .pt-sm-1 { - padding-top: 0.25rem !important; - } - .pt-sm-2 { - padding-top: 0.5rem !important; - } - .pt-sm-3 { - padding-top: 1rem !important; - } - .pt-sm-4 { - padding-top: 1.5rem !important; - } - .pt-sm-5 { - padding-top: 3rem !important; - } - .pe-sm-0 { - padding-right: 0 !important; - } - .pe-sm-1 { - padding-right: 0.25rem !important; - } - .pe-sm-2 { - padding-right: 0.5rem !important; - } - .pe-sm-3 { - padding-right: 1rem !important; - } - .pe-sm-4 { - padding-right: 1.5rem !important; - } - .pe-sm-5 { - padding-right: 3rem !important; - } - .pb-sm-0 { - padding-bottom: 0 !important; - } - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - .pb-sm-3 { - padding-bottom: 1rem !important; - } - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - .pb-sm-5 { - padding-bottom: 3rem !important; - } - .ps-sm-0 { - padding-left: 0 !important; - } - .ps-sm-1 { - padding-left: 0.25rem !important; - } - .ps-sm-2 { - padding-left: 0.5rem !important; - } - .ps-sm-3 { - padding-left: 1rem !important; - } - .ps-sm-4 { - padding-left: 1.5rem !important; - } - .ps-sm-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 768px) { - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-grid { - display: grid !important; - } - .d-md-inline-grid { - display: inline-grid !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: flex !important; - } - .d-md-inline-flex { - display: inline-flex !important; - } - .d-md-none { - display: none !important; - } - .flex-md-fill { - flex: 1 1 auto !important; - } - .flex-md-row { - flex-direction: row !important; - } - .flex-md-column { - flex-direction: column !important; - } - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - .flex-md-grow-0 { - flex-grow: 0 !important; - } - .flex-md-grow-1 { - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - .flex-md-wrap { - flex-wrap: wrap !important; - } - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-md-start { - justify-content: flex-start !important; - } - .justify-content-md-end { - justify-content: flex-end !important; - } - .justify-content-md-center { - justify-content: center !important; - } - .justify-content-md-between { - justify-content: space-between !important; - } - .justify-content-md-around { - justify-content: space-around !important; - } - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - .align-items-md-start { - align-items: flex-start !important; - } - .align-items-md-end { - align-items: flex-end !important; - } - .align-items-md-center { - align-items: center !important; - } - .align-items-md-baseline { - align-items: baseline !important; - } - .align-items-md-stretch { - align-items: stretch !important; - } - .align-content-md-start { - align-content: flex-start !important; - } - .align-content-md-end { - align-content: flex-end !important; - } - .align-content-md-center { - align-content: center !important; - } - .align-content-md-between { - align-content: space-between !important; - } - .align-content-md-around { - align-content: space-around !important; - } - .align-content-md-stretch { - align-content: stretch !important; - } - .align-self-md-auto { - align-self: auto !important; - } - .align-self-md-start { - align-self: flex-start !important; - } - .align-self-md-end { - align-self: flex-end !important; - } - .align-self-md-center { - align-self: center !important; - } - .align-self-md-baseline { - align-self: baseline !important; - } - .align-self-md-stretch { - align-self: stretch !important; - } - .order-md-first { - order: -1 !important; - } - .order-md-0 { - order: 0 !important; - } - .order-md-1 { - order: 1 !important; - } - .order-md-2 { - order: 2 !important; - } - .order-md-3 { - order: 3 !important; - } - .order-md-4 { - order: 4 !important; - } - .order-md-5 { - order: 5 !important; - } - .order-md-last { - order: 6 !important; - } - .m-md-0 { - margin: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-md-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-md-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-md-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-md-0 { - margin-top: 0 !important; - } - .mt-md-1 { - margin-top: 0.25rem !important; - } - .mt-md-2 { - margin-top: 0.5rem !important; - } - .mt-md-3 { - margin-top: 1rem !important; - } - .mt-md-4 { - margin-top: 1.5rem !important; - } - .mt-md-5 { - margin-top: 3rem !important; - } - .mt-md-auto { - margin-top: auto !important; - } - .me-md-0 { - margin-right: 0 !important; - } - .me-md-1 { - margin-right: 0.25rem !important; - } - .me-md-2 { - margin-right: 0.5rem !important; - } - .me-md-3 { - margin-right: 1rem !important; - } - .me-md-4 { - margin-right: 1.5rem !important; - } - .me-md-5 { - margin-right: 3rem !important; - } - .me-md-auto { - margin-right: auto !important; - } - .mb-md-0 { - margin-bottom: 0 !important; - } - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - .mb-md-3 { - margin-bottom: 1rem !important; - } - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - .mb-md-5 { - margin-bottom: 3rem !important; - } - .mb-md-auto { - margin-bottom: auto !important; - } - .ms-md-0 { - margin-left: 0 !important; - } - .ms-md-1 { - margin-left: 0.25rem !important; - } - .ms-md-2 { - margin-left: 0.5rem !important; - } - .ms-md-3 { - margin-left: 1rem !important; - } - .ms-md-4 { - margin-left: 1.5rem !important; - } - .ms-md-5 { - margin-left: 3rem !important; - } - .ms-md-auto { - margin-left: auto !important; - } - .p-md-0 { - padding: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-md-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-md-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-md-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-md-0 { - padding-top: 0 !important; - } - .pt-md-1 { - padding-top: 0.25rem !important; - } - .pt-md-2 { - padding-top: 0.5rem !important; - } - .pt-md-3 { - padding-top: 1rem !important; - } - .pt-md-4 { - padding-top: 1.5rem !important; - } - .pt-md-5 { - padding-top: 3rem !important; - } - .pe-md-0 { - padding-right: 0 !important; - } - .pe-md-1 { - padding-right: 0.25rem !important; - } - .pe-md-2 { - padding-right: 0.5rem !important; - } - .pe-md-3 { - padding-right: 1rem !important; - } - .pe-md-4 { - padding-right: 1.5rem !important; - } - .pe-md-5 { - padding-right: 3rem !important; - } - .pb-md-0 { - padding-bottom: 0 !important; - } - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - .pb-md-3 { - padding-bottom: 1rem !important; - } - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - .pb-md-5 { - padding-bottom: 3rem !important; - } - .ps-md-0 { - padding-left: 0 !important; - } - .ps-md-1 { - padding-left: 0.25rem !important; - } - .ps-md-2 { - padding-left: 0.5rem !important; - } - .ps-md-3 { - padding-left: 1rem !important; - } - .ps-md-4 { - padding-left: 1.5rem !important; - } - .ps-md-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 992px) { - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-grid { - display: grid !important; - } - .d-lg-inline-grid { - display: inline-grid !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: flex !important; - } - .d-lg-inline-flex { - display: inline-flex !important; - } - .d-lg-none { - display: none !important; - } - .flex-lg-fill { - flex: 1 1 auto !important; - } - .flex-lg-row { - flex-direction: row !important; - } - .flex-lg-column { - flex-direction: column !important; - } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - .flex-lg-wrap { - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-lg-start { - justify-content: flex-start !important; - } - .justify-content-lg-end { - justify-content: flex-end !important; - } - .justify-content-lg-center { - justify-content: center !important; - } - .justify-content-lg-between { - justify-content: space-between !important; - } - .justify-content-lg-around { - justify-content: space-around !important; - } - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - .align-items-lg-start { - align-items: flex-start !important; - } - .align-items-lg-end { - align-items: flex-end !important; - } - .align-items-lg-center { - align-items: center !important; - } - .align-items-lg-baseline { - align-items: baseline !important; - } - .align-items-lg-stretch { - align-items: stretch !important; - } - .align-content-lg-start { - align-content: flex-start !important; - } - .align-content-lg-end { - align-content: flex-end !important; - } - .align-content-lg-center { - align-content: center !important; - } - .align-content-lg-between { - align-content: space-between !important; - } - .align-content-lg-around { - align-content: space-around !important; - } - .align-content-lg-stretch { - align-content: stretch !important; - } - .align-self-lg-auto { - align-self: auto !important; - } - .align-self-lg-start { - align-self: flex-start !important; - } - .align-self-lg-end { - align-self: flex-end !important; - } - .align-self-lg-center { - align-self: center !important; - } - .align-self-lg-baseline { - align-self: baseline !important; - } - .align-self-lg-stretch { - align-self: stretch !important; - } - .order-lg-first { - order: -1 !important; - } - .order-lg-0 { - order: 0 !important; - } - .order-lg-1 { - order: 1 !important; - } - .order-lg-2 { - order: 2 !important; - } - .order-lg-3 { - order: 3 !important; - } - .order-lg-4 { - order: 4 !important; - } - .order-lg-5 { - order: 5 !important; - } - .order-lg-last { - order: 6 !important; - } - .m-lg-0 { - margin: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-lg-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-lg-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-lg-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-lg-0 { - margin-top: 0 !important; - } - .mt-lg-1 { - margin-top: 0.25rem !important; - } - .mt-lg-2 { - margin-top: 0.5rem !important; - } - .mt-lg-3 { - margin-top: 1rem !important; - } - .mt-lg-4 { - margin-top: 1.5rem !important; - } - .mt-lg-5 { - margin-top: 3rem !important; - } - .mt-lg-auto { - margin-top: auto !important; - } - .me-lg-0 { - margin-right: 0 !important; - } - .me-lg-1 { - margin-right: 0.25rem !important; - } - .me-lg-2 { - margin-right: 0.5rem !important; - } - .me-lg-3 { - margin-right: 1rem !important; - } - .me-lg-4 { - margin-right: 1.5rem !important; - } - .me-lg-5 { - margin-right: 3rem !important; - } - .me-lg-auto { - margin-right: auto !important; - } - .mb-lg-0 { - margin-bottom: 0 !important; - } - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - .mb-lg-3 { - margin-bottom: 1rem !important; - } - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - .mb-lg-5 { - margin-bottom: 3rem !important; - } - .mb-lg-auto { - margin-bottom: auto !important; - } - .ms-lg-0 { - margin-left: 0 !important; - } - .ms-lg-1 { - margin-left: 0.25rem !important; - } - .ms-lg-2 { - margin-left: 0.5rem !important; - } - .ms-lg-3 { - margin-left: 1rem !important; - } - .ms-lg-4 { - margin-left: 1.5rem !important; - } - .ms-lg-5 { - margin-left: 3rem !important; - } - .ms-lg-auto { - margin-left: auto !important; - } - .p-lg-0 { - padding: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-lg-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-lg-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-lg-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-lg-0 { - padding-top: 0 !important; - } - .pt-lg-1 { - padding-top: 0.25rem !important; - } - .pt-lg-2 { - padding-top: 0.5rem !important; - } - .pt-lg-3 { - padding-top: 1rem !important; - } - .pt-lg-4 { - padding-top: 1.5rem !important; - } - .pt-lg-5 { - padding-top: 3rem !important; - } - .pe-lg-0 { - padding-right: 0 !important; - } - .pe-lg-1 { - padding-right: 0.25rem !important; - } - .pe-lg-2 { - padding-right: 0.5rem !important; - } - .pe-lg-3 { - padding-right: 1rem !important; - } - .pe-lg-4 { - padding-right: 1.5rem !important; - } - .pe-lg-5 { - padding-right: 3rem !important; - } - .pb-lg-0 { - padding-bottom: 0 !important; - } - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - .pb-lg-3 { - padding-bottom: 1rem !important; - } - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - .pb-lg-5 { - padding-bottom: 3rem !important; - } - .ps-lg-0 { - padding-left: 0 !important; - } - .ps-lg-1 { - padding-left: 0.25rem !important; - } - .ps-lg-2 { - padding-left: 0.5rem !important; - } - .ps-lg-3 { - padding-left: 1rem !important; - } - .ps-lg-4 { - padding-left: 1.5rem !important; - } - .ps-lg-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1200px) { - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-grid { - display: grid !important; - } - .d-xl-inline-grid { - display: inline-grid !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: flex !important; - } - .d-xl-inline-flex { - display: inline-flex !important; - } - .d-xl-none { - display: none !important; - } - .flex-xl-fill { - flex: 1 1 auto !important; - } - .flex-xl-row { - flex-direction: row !important; - } - .flex-xl-column { - flex-direction: column !important; - } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xl-wrap { - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xl-start { - justify-content: flex-start !important; - } - .justify-content-xl-end { - justify-content: flex-end !important; - } - .justify-content-xl-center { - justify-content: center !important; - } - .justify-content-xl-between { - justify-content: space-between !important; - } - .justify-content-xl-around { - justify-content: space-around !important; - } - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - .align-items-xl-start { - align-items: flex-start !important; - } - .align-items-xl-end { - align-items: flex-end !important; - } - .align-items-xl-center { - align-items: center !important; - } - .align-items-xl-baseline { - align-items: baseline !important; - } - .align-items-xl-stretch { - align-items: stretch !important; - } - .align-content-xl-start { - align-content: flex-start !important; - } - .align-content-xl-end { - align-content: flex-end !important; - } - .align-content-xl-center { - align-content: center !important; - } - .align-content-xl-between { - align-content: space-between !important; - } - .align-content-xl-around { - align-content: space-around !important; - } - .align-content-xl-stretch { - align-content: stretch !important; - } - .align-self-xl-auto { - align-self: auto !important; - } - .align-self-xl-start { - align-self: flex-start !important; - } - .align-self-xl-end { - align-self: flex-end !important; - } - .align-self-xl-center { - align-self: center !important; - } - .align-self-xl-baseline { - align-self: baseline !important; - } - .align-self-xl-stretch { - align-self: stretch !important; - } - .order-xl-first { - order: -1 !important; - } - .order-xl-0 { - order: 0 !important; - } - .order-xl-1 { - order: 1 !important; - } - .order-xl-2 { - order: 2 !important; - } - .order-xl-3 { - order: 3 !important; - } - .order-xl-4 { - order: 4 !important; - } - .order-xl-5 { - order: 5 !important; - } - .order-xl-last { - order: 6 !important; - } - .m-xl-0 { - margin: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-xl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-xl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-xl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xl-0 { - margin-top: 0 !important; - } - .mt-xl-1 { - margin-top: 0.25rem !important; - } - .mt-xl-2 { - margin-top: 0.5rem !important; - } - .mt-xl-3 { - margin-top: 1rem !important; - } - .mt-xl-4 { - margin-top: 1.5rem !important; - } - .mt-xl-5 { - margin-top: 3rem !important; - } - .mt-xl-auto { - margin-top: auto !important; - } - .me-xl-0 { - margin-right: 0 !important; - } - .me-xl-1 { - margin-right: 0.25rem !important; - } - .me-xl-2 { - margin-right: 0.5rem !important; - } - .me-xl-3 { - margin-right: 1rem !important; - } - .me-xl-4 { - margin-right: 1.5rem !important; - } - .me-xl-5 { - margin-right: 3rem !important; - } - .me-xl-auto { - margin-right: auto !important; - } - .mb-xl-0 { - margin-bottom: 0 !important; - } - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xl-3 { - margin-bottom: 1rem !important; - } - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xl-5 { - margin-bottom: 3rem !important; - } - .mb-xl-auto { - margin-bottom: auto !important; - } - .ms-xl-0 { - margin-left: 0 !important; - } - .ms-xl-1 { - margin-left: 0.25rem !important; - } - .ms-xl-2 { - margin-left: 0.5rem !important; - } - .ms-xl-3 { - margin-left: 1rem !important; - } - .ms-xl-4 { - margin-left: 1.5rem !important; - } - .ms-xl-5 { - margin-left: 3rem !important; - } - .ms-xl-auto { - margin-left: auto !important; - } - .p-xl-0 { - padding: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-xl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-xl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-xl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xl-0 { - padding-top: 0 !important; - } - .pt-xl-1 { - padding-top: 0.25rem !important; - } - .pt-xl-2 { - padding-top: 0.5rem !important; - } - .pt-xl-3 { - padding-top: 1rem !important; - } - .pt-xl-4 { - padding-top: 1.5rem !important; - } - .pt-xl-5 { - padding-top: 3rem !important; - } - .pe-xl-0 { - padding-right: 0 !important; - } - .pe-xl-1 { - padding-right: 0.25rem !important; - } - .pe-xl-2 { - padding-right: 0.5rem !important; - } - .pe-xl-3 { - padding-right: 1rem !important; - } - .pe-xl-4 { - padding-right: 1.5rem !important; - } - .pe-xl-5 { - padding-right: 3rem !important; - } - .pb-xl-0 { - padding-bottom: 0 !important; - } - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xl-3 { - padding-bottom: 1rem !important; - } - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xl-5 { - padding-bottom: 3rem !important; - } - .ps-xl-0 { - padding-left: 0 !important; - } - .ps-xl-1 { - padding-left: 0.25rem !important; - } - .ps-xl-2 { - padding-left: 0.5rem !important; - } - .ps-xl-3 { - padding-left: 1rem !important; - } - .ps-xl-4 { - padding-left: 1.5rem !important; - } - .ps-xl-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1400px) { - .d-xxl-inline { - display: inline !important; - } - .d-xxl-inline-block { - display: inline-block !important; - } - .d-xxl-block { - display: block !important; - } - .d-xxl-grid { - display: grid !important; - } - .d-xxl-inline-grid { - display: inline-grid !important; - } - .d-xxl-table { - display: table !important; - } - .d-xxl-table-row { - display: table-row !important; - } - .d-xxl-table-cell { - display: table-cell !important; - } - .d-xxl-flex { - display: flex !important; - } - .d-xxl-inline-flex { - display: inline-flex !important; - } - .d-xxl-none { - display: none !important; - } - .flex-xxl-fill { - flex: 1 1 auto !important; - } - .flex-xxl-row { - flex-direction: row !important; - } - .flex-xxl-column { - flex-direction: column !important; - } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xxl-start { - justify-content: flex-start !important; - } - .justify-content-xxl-end { - justify-content: flex-end !important; - } - .justify-content-xxl-center { - justify-content: center !important; - } - .justify-content-xxl-between { - justify-content: space-between !important; - } - .justify-content-xxl-around { - justify-content: space-around !important; - } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - .align-items-xxl-start { - align-items: flex-start !important; - } - .align-items-xxl-end { - align-items: flex-end !important; - } - .align-items-xxl-center { - align-items: center !important; - } - .align-items-xxl-baseline { - align-items: baseline !important; - } - .align-items-xxl-stretch { - align-items: stretch !important; - } - .align-content-xxl-start { - align-content: flex-start !important; - } - .align-content-xxl-end { - align-content: flex-end !important; - } - .align-content-xxl-center { - align-content: center !important; - } - .align-content-xxl-between { - align-content: space-between !important; - } - .align-content-xxl-around { - align-content: space-around !important; - } - .align-content-xxl-stretch { - align-content: stretch !important; - } - .align-self-xxl-auto { - align-self: auto !important; - } - .align-self-xxl-start { - align-self: flex-start !important; - } - .align-self-xxl-end { - align-self: flex-end !important; - } - .align-self-xxl-center { - align-self: center !important; - } - .align-self-xxl-baseline { - align-self: baseline !important; - } - .align-self-xxl-stretch { - align-self: stretch !important; - } - .order-xxl-first { - order: -1 !important; - } - .order-xxl-0 { - order: 0 !important; - } - .order-xxl-1 { - order: 1 !important; - } - .order-xxl-2 { - order: 2 !important; - } - .order-xxl-3 { - order: 3 !important; - } - .order-xxl-4 { - order: 4 !important; - } - .order-xxl-5 { - order: 5 !important; - } - .order-xxl-last { - order: 6 !important; - } - .m-xxl-0 { - margin: 0 !important; - } - .m-xxl-1 { - margin: 0.25rem !important; - } - .m-xxl-2 { - margin: 0.5rem !important; - } - .m-xxl-3 { - margin: 1rem !important; - } - .m-xxl-4 { - margin: 1.5rem !important; - } - .m-xxl-5 { - margin: 3rem !important; - } - .m-xxl-auto { - margin: auto !important; - } - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-xxl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-xxl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-xxl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xxl-0 { - margin-top: 0 !important; - } - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - .mt-xxl-3 { - margin-top: 1rem !important; - } - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - .mt-xxl-5 { - margin-top: 3rem !important; - } - .mt-xxl-auto { - margin-top: auto !important; - } - .me-xxl-0 { - margin-right: 0 !important; - } - .me-xxl-1 { - margin-right: 0.25rem !important; - } - .me-xxl-2 { - margin-right: 0.5rem !important; - } - .me-xxl-3 { - margin-right: 1rem !important; - } - .me-xxl-4 { - margin-right: 1.5rem !important; - } - .me-xxl-5 { - margin-right: 3rem !important; - } - .me-xxl-auto { - margin-right: auto !important; - } - .mb-xxl-0 { - margin-bottom: 0 !important; - } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - .mb-xxl-auto { - margin-bottom: auto !important; - } - .ms-xxl-0 { - margin-left: 0 !important; - } - .ms-xxl-1 { - margin-left: 0.25rem !important; - } - .ms-xxl-2 { - margin-left: 0.5rem !important; - } - .ms-xxl-3 { - margin-left: 1rem !important; - } - .ms-xxl-4 { - margin-left: 1.5rem !important; - } - .ms-xxl-5 { - margin-left: 3rem !important; - } - .ms-xxl-auto { - margin-left: auto !important; - } - .p-xxl-0 { - padding: 0 !important; - } - .p-xxl-1 { - padding: 0.25rem !important; - } - .p-xxl-2 { - padding: 0.5rem !important; - } - .p-xxl-3 { - padding: 1rem !important; - } - .p-xxl-4 { - padding: 1.5rem !important; - } - .p-xxl-5 { - padding: 3rem !important; - } - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-xxl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-xxl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-xxl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xxl-0 { - padding-top: 0 !important; - } - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - .pt-xxl-3 { - padding-top: 1rem !important; - } - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - .pt-xxl-5 { - padding-top: 3rem !important; - } - .pe-xxl-0 { - padding-right: 0 !important; - } - .pe-xxl-1 { - padding-right: 0.25rem !important; - } - .pe-xxl-2 { - padding-right: 0.5rem !important; - } - .pe-xxl-3 { - padding-right: 1rem !important; - } - .pe-xxl-4 { - padding-right: 1.5rem !important; - } - .pe-xxl-5 { - padding-right: 3rem !important; - } - .pb-xxl-0 { - padding-bottom: 0 !important; - } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - .ps-xxl-0 { - padding-left: 0 !important; - } - .ps-xxl-1 { - padding-left: 0.25rem !important; - } - .ps-xxl-2 { - padding-left: 0.5rem !important; - } - .ps-xxl-3 { - padding-left: 1rem !important; - } - .ps-xxl-4 { - padding-left: 1.5rem !important; - } - .ps-xxl-5 { - padding-left: 3rem !important; - } -} -@media print { - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-grid { - display: grid !important; - } - .d-print-inline-grid { - display: inline-grid !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: flex !important; - } - .d-print-inline-flex { - display: inline-flex !important; - } - .d-print-none { - display: none !important; - } -} - -/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-grid.css.map b/site/public/docs/5.3/dist/css/bootstrap-grid.css.map deleted file mode 100644 index ce99ec1966..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-grid.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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EE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EA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;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,2BAAA;ALsjDZ;;AK7jDQ;EAOI,iCAAA;AL0jDZ;;AKjkDQ;EAOI,gCAAA;AL8jDZ;;AKrkDQ;EAOI,8BAAA;ALkkDZ;;AKzkDQ;EAOI,gCAAA;ALskDZ;;AK7kDQ;EAOI,8BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,0BAAA;ALsmDZ;;AK7mDQ;EAOI,gCAAA;AL0mDZ;;AKjnDQ;EAOI,+BAAA;AL8mDZ;;AKrnDQ;EAOI,6BAAA;ALknDZ;;AKznDQ;EAOI,+BAAA;ALsnDZ;;AK7nDQ;EAOI,6BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA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nEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,0BAAA;IAAA,yBAAA;ELswEV;EK7wEM;IAO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EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;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AAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,0BAAA;ELw9FV;EK/9FM;IAOI,gCAAA;EL29FV;EKl+FM;IAOI,+BAAA;EL89FV;EKr+FM;IAOI,6BAAA;ELi+FV;EKx+FM;IAOI,+BAAA;ELo+FV;EK3+FM;IAOI,6BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/lGM;IAOI,uCAAA;EL2lGV;EKlmGM;IAOI,sCAAA;EL8lGV;EKrmGM;IAOI,iCAAA;ELimGV;EKxmGM;IAOI,2BAAA;ELomGV;EK3mGM;IAOI,iCAAA;ELumGV;EK9mGM;IAOI,+BAAA;EL0mGV;EKjnGM;IAOI,6BAAA;EL6mGV;EKpnGM;IAOI,+BAAA;ELgnGV;EKvnGM;IAOI,8BAAA;ELmnGV;EK1nGM;IAOI,oBAAA;ELsnGV;EK7nGM;IAOI,mBAAA;ELynGV;EKhoGM;IAOI,mBAAA;EL4nGV;EKnoGM;IAOI,mBAAA;EL+nGV;EKtoGM;IAOI,mBAAA;ELkoGV;EKzoGM;IAOI,mBAAA;ELqoGV;EK5oGM;IAOI,mBAAA;ELwoGV;EK/oGM;IAOI,mBAAA;EL2oGV;EKlpGM;IAOI,oBAAA;EL8oGV;EKrpGM;IAOI,0BAAA;ELipGV;EKxpGM;IAOI,yBAAA;ELopGV;EK3pGM;IAOI,uBAAA;ELupGV;EK9pGM;IAOI,yBAAA;EL0pGV;EKjqGM;IAOI,uBAAA;EL6pGV;EKpqGM;IAOI,uBAAA;ELgqGV;EKvqGM;IAOI,0BAAA;IAAA,yBAAA;ELoqGV;EK3qGM;IAOI,gCAAA;IAAA,+BAAA;ELwqGV;EK/qGM;IAOI,+BAAA;IAAA,8BAAA;EL4qGV;EKnrGM;IAOI,6BAAA;IAAA,4BAAA;ELgrGV;EKvrGM;IAOI,+BAAA;IAAA,8BAAA;ELorGV;EK3rGM;IAOI,6BAAA;IAAA,4BAAA;ELwrGV;EK/rGM;IAOI,6BAAA;IAAA,4BAAA;EL4rGV;EKnsGM;IAOI,wBAAA;IAAA,2BAAA;ELgsGV;EKvsGM;IAOI,8BAAA;IAAA,iCAAA;ELosGV;EK3sGM;IAOI,6BAAA;IAAA,gCAAA;ELwsGV;EK/sGM;IAOI,2BAAA;IAAA,8BAAA;EL4sGV;EKntGM;IAOI,6BAAA;IAAA,gCAAA;ELgtGV;EKvtGM;IAOI,2BAAA;IAAA,8BAAA;ELotGV;EK3tGM;IAOI,2BAAA;IAAA,8BAAA;ELwtGV;EK/tGM;IAOI,wBAAA;EL2tGV;EKluGM;IAOI,8BAAA;EL8tGV;EKruGM;IAOI,6BAAA;ELiuGV;EKxuGM;IAOI,2BAAA;ELouGV;EK3uGM;IAOI,6BAAA;ELuuGV;EK9uGM;IAOI,2BAAA;EL0uGV;EKjvGM;IAOI,2BAAA;EL6uGV;EKpvGM;IAOI,0BAAA;ELgvGV;EKvvGM;IAOI,gCAAA;ELmvGV;EK1vGM;IAOI,+BAAA;ELsvGV;EK7vGM;IAOI,6BAAA;ELyvGV;EKhwGM;IAOI,+BAAA;EL4vGV;EKnwGM;IAOI,6BAAA;EL+vGV;EKtwGM;IAOI,6BAAA;ELkwGV;EKzwGM;IAOI,2BAAA;ELqwGV;EK5wGM;IAOI,iCAAA;ELwwGV;EK/wGM;IAOI,gCAAA;EL2wGV;EKlxGM;IAOI,8BAAA;EL8wGV;EKrxGM;IAOI,gCAAA;ELixGV;EKxxGM;IAOI,8BAAA;ELoxGV;EK3xGM;IAOI,8BAAA;ELuxGV;EK9xGM;IAOI,yBAAA;EL0xGV;EKjyGM;IAOI,+BAAA;EL6xGV;EKpyGM;IAOI,8BAAA;ELgyGV;EKvyGM;IAOI,4BAAA;ELmyGV;EK1yGM;IAOI,8BAAA;ELsyGV;EK7yGM;IAOI,4BAAA;ELyyGV;EKhzGM;IAOI,4BAAA;EL4yGV;EKnzGM;IAOI,qBAAA;EL+yGV;EKtzGM;IAOI,2BAAA;ELkzGV;EKzzGM;IAOI,0BAAA;ELqzGV;EK5zGM;IAOI,wBAAA;ELwzGV;EK/zGM;IAOI,0BAAA;EL2zGV;EKl0GM;IAOI,wBAAA;EL8zGV;EKr0GM;IAOI,2BAAA;IAAA,0BAAA;ELk0GV;EKz0GM;IAOI,iCAAA;IAAA,gCAAA;ELs0GV;EK70GM;IAOI,gCAAA;IAAA,+BAAA;EL00GV;EKj1GM;IAOI,8BAAA;IAAA,6BAAA;EL80GV;EKr1GM;IAOI,gCAAA;IAAA,+BAAA;ELk1GV;EKz1GM;IAOI,8BAAA;IAAA,6BAAA;ELs1GV;EK71GM;IAOI,yBAAA;IAAA,4BAAA;EL01GV;EKj2GM;IAOI,+BAAA;IAAA,kCAAA;EL81GV;EKr2GM;IAOI,8BAAA;IAAA,iCAAA;ELk2GV;EKz2GM;IAOI,4BAAA;IAAA,+BAAA;ELs2GV;EK72GM;IAOI,8BAAA;IAAA,iCAAA;EL02GV;EKj3GM;IAOI,4BAAA;IAAA,+BAAA;EL82GV;EKr3GM;IAOI,yBAAA;ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,2BAAA;ELm4GV;EK14GM;IAOI,iCAAA;ELs4GV;EK74GM;IAOI,gCAAA;ELy4GV;EKh5GM;IAOI,8BAAA;EL44GV;EKn5GM;IAOI,gCAAA;EL+4GV;EKt5GM;IAOI,8BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,0BAAA;ELu6GV;EK96GM;IAOI,gCAAA;EL06GV;EKj7GM;IAOI,+BAAA;EL66GV;EKp7GM;IAOI,6BAAA;ELg7GV;EKv7GM;IAOI,+BAAA;ELm7GV;EK17GM;IAOI,6BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;I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","file":"bootstrap-grid.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n// scss-docs-start vr-variables\n$vr-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end vr-variables\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-color: $body-color !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}emphasis-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;\n\n$table-border-factor: .2 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n$btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}secondary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-icon-color: $navbar-dark-color !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n// fusv-disable\n$accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.3.3\n// fusv-enable\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;\n$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n\n@import \"variables-dark\"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-grid.min.css b/site/public/docs/5.3/dist/css/bootstrap-grid.min.css deleted file mode 100644 index 49b843b194..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-grid.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-grid.min.css.map b/site/public/docs/5.3/dist/css/bootstrap-grid.min.css.map deleted file mode 100644 index a0db8b57a8..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-grid.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.css b/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.css deleted file mode 100644 index 1a5d65630b..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.css +++ /dev/null @@ -1,4084 +0,0 @@ -/*! - * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - width: 100%; - padding-left: calc(var(--bs-gutter-x) * 0.5); - padding-right: calc(var(--bs-gutter-x) * 0.5); - margin-left: auto; - margin-right: auto; -} - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; - } -} -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; - } -} -:root { - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; -} - -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--bs-gutter-y)); - margin-left: calc(-0.5 * var(--bs-gutter-x)); - margin-right: calc(-0.5 * var(--bs-gutter-x)); -} -.row > * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-left: calc(var(--bs-gutter-x) * 0.5); - padding-right: calc(var(--bs-gutter-x) * 0.5); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.33333333%; -} - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; -} - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-right: 8.33333333%; -} - -.offset-2 { - margin-right: 16.66666667%; -} - -.offset-3 { - margin-right: 25%; -} - -.offset-4 { - margin-right: 33.33333333%; -} - -.offset-5 { - margin-right: 41.66666667%; -} - -.offset-6 { - margin-right: 50%; -} - -.offset-7 { - margin-right: 58.33333333%; -} - -.offset-8 { - margin-right: 66.66666667%; -} - -.offset-9 { - margin-right: 75%; -} - -.offset-10 { - margin-right: 83.33333333%; -} - -.offset-11 { - margin-right: 91.66666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-sm-0 { - margin-right: 0; - } - .offset-sm-1 { - margin-right: 8.33333333%; - } - .offset-sm-2 { - margin-right: 16.66666667%; - } - .offset-sm-3 { - margin-right: 25%; - } - .offset-sm-4 { - margin-right: 33.33333333%; - } - .offset-sm-5 { - margin-right: 41.66666667%; - } - .offset-sm-6 { - margin-right: 50%; - } - .offset-sm-7 { - margin-right: 58.33333333%; - } - .offset-sm-8 { - margin-right: 66.66666667%; - } - .offset-sm-9 { - margin-right: 75%; - } - .offset-sm-10 { - margin-right: 83.33333333%; - } - .offset-sm-11 { - margin-right: 91.66666667%; - } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; - } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; - } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; - } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; - } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; - } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-md-0 { - margin-right: 0; - } - .offset-md-1 { - margin-right: 8.33333333%; - } - .offset-md-2 { - margin-right: 16.66666667%; - } - .offset-md-3 { - margin-right: 25%; - } - .offset-md-4 { - margin-right: 33.33333333%; - } - .offset-md-5 { - margin-right: 41.66666667%; - } - .offset-md-6 { - margin-right: 50%; - } - .offset-md-7 { - margin-right: 58.33333333%; - } - .offset-md-8 { - margin-right: 66.66666667%; - } - .offset-md-9 { - margin-right: 75%; - } - .offset-md-10 { - margin-right: 83.33333333%; - } - .offset-md-11 { - margin-right: 91.66666667%; - } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; - } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; - } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; - } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; - } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; - } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; - } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; - } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; - } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; - } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; - } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; - } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-lg-0 { - margin-right: 0; - } - .offset-lg-1 { - margin-right: 8.33333333%; - } - .offset-lg-2 { - margin-right: 16.66666667%; - } - .offset-lg-3 { - margin-right: 25%; - } - .offset-lg-4 { - margin-right: 33.33333333%; - } - .offset-lg-5 { - margin-right: 41.66666667%; - } - .offset-lg-6 { - margin-right: 50%; - } - .offset-lg-7 { - margin-right: 58.33333333%; - } - .offset-lg-8 { - margin-right: 66.66666667%; - } - .offset-lg-9 { - margin-right: 75%; - } - .offset-lg-10 { - margin-right: 83.33333333%; - } - .offset-lg-11 { - margin-right: 91.66666667%; - } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; - } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; - } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; - } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; - } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; - } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xl-0 { - margin-right: 0; - } - .offset-xl-1 { - margin-right: 8.33333333%; - } - .offset-xl-2 { - margin-right: 16.66666667%; - } - .offset-xl-3 { - margin-right: 25%; - } - .offset-xl-4 { - margin-right: 33.33333333%; - } - .offset-xl-5 { - margin-right: 41.66666667%; - } - .offset-xl-6 { - margin-right: 50%; - } - .offset-xl-7 { - margin-right: 58.33333333%; - } - .offset-xl-8 { - margin-right: 66.66666667%; - } - .offset-xl-9 { - margin-right: 75%; - } - .offset-xl-10 { - margin-right: 83.33333333%; - } - .offset-xl-11 { - margin-right: 91.66666667%; - } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; - } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; - } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; - } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; - } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; - } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.33333333%; - } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xxl-0 { - margin-right: 0; - } - .offset-xxl-1 { - margin-right: 8.33333333%; - } - .offset-xxl-2 { - margin-right: 16.66666667%; - } - .offset-xxl-3 { - margin-right: 25%; - } - .offset-xxl-4 { - margin-right: 33.33333333%; - } - .offset-xxl-5 { - margin-right: 41.66666667%; - } - .offset-xxl-6 { - margin-right: 50%; - } - .offset-xxl-7 { - margin-right: 58.33333333%; - } - .offset-xxl-8 { - margin-right: 66.66666667%; - } - .offset-xxl-9 { - margin-right: 75%; - } - .offset-xxl-10 { - margin-right: 83.33333333%; - } - .offset-xxl-11 { - margin-right: 91.66666667%; - } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; - } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; - } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; - } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; - } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; - } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: grid !important; -} - -.d-inline-grid { - display: inline-grid !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-none { - display: none !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-left: 0 !important; - margin-right: 0 !important; -} - -.mx-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; -} - -.mx-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; -} - -.mx-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; -} - -.mx-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; -} - -.mx-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; -} - -.mx-auto { - margin-left: auto !important; - margin-right: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-left: 0 !important; -} - -.me-1 { - margin-left: 0.25rem !important; -} - -.me-2 { - margin-left: 0.5rem !important; -} - -.me-3 { - margin-left: 1rem !important; -} - -.me-4 { - margin-left: 1.5rem !important; -} - -.me-5 { - margin-left: 3rem !important; -} - -.me-auto { - margin-left: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-right: 0 !important; -} - -.ms-1 { - margin-right: 0.25rem !important; -} - -.ms-2 { - margin-right: 0.5rem !important; -} - -.ms-3 { - margin-right: 1rem !important; -} - -.ms-4 { - margin-right: 1.5rem !important; -} - -.ms-5 { - margin-right: 3rem !important; -} - -.ms-auto { - margin-right: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-left: 0 !important; - padding-right: 0 !important; -} - -.px-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; -} - -.px-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; -} - -.px-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; -} - -.px-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; -} - -.px-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-left: 0 !important; -} - -.pe-1 { - padding-left: 0.25rem !important; -} - -.pe-2 { - padding-left: 0.5rem !important; -} - -.pe-3 { - padding-left: 1rem !important; -} - -.pe-4 { - padding-left: 1.5rem !important; -} - -.pe-5 { - padding-left: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-right: 0 !important; -} - -.ps-1 { - padding-right: 0.25rem !important; -} - -.ps-2 { - padding-right: 0.5rem !important; -} - -.ps-3 { - padding-right: 1rem !important; -} - -.ps-4 { - padding-right: 1.5rem !important; -} - -.ps-5 { - padding-right: 3rem !important; -} - -@media (min-width: 576px) { - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-grid { - display: grid !important; - } - .d-sm-inline-grid { - display: inline-grid !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: flex !important; - } - .d-sm-inline-flex { - display: inline-flex !important; - } - .d-sm-none { - display: none !important; - } - .flex-sm-fill { - flex: 1 1 auto !important; - } - .flex-sm-row { - flex-direction: row !important; - } - .flex-sm-column { - flex-direction: column !important; - } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - .flex-sm-wrap { - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-sm-start { - justify-content: flex-start !important; - } - .justify-content-sm-end { - justify-content: flex-end !important; - } - .justify-content-sm-center { - justify-content: center !important; - } - .justify-content-sm-between { - justify-content: space-between !important; - } - .justify-content-sm-around { - justify-content: space-around !important; - } - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - .align-items-sm-start { - align-items: flex-start !important; - } - .align-items-sm-end { - align-items: flex-end !important; - } - .align-items-sm-center { - align-items: center !important; - } - .align-items-sm-baseline { - align-items: baseline !important; - } - .align-items-sm-stretch { - align-items: stretch !important; - } - .align-content-sm-start { - align-content: flex-start !important; - } - .align-content-sm-end { - align-content: flex-end !important; - } - .align-content-sm-center { - align-content: center !important; - } - .align-content-sm-between { - align-content: space-between !important; - } - .align-content-sm-around { - align-content: space-around !important; - } - .align-content-sm-stretch { - align-content: stretch !important; - } - .align-self-sm-auto { - align-self: auto !important; - } - .align-self-sm-start { - align-self: flex-start !important; - } - .align-self-sm-end { - align-self: flex-end !important; - } - .align-self-sm-center { - align-self: center !important; - } - .align-self-sm-baseline { - align-self: baseline !important; - } - .align-self-sm-stretch { - align-self: stretch !important; - } - .order-sm-first { - order: -1 !important; - } - .order-sm-0 { - order: 0 !important; - } - .order-sm-1 { - order: 1 !important; - } - .order-sm-2 { - order: 2 !important; - } - .order-sm-3 { - order: 3 !important; - } - .order-sm-4 { - order: 4 !important; - } - .order-sm-5 { - order: 5 !important; - } - .order-sm-last { - order: 6 !important; - } - .m-sm-0 { - margin: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mx-sm-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-sm-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-sm-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-sm-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-sm-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-sm-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-sm-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-sm-0 { - margin-top: 0 !important; - } - .mt-sm-1 { - margin-top: 0.25rem !important; - } - .mt-sm-2 { - margin-top: 0.5rem !important; - } - .mt-sm-3 { - margin-top: 1rem !important; - } - .mt-sm-4 { - margin-top: 1.5rem !important; - } - .mt-sm-5 { - margin-top: 3rem !important; - } - .mt-sm-auto { - margin-top: auto !important; - } - .me-sm-0 { - margin-left: 0 !important; - } - .me-sm-1 { - margin-left: 0.25rem !important; - } - .me-sm-2 { - margin-left: 0.5rem !important; - } - .me-sm-3 { - margin-left: 1rem !important; - } - .me-sm-4 { - margin-left: 1.5rem !important; - } - .me-sm-5 { - margin-left: 3rem !important; - } - .me-sm-auto { - margin-left: auto !important; - } - .mb-sm-0 { - margin-bottom: 0 !important; - } - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - .mb-sm-3 { - margin-bottom: 1rem !important; - } - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - .mb-sm-5 { - margin-bottom: 3rem !important; - } - .mb-sm-auto { - margin-bottom: auto !important; - } - .ms-sm-0 { - margin-right: 0 !important; - } - .ms-sm-1 { - margin-right: 0.25rem !important; - } - .ms-sm-2 { - margin-right: 0.5rem !important; - } - .ms-sm-3 { - margin-right: 1rem !important; - } - .ms-sm-4 { - margin-right: 1.5rem !important; - } - .ms-sm-5 { - margin-right: 3rem !important; - } - .ms-sm-auto { - margin-right: auto !important; - } - .p-sm-0 { - padding: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .px-sm-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-sm-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-sm-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-sm-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-sm-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-sm-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-sm-0 { - padding-top: 0 !important; - } - .pt-sm-1 { - padding-top: 0.25rem !important; - } - .pt-sm-2 { - padding-top: 0.5rem !important; - } - .pt-sm-3 { - padding-top: 1rem !important; - } - .pt-sm-4 { - padding-top: 1.5rem !important; - } - .pt-sm-5 { - padding-top: 3rem !important; - } - .pe-sm-0 { - padding-left: 0 !important; - } - .pe-sm-1 { - padding-left: 0.25rem !important; - } - .pe-sm-2 { - padding-left: 0.5rem !important; - } - .pe-sm-3 { - padding-left: 1rem !important; - } - .pe-sm-4 { - padding-left: 1.5rem !important; - } - .pe-sm-5 { - padding-left: 3rem !important; - } - .pb-sm-0 { - padding-bottom: 0 !important; - } - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - .pb-sm-3 { - padding-bottom: 1rem !important; - } - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - .pb-sm-5 { - padding-bottom: 3rem !important; - } - .ps-sm-0 { - padding-right: 0 !important; - } - .ps-sm-1 { - padding-right: 0.25rem !important; - } - .ps-sm-2 { - padding-right: 0.5rem !important; - } - .ps-sm-3 { - padding-right: 1rem !important; - } - .ps-sm-4 { - padding-right: 1.5rem !important; - } - .ps-sm-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 768px) { - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-grid { - display: grid !important; - } - .d-md-inline-grid { - display: inline-grid !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: flex !important; - } - .d-md-inline-flex { - display: inline-flex !important; - } - .d-md-none { - display: none !important; - } - .flex-md-fill { - flex: 1 1 auto !important; - } - .flex-md-row { - flex-direction: row !important; - } - .flex-md-column { - flex-direction: column !important; - } - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - .flex-md-grow-0 { - flex-grow: 0 !important; - } - .flex-md-grow-1 { - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - .flex-md-wrap { - flex-wrap: wrap !important; - } - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-md-start { - justify-content: flex-start !important; - } - .justify-content-md-end { - justify-content: flex-end !important; - } - .justify-content-md-center { - justify-content: center !important; - } - .justify-content-md-between { - justify-content: space-between !important; - } - .justify-content-md-around { - justify-content: space-around !important; - } - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - .align-items-md-start { - align-items: flex-start !important; - } - .align-items-md-end { - align-items: flex-end !important; - } - .align-items-md-center { - align-items: center !important; - } - .align-items-md-baseline { - align-items: baseline !important; - } - .align-items-md-stretch { - align-items: stretch !important; - } - .align-content-md-start { - align-content: flex-start !important; - } - .align-content-md-end { - align-content: flex-end !important; - } - .align-content-md-center { - align-content: center !important; - } - .align-content-md-between { - align-content: space-between !important; - } - .align-content-md-around { - align-content: space-around !important; - } - .align-content-md-stretch { - align-content: stretch !important; - } - .align-self-md-auto { - align-self: auto !important; - } - .align-self-md-start { - align-self: flex-start !important; - } - .align-self-md-end { - align-self: flex-end !important; - } - .align-self-md-center { - align-self: center !important; - } - .align-self-md-baseline { - align-self: baseline !important; - } - .align-self-md-stretch { - align-self: stretch !important; - } - .order-md-first { - order: -1 !important; - } - .order-md-0 { - order: 0 !important; - } - .order-md-1 { - order: 1 !important; - } - .order-md-2 { - order: 2 !important; - } - .order-md-3 { - order: 3 !important; - } - .order-md-4 { - order: 4 !important; - } - .order-md-5 { - order: 5 !important; - } - .order-md-last { - order: 6 !important; - } - .m-md-0 { - margin: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mx-md-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-md-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-md-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-md-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-md-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-md-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-md-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-md-0 { - margin-top: 0 !important; - } - .mt-md-1 { - margin-top: 0.25rem !important; - } - .mt-md-2 { - margin-top: 0.5rem !important; - } - .mt-md-3 { - margin-top: 1rem !important; - } - .mt-md-4 { - margin-top: 1.5rem !important; - } - .mt-md-5 { - margin-top: 3rem !important; - } - .mt-md-auto { - margin-top: auto !important; - } - .me-md-0 { - margin-left: 0 !important; - } - .me-md-1 { - margin-left: 0.25rem !important; - } - .me-md-2 { - margin-left: 0.5rem !important; - } - .me-md-3 { - margin-left: 1rem !important; - } - .me-md-4 { - margin-left: 1.5rem !important; - } - .me-md-5 { - margin-left: 3rem !important; - } - .me-md-auto { - margin-left: auto !important; - } - .mb-md-0 { - margin-bottom: 0 !important; - } - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - .mb-md-3 { - margin-bottom: 1rem !important; - } - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - .mb-md-5 { - margin-bottom: 3rem !important; - } - .mb-md-auto { - margin-bottom: auto !important; - } - .ms-md-0 { - margin-right: 0 !important; - } - .ms-md-1 { - margin-right: 0.25rem !important; - } - .ms-md-2 { - margin-right: 0.5rem !important; - } - .ms-md-3 { - margin-right: 1rem !important; - } - .ms-md-4 { - margin-right: 1.5rem !important; - } - .ms-md-5 { - margin-right: 3rem !important; - } - .ms-md-auto { - margin-right: auto !important; - } - .p-md-0 { - padding: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .px-md-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-md-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-md-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-md-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-md-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-md-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-md-0 { - padding-top: 0 !important; - } - .pt-md-1 { - padding-top: 0.25rem !important; - } - .pt-md-2 { - padding-top: 0.5rem !important; - } - .pt-md-3 { - padding-top: 1rem !important; - } - .pt-md-4 { - padding-top: 1.5rem !important; - } - .pt-md-5 { - padding-top: 3rem !important; - } - .pe-md-0 { - padding-left: 0 !important; - } - .pe-md-1 { - padding-left: 0.25rem !important; - } - .pe-md-2 { - padding-left: 0.5rem !important; - } - .pe-md-3 { - padding-left: 1rem !important; - } - .pe-md-4 { - padding-left: 1.5rem !important; - } - .pe-md-5 { - padding-left: 3rem !important; - } - .pb-md-0 { - padding-bottom: 0 !important; - } - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - .pb-md-3 { - padding-bottom: 1rem !important; - } - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - .pb-md-5 { - padding-bottom: 3rem !important; - } - .ps-md-0 { - padding-right: 0 !important; - } - .ps-md-1 { - padding-right: 0.25rem !important; - } - .ps-md-2 { - padding-right: 0.5rem !important; - } - .ps-md-3 { - padding-right: 1rem !important; - } - .ps-md-4 { - padding-right: 1.5rem !important; - } - .ps-md-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 992px) { - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-grid { - display: grid !important; - } - .d-lg-inline-grid { - display: inline-grid !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: flex !important; - } - .d-lg-inline-flex { - display: inline-flex !important; - } - .d-lg-none { - display: none !important; - } - .flex-lg-fill { - flex: 1 1 auto !important; - } - .flex-lg-row { - flex-direction: row !important; - } - .flex-lg-column { - flex-direction: column !important; - } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - .flex-lg-wrap { - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-lg-start { - justify-content: flex-start !important; - } - .justify-content-lg-end { - justify-content: flex-end !important; - } - .justify-content-lg-center { - justify-content: center !important; - } - .justify-content-lg-between { - justify-content: space-between !important; - } - .justify-content-lg-around { - justify-content: space-around !important; - } - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - .align-items-lg-start { - align-items: flex-start !important; - } - .align-items-lg-end { - align-items: flex-end !important; - } - .align-items-lg-center { - align-items: center !important; - } - .align-items-lg-baseline { - align-items: baseline !important; - } - .align-items-lg-stretch { - align-items: stretch !important; - } - .align-content-lg-start { - align-content: flex-start !important; - } - .align-content-lg-end { - align-content: flex-end !important; - } - .align-content-lg-center { - align-content: center !important; - } - .align-content-lg-between { - align-content: space-between !important; - } - .align-content-lg-around { - align-content: space-around !important; - } - .align-content-lg-stretch { - align-content: stretch !important; - } - .align-self-lg-auto { - align-self: auto !important; - } - .align-self-lg-start { - align-self: flex-start !important; - } - .align-self-lg-end { - align-self: flex-end !important; - } - .align-self-lg-center { - align-self: center !important; - } - .align-self-lg-baseline { - align-self: baseline !important; - } - .align-self-lg-stretch { - align-self: stretch !important; - } - .order-lg-first { - order: -1 !important; - } - .order-lg-0 { - order: 0 !important; - } - .order-lg-1 { - order: 1 !important; - } - .order-lg-2 { - order: 2 !important; - } - .order-lg-3 { - order: 3 !important; - } - .order-lg-4 { - order: 4 !important; - } - .order-lg-5 { - order: 5 !important; - } - .order-lg-last { - order: 6 !important; - } - .m-lg-0 { - margin: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mx-lg-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-lg-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-lg-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-lg-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-lg-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-lg-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-lg-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-lg-0 { - margin-top: 0 !important; - } - .mt-lg-1 { - margin-top: 0.25rem !important; - } - .mt-lg-2 { - margin-top: 0.5rem !important; - } - .mt-lg-3 { - margin-top: 1rem !important; - } - .mt-lg-4 { - margin-top: 1.5rem !important; - } - .mt-lg-5 { - margin-top: 3rem !important; - } - .mt-lg-auto { - margin-top: auto !important; - } - .me-lg-0 { - margin-left: 0 !important; - } - .me-lg-1 { - margin-left: 0.25rem !important; - } - .me-lg-2 { - margin-left: 0.5rem !important; - } - .me-lg-3 { - margin-left: 1rem !important; - } - .me-lg-4 { - margin-left: 1.5rem !important; - } - .me-lg-5 { - margin-left: 3rem !important; - } - .me-lg-auto { - margin-left: auto !important; - } - .mb-lg-0 { - margin-bottom: 0 !important; - } - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - .mb-lg-3 { - margin-bottom: 1rem !important; - } - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - .mb-lg-5 { - margin-bottom: 3rem !important; - } - .mb-lg-auto { - margin-bottom: auto !important; - } - .ms-lg-0 { - margin-right: 0 !important; - } - .ms-lg-1 { - margin-right: 0.25rem !important; - } - .ms-lg-2 { - margin-right: 0.5rem !important; - } - .ms-lg-3 { - margin-right: 1rem !important; - } - .ms-lg-4 { - margin-right: 1.5rem !important; - } - .ms-lg-5 { - margin-right: 3rem !important; - } - .ms-lg-auto { - margin-right: auto !important; - } - .p-lg-0 { - padding: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .px-lg-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-lg-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-lg-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-lg-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-lg-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-lg-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-lg-0 { - padding-top: 0 !important; - } - .pt-lg-1 { - padding-top: 0.25rem !important; - } - .pt-lg-2 { - padding-top: 0.5rem !important; - } - .pt-lg-3 { - padding-top: 1rem !important; - } - .pt-lg-4 { - padding-top: 1.5rem !important; - } - .pt-lg-5 { - padding-top: 3rem !important; - } - .pe-lg-0 { - padding-left: 0 !important; - } - .pe-lg-1 { - padding-left: 0.25rem !important; - } - .pe-lg-2 { - padding-left: 0.5rem !important; - } - .pe-lg-3 { - padding-left: 1rem !important; - } - .pe-lg-4 { - padding-left: 1.5rem !important; - } - .pe-lg-5 { - padding-left: 3rem !important; - } - .pb-lg-0 { - padding-bottom: 0 !important; - } - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - .pb-lg-3 { - padding-bottom: 1rem !important; - } - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - .pb-lg-5 { - padding-bottom: 3rem !important; - } - .ps-lg-0 { - padding-right: 0 !important; - } - .ps-lg-1 { - padding-right: 0.25rem !important; - } - .ps-lg-2 { - padding-right: 0.5rem !important; - } - .ps-lg-3 { - padding-right: 1rem !important; - } - .ps-lg-4 { - padding-right: 1.5rem !important; - } - .ps-lg-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 1200px) { - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-grid { - display: grid !important; - } - .d-xl-inline-grid { - display: inline-grid !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: flex !important; - } - .d-xl-inline-flex { - display: inline-flex !important; - } - .d-xl-none { - display: none !important; - } - .flex-xl-fill { - flex: 1 1 auto !important; - } - .flex-xl-row { - flex-direction: row !important; - } - .flex-xl-column { - flex-direction: column !important; - } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xl-wrap { - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xl-start { - justify-content: flex-start !important; - } - .justify-content-xl-end { - justify-content: flex-end !important; - } - .justify-content-xl-center { - justify-content: center !important; - } - .justify-content-xl-between { - justify-content: space-between !important; - } - .justify-content-xl-around { - justify-content: space-around !important; - } - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - .align-items-xl-start { - align-items: flex-start !important; - } - .align-items-xl-end { - align-items: flex-end !important; - } - .align-items-xl-center { - align-items: center !important; - } - .align-items-xl-baseline { - align-items: baseline !important; - } - .align-items-xl-stretch { - align-items: stretch !important; - } - .align-content-xl-start { - align-content: flex-start !important; - } - .align-content-xl-end { - align-content: flex-end !important; - } - .align-content-xl-center { - align-content: center !important; - } - .align-content-xl-between { - align-content: space-between !important; - } - .align-content-xl-around { - align-content: space-around !important; - } - .align-content-xl-stretch { - align-content: stretch !important; - } - .align-self-xl-auto { - align-self: auto !important; - } - .align-self-xl-start { - align-self: flex-start !important; - } - .align-self-xl-end { - align-self: flex-end !important; - } - .align-self-xl-center { - align-self: center !important; - } - .align-self-xl-baseline { - align-self: baseline !important; - } - .align-self-xl-stretch { - align-self: stretch !important; - } - .order-xl-first { - order: -1 !important; - } - .order-xl-0 { - order: 0 !important; - } - .order-xl-1 { - order: 1 !important; - } - .order-xl-2 { - order: 2 !important; - } - .order-xl-3 { - order: 3 !important; - } - .order-xl-4 { - order: 4 !important; - } - .order-xl-5 { - order: 5 !important; - } - .order-xl-last { - order: 6 !important; - } - .m-xl-0 { - margin: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mx-xl-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-xl-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-xl-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-xl-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-xl-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-xl-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-xl-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xl-0 { - margin-top: 0 !important; - } - .mt-xl-1 { - margin-top: 0.25rem !important; - } - .mt-xl-2 { - margin-top: 0.5rem !important; - } - .mt-xl-3 { - margin-top: 1rem !important; - } - .mt-xl-4 { - margin-top: 1.5rem !important; - } - .mt-xl-5 { - margin-top: 3rem !important; - } - .mt-xl-auto { - margin-top: auto !important; - } - .me-xl-0 { - margin-left: 0 !important; - } - .me-xl-1 { - margin-left: 0.25rem !important; - } - .me-xl-2 { - margin-left: 0.5rem !important; - } - .me-xl-3 { - margin-left: 1rem !important; - } - .me-xl-4 { - margin-left: 1.5rem !important; - } - .me-xl-5 { - margin-left: 3rem !important; - } - .me-xl-auto { - margin-left: auto !important; - } - .mb-xl-0 { - margin-bottom: 0 !important; - } - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xl-3 { - margin-bottom: 1rem !important; - } - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xl-5 { - margin-bottom: 3rem !important; - } - .mb-xl-auto { - margin-bottom: auto !important; - } - .ms-xl-0 { - margin-right: 0 !important; - } - .ms-xl-1 { - margin-right: 0.25rem !important; - } - .ms-xl-2 { - margin-right: 0.5rem !important; - } - .ms-xl-3 { - margin-right: 1rem !important; - } - .ms-xl-4 { - margin-right: 1.5rem !important; - } - .ms-xl-5 { - margin-right: 3rem !important; - } - .ms-xl-auto { - margin-right: auto !important; - } - .p-xl-0 { - padding: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .px-xl-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-xl-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-xl-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-xl-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-xl-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-xl-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xl-0 { - padding-top: 0 !important; - } - .pt-xl-1 { - padding-top: 0.25rem !important; - } - .pt-xl-2 { - padding-top: 0.5rem !important; - } - .pt-xl-3 { - padding-top: 1rem !important; - } - .pt-xl-4 { - padding-top: 1.5rem !important; - } - .pt-xl-5 { - padding-top: 3rem !important; - } - .pe-xl-0 { - padding-left: 0 !important; - } - .pe-xl-1 { - padding-left: 0.25rem !important; - } - .pe-xl-2 { - padding-left: 0.5rem !important; - } - .pe-xl-3 { - padding-left: 1rem !important; - } - .pe-xl-4 { - padding-left: 1.5rem !important; - } - .pe-xl-5 { - padding-left: 3rem !important; - } - .pb-xl-0 { - padding-bottom: 0 !important; - } - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xl-3 { - padding-bottom: 1rem !important; - } - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xl-5 { - padding-bottom: 3rem !important; - } - .ps-xl-0 { - padding-right: 0 !important; - } - .ps-xl-1 { - padding-right: 0.25rem !important; - } - .ps-xl-2 { - padding-right: 0.5rem !important; - } - .ps-xl-3 { - padding-right: 1rem !important; - } - .ps-xl-4 { - padding-right: 1.5rem !important; - } - .ps-xl-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 1400px) { - .d-xxl-inline { - display: inline !important; - } - .d-xxl-inline-block { - display: inline-block !important; - } - .d-xxl-block { - display: block !important; - } - .d-xxl-grid { - display: grid !important; - } - .d-xxl-inline-grid { - display: inline-grid !important; - } - .d-xxl-table { - display: table !important; - } - .d-xxl-table-row { - display: table-row !important; - } - .d-xxl-table-cell { - display: table-cell !important; - } - .d-xxl-flex { - display: flex !important; - } - .d-xxl-inline-flex { - display: inline-flex !important; - } - .d-xxl-none { - display: none !important; - } - .flex-xxl-fill { - flex: 1 1 auto !important; - } - .flex-xxl-row { - flex-direction: row !important; - } - .flex-xxl-column { - flex-direction: column !important; - } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xxl-start { - justify-content: flex-start !important; - } - .justify-content-xxl-end { - justify-content: flex-end !important; - } - .justify-content-xxl-center { - justify-content: center !important; - } - .justify-content-xxl-between { - justify-content: space-between !important; - } - .justify-content-xxl-around { - justify-content: space-around !important; - } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - .align-items-xxl-start { - align-items: flex-start !important; - } - .align-items-xxl-end { - align-items: flex-end !important; - } - .align-items-xxl-center { - align-items: center !important; - } - .align-items-xxl-baseline { - align-items: baseline !important; - } - .align-items-xxl-stretch { - align-items: stretch !important; - } - .align-content-xxl-start { - align-content: flex-start !important; - } - .align-content-xxl-end { - align-content: flex-end !important; - } - .align-content-xxl-center { - align-content: center !important; - } - .align-content-xxl-between { - align-content: space-between !important; - } - .align-content-xxl-around { - align-content: space-around !important; - } - .align-content-xxl-stretch { - align-content: stretch !important; - } - .align-self-xxl-auto { - align-self: auto !important; - } - .align-self-xxl-start { - align-self: flex-start !important; - } - .align-self-xxl-end { - align-self: flex-end !important; - } - .align-self-xxl-center { - align-self: center !important; - } - .align-self-xxl-baseline { - align-self: baseline !important; - } - .align-self-xxl-stretch { - align-self: stretch !important; - } - .order-xxl-first { - order: -1 !important; - } - .order-xxl-0 { - order: 0 !important; - } - .order-xxl-1 { - order: 1 !important; - } - .order-xxl-2 { - order: 2 !important; - } - .order-xxl-3 { - order: 3 !important; - } - .order-xxl-4 { - order: 4 !important; - } - .order-xxl-5 { - order: 5 !important; - } - .order-xxl-last { - order: 6 !important; - } - .m-xxl-0 { - margin: 0 !important; - } - .m-xxl-1 { - margin: 0.25rem !important; - } - .m-xxl-2 { - margin: 0.5rem !important; - } - .m-xxl-3 { - margin: 1rem !important; - } - .m-xxl-4 { - margin: 1.5rem !important; - } - .m-xxl-5 { - margin: 3rem !important; - } - .m-xxl-auto { - margin: auto !important; - } - .mx-xxl-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-xxl-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-xxl-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-xxl-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-xxl-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-xxl-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-xxl-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xxl-0 { - margin-top: 0 !important; - } - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - .mt-xxl-3 { - margin-top: 1rem !important; - } - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - .mt-xxl-5 { - margin-top: 3rem !important; - } - .mt-xxl-auto { - margin-top: auto !important; - } - .me-xxl-0 { - margin-left: 0 !important; - } - .me-xxl-1 { - margin-left: 0.25rem !important; - } - .me-xxl-2 { - margin-left: 0.5rem !important; - } - .me-xxl-3 { - margin-left: 1rem !important; - } - .me-xxl-4 { - margin-left: 1.5rem !important; - } - .me-xxl-5 { - margin-left: 3rem !important; - } - .me-xxl-auto { - margin-left: auto !important; - } - .mb-xxl-0 { - margin-bottom: 0 !important; - } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - .mb-xxl-auto { - margin-bottom: auto !important; - } - .ms-xxl-0 { - margin-right: 0 !important; - } - .ms-xxl-1 { - margin-right: 0.25rem !important; - } - .ms-xxl-2 { - margin-right: 0.5rem !important; - } - .ms-xxl-3 { - margin-right: 1rem !important; - } - .ms-xxl-4 { - margin-right: 1.5rem !important; - } - .ms-xxl-5 { - margin-right: 3rem !important; - } - .ms-xxl-auto { - margin-right: auto !important; - } - .p-xxl-0 { - padding: 0 !important; - } - .p-xxl-1 { - padding: 0.25rem !important; - } - .p-xxl-2 { - padding: 0.5rem !important; - } - .p-xxl-3 { - padding: 1rem !important; - } - .p-xxl-4 { - padding: 1.5rem !important; - } - .p-xxl-5 { - padding: 3rem !important; - } - .px-xxl-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-xxl-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-xxl-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-xxl-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-xxl-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-xxl-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xxl-0 { - padding-top: 0 !important; - } - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - .pt-xxl-3 { - padding-top: 1rem !important; - } - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - .pt-xxl-5 { - padding-top: 3rem !important; - } - .pe-xxl-0 { - padding-left: 0 !important; - } - .pe-xxl-1 { - padding-left: 0.25rem !important; - } - .pe-xxl-2 { - padding-left: 0.5rem !important; - } - .pe-xxl-3 { - padding-left: 1rem !important; - } - .pe-xxl-4 { - padding-left: 1.5rem !important; - } - .pe-xxl-5 { - padding-left: 3rem !important; - } - .pb-xxl-0 { - padding-bottom: 0 !important; - } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - .ps-xxl-0 { - padding-right: 0 !important; - } - .ps-xxl-1 { - padding-right: 0.25rem !important; - } - .ps-xxl-2 { - padding-right: 0.5rem !important; - } - .ps-xxl-3 { - padding-right: 1rem !important; - } - .ps-xxl-4 { - padding-right: 1.5rem !important; - } - .ps-xxl-5 { - padding-right: 3rem !important; - } -} -@media print { - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-grid { - display: grid !important; - } - .d-print-inline-grid { - display: inline-grid !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: flex !important; - } - .d-print-inline-flex { - display: inline-flex !important; - } - .d-print-none { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap-grid.rtl.css.map */ \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.css.map b/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.css.map deleted file mode 100644 index 8df43cfcc3..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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EE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EA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;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,0BAAA;ALsjDZ;;AK7jDQ;EAOI,gCAAA;AL0jDZ;;AKjkDQ;EAOI,+BAAA;AL8jDZ;;AKrkDQ;EAOI,6BAAA;ALkkDZ;;AKzkDQ;EAOI,+BAAA;ALskDZ;;AK7kDQ;EAOI,6BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,2BAAA;ALsmDZ;;AK7mDQ;EAOI,iCAAA;AL0mDZ;;AKjnDQ;EAOI,gCAAA;AL8mDZ;;AKrnDQ;EAOI,8BAAA;ALknDZ;;AKznDQ;EAOI,gCAAA;ALsnDZ;;AK7nDQ;EAOI,8BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA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nEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,yBAAA;IAAA,0BAAA;ELswEV;EK7wEM;IAO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EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;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AAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,2BAAA;ELw9FV;EK/9FM;IAOI,iCAAA;EL29FV;EKl+FM;IAOI,gCAAA;EL89FV;EKr+FM;IAOI,8BAAA;ELi+FV;EKx+FM;IAOI,gCAAA;ELo+FV;EK3+FM;IAOI,8BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/l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ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,0BAAA;ELm4GV;EK14GM;IAOI,gCAAA;ELs4GV;EK74GM;IAOI,+BAAA;ELy4GV;EKh5GM;IAOI,6BAAA;EL44GV;EKn5GM;IAOI,+BAAA;EL+4GV;EKt5GM;IAOI,6BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,2BAAA;ELu6GV;EK96GM;IAOI,iCAAA;EL06GV;EKj7GM;IAOI,gCAAA;EL66GV;EKp7GM;IAOI,8BAAA;ELg7GV;EKv7GM;IAOI,gCAAA;ELm7GV;EK17GM;IAOI,8BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;I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","file":"bootstrap-grid.rtl.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n// scss-docs-start vr-variables\n$vr-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end vr-variables\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-color: $body-color !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}emphasis-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;\n\n$table-border-factor: .2 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n$btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}secondary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-icon-color: $navbar-dark-color !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n// fusv-disable\n$accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.3.3\n// fusv-enable\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;\n$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n\n@import \"variables-dark\"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.min.css b/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.min.css deleted file mode 100644 index 672cbc2e62..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap Grid v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-left:calc(-.5 * var(--bs-gutter-x));margin-right:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */ \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.min.css.map b/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.min.css.map deleted file mode 100644 index 1c926af57e..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-grid.rtl.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.rtl.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.33333333%;\n}\n\n.offset-2 {\n margin-right: 16.66666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.33333333%;\n}\n\n.offset-5 {\n margin-right: 41.66666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.33333333%;\n}\n\n.offset-8 {\n margin-right: 66.66666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.33333333%;\n}\n\n.offset-11 {\n margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.33333333%;\n }\n .offset-sm-2 {\n margin-right: 16.66666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.33333333%;\n }\n .offset-sm-5 {\n margin-right: 41.66666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.33333333%;\n }\n .offset-sm-8 {\n margin-right: 66.66666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.33333333%;\n }\n .offset-sm-11 {\n margin-right: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.33333333%;\n }\n .offset-md-2 {\n margin-right: 16.66666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.33333333%;\n }\n .offset-md-5 {\n margin-right: 41.66666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.33333333%;\n }\n .offset-md-8 {\n margin-right: 66.66666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.33333333%;\n }\n .offset-md-11 {\n margin-right: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.33333333%;\n }\n .offset-lg-2 {\n margin-right: 16.66666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.33333333%;\n }\n .offset-lg-5 {\n margin-right: 41.66666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.33333333%;\n }\n .offset-lg-8 {\n margin-right: 66.66666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.33333333%;\n }\n .offset-lg-11 {\n margin-right: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xl-11 {\n margin-right: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-right: 0;\n }\n .offset-xxl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-right: 25%;\n }\n .offset-xxl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-right: 50%;\n }\n .offset-xxl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-right: 75%;\n }\n .offset-xxl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-right: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-left: 0 !important;\n }\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n .me-sm-auto {\n margin-left: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n .ms-sm-auto {\n margin-right: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-left: 0 !important;\n }\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n .me-md-3 {\n margin-left: 1rem !important;\n }\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n .me-md-5 {\n margin-left: 3rem !important;\n }\n .me-md-auto {\n margin-left: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-right: 0 !important;\n }\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n .ms-md-auto {\n margin-right: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-left: 0 !important;\n }\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-right: 0 !important;\n }\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-left: 0 !important;\n }\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n .me-lg-auto {\n margin-left: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n .ms-lg-auto {\n margin-right: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-left: 0 !important;\n }\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n .me-xl-auto {\n margin-left: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n .ms-xl-auto {\n margin-right: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n .me-xxl-auto {\n margin-left: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: percentage(divide(1, $count));\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is an invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-reboot.css b/site/public/docs/5.3/dist/css/bootstrap-reboot.css deleted file mode 100644 index 6305410923..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-reboot.css +++ /dev/null @@ -1,597 +0,0 @@ -/*! - * Bootstrap Reboot v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -:root, -[data-bs-theme=light] { - --bs-blue: #0d6efd; - --bs-indigo: #6610f2; - --bs-purple: #6f42c1; - --bs-pink: #d63384; - --bs-red: #dc3545; - --bs-orange: #fd7e14; - --bs-yellow: #ffc107; - --bs-green: #198754; - --bs-teal: #20c997; - --bs-cyan: #0dcaf0; - --bs-black: #000; - --bs-white: #fff; - --bs-gray: #6c757d; - --bs-gray-dark: #343a40; - --bs-gray-100: #f8f9fa; - --bs-gray-200: #e9ecef; - --bs-gray-300: #dee2e6; - --bs-gray-400: #ced4da; - --bs-gray-500: #adb5bd; - --bs-gray-600: #6c757d; - --bs-gray-700: #495057; - --bs-gray-800: #343a40; - --bs-gray-900: #212529; - --bs-primary: #0d6efd; - --bs-secondary: #6c757d; - --bs-success: #198754; - --bs-info: #0dcaf0; - --bs-warning: #ffc107; - --bs-danger: #dc3545; - --bs-light: #f8f9fa; - --bs-dark: #212529; - --bs-primary-rgb: 13, 110, 253; - --bs-secondary-rgb: 108, 117, 125; - --bs-success-rgb: 25, 135, 84; - --bs-info-rgb: 13, 202, 240; - --bs-warning-rgb: 255, 193, 7; - --bs-danger-rgb: 220, 53, 69; - --bs-light-rgb: 248, 249, 250; - --bs-dark-rgb: 33, 37, 41; - --bs-primary-text-emphasis: #052c65; - --bs-secondary-text-emphasis: #2b2f32; - --bs-success-text-emphasis: #0a3622; - --bs-info-text-emphasis: #055160; - --bs-warning-text-emphasis: #664d03; - --bs-danger-text-emphasis: #58151c; - --bs-light-text-emphasis: #495057; - --bs-dark-text-emphasis: #495057; - --bs-primary-bg-subtle: #cfe2ff; - --bs-secondary-bg-subtle: #e2e3e5; - --bs-success-bg-subtle: #d1e7dd; - --bs-info-bg-subtle: #cff4fc; - --bs-warning-bg-subtle: #fff3cd; - --bs-danger-bg-subtle: #f8d7da; - --bs-light-bg-subtle: #fcfcfd; - --bs-dark-bg-subtle: #ced4da; - --bs-primary-border-subtle: #9ec5fe; - --bs-secondary-border-subtle: #c4c8cb; - --bs-success-border-subtle: #a3cfbb; - --bs-info-border-subtle: #9eeaf9; - --bs-warning-border-subtle: #ffe69c; - --bs-danger-border-subtle: #f1aeb5; - --bs-light-border-subtle: #e9ecef; - --bs-dark-border-subtle: #adb5bd; - --bs-white-rgb: 255, 255, 255; - --bs-black-rgb: 0, 0, 0; - --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --bs-body-font-family: var(--bs-font-sans-serif); - --bs-body-font-size: 1rem; - --bs-body-font-weight: 400; - --bs-body-line-height: 1.5; - --bs-body-color: #212529; - --bs-body-color-rgb: 33, 37, 41; - --bs-body-bg: #fff; - --bs-body-bg-rgb: 255, 255, 255; - --bs-emphasis-color: #000; - --bs-emphasis-color-rgb: 0, 0, 0; - --bs-secondary-color: rgba(33, 37, 41, 0.75); - --bs-secondary-color-rgb: 33, 37, 41; - --bs-secondary-bg: #e9ecef; - --bs-secondary-bg-rgb: 233, 236, 239; - --bs-tertiary-color: rgba(33, 37, 41, 0.5); - --bs-tertiary-color-rgb: 33, 37, 41; - --bs-tertiary-bg: #f8f9fa; - --bs-tertiary-bg-rgb: 248, 249, 250; - --bs-heading-color: inherit; - --bs-link-color: #0d6efd; - --bs-link-color-rgb: 13, 110, 253; - --bs-link-decoration: underline; - --bs-link-hover-color: #0a58ca; - --bs-link-hover-color-rgb: 10, 88, 202; - --bs-code-color: #d63384; - --bs-highlight-color: #212529; - --bs-highlight-bg: #fff3cd; - --bs-border-width: 1px; - --bs-border-style: solid; - --bs-border-color: #dee2e6; - --bs-border-color-translucent: rgba(0, 0, 0, 0.175); - --bs-border-radius: 0.375rem; - --bs-border-radius-sm: 0.25rem; - --bs-border-radius-lg: 0.5rem; - --bs-border-radius-xl: 1rem; - --bs-border-radius-xxl: 2rem; - --bs-border-radius-2xl: var(--bs-border-radius-xxl); - --bs-border-radius-pill: 50rem; - --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); - --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); - --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); - --bs-focus-ring-width: 0.25rem; - --bs-focus-ring-opacity: 0.25; - --bs-focus-ring-color: rgba(13, 110, 253, 0.25); - --bs-form-valid-color: #198754; - --bs-form-valid-border-color: #198754; - --bs-form-invalid-color: #dc3545; - --bs-form-invalid-border-color: #dc3545; -} - -[data-bs-theme=dark] { - color-scheme: dark; - --bs-body-color: #dee2e6; - --bs-body-color-rgb: 222, 226, 230; - --bs-body-bg: #212529; - --bs-body-bg-rgb: 33, 37, 41; - --bs-emphasis-color: #fff; - --bs-emphasis-color-rgb: 255, 255, 255; - --bs-secondary-color: rgba(222, 226, 230, 0.75); - --bs-secondary-color-rgb: 222, 226, 230; - --bs-secondary-bg: #343a40; - --bs-secondary-bg-rgb: 52, 58, 64; - --bs-tertiary-color: rgba(222, 226, 230, 0.5); - --bs-tertiary-color-rgb: 222, 226, 230; - --bs-tertiary-bg: #2b3035; - --bs-tertiary-bg-rgb: 43, 48, 53; - --bs-primary-text-emphasis: #6ea8fe; - --bs-secondary-text-emphasis: #a7acb1; - --bs-success-text-emphasis: #75b798; - --bs-info-text-emphasis: #6edff6; - --bs-warning-text-emphasis: #ffda6a; - --bs-danger-text-emphasis: #ea868f; - --bs-light-text-emphasis: #f8f9fa; - --bs-dark-text-emphasis: #dee2e6; - --bs-primary-bg-subtle: #031633; - --bs-secondary-bg-subtle: #161719; - --bs-success-bg-subtle: #051b11; - --bs-info-bg-subtle: #032830; - --bs-warning-bg-subtle: #332701; - --bs-danger-bg-subtle: #2c0b0e; - --bs-light-bg-subtle: #343a40; - --bs-dark-bg-subtle: #1a1d20; - --bs-primary-border-subtle: #084298; - --bs-secondary-border-subtle: #41464b; - --bs-success-border-subtle: #0f5132; - --bs-info-border-subtle: #087990; - --bs-warning-border-subtle: #997404; - --bs-danger-border-subtle: #842029; - --bs-light-border-subtle: #495057; - --bs-dark-border-subtle: #343a40; - --bs-heading-color: inherit; - --bs-link-color: #6ea8fe; - --bs-link-hover-color: #8bb9fe; - --bs-link-color-rgb: 110, 168, 254; - --bs-link-hover-color-rgb: 139, 185, 254; - --bs-code-color: #e685b5; - --bs-highlight-color: #dee2e6; - --bs-highlight-bg: #664d03; - --bs-border-color: #495057; - --bs-border-color-translucent: rgba(255, 255, 255, 0.15); - --bs-form-valid-color: #75b798; - --bs-form-valid-border-color: #75b798; - --bs-form-invalid-color: #ea868f; - --bs-form-invalid-border-color: #ea868f; -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -@media (prefers-reduced-motion: no-preference) { - :root { - scroll-behavior: smooth; - } -} - -body { - margin: 0; - font-family: var(--bs-body-font-family); - font-size: var(--bs-body-font-size); - font-weight: var(--bs-body-font-weight); - line-height: var(--bs-body-line-height); - color: var(--bs-body-color); - text-align: var(--bs-body-text-align); - background-color: var(--bs-body-bg); - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -hr { - margin: 1rem 0; - color: inherit; - border: 0; - border-top: var(--bs-border-width) solid; - opacity: 0.25; -} - -h6, h5, h4, h3, h2, h1 { - margin-top: 0; - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; - color: var(--bs-heading-color); -} - -h1 { - font-size: calc(1.375rem + 1.5vw); -} -@media (min-width: 1200px) { - h1 { - font-size: 2.5rem; - } -} - -h2 { - font-size: calc(1.325rem + 0.9vw); -} -@media (min-width: 1200px) { - h2 { - font-size: 2rem; - } -} - -h3 { - font-size: calc(1.3rem + 0.6vw); -} -@media (min-width: 1200px) { - h3 { - font-size: 1.75rem; - } -} - -h4 { - font-size: calc(1.275rem + 0.3vw); -} -@media (min-width: 1200px) { - h4 { - font-size: 1.5rem; - } -} - -h5 { - font-size: 1.25rem; -} - -h6 { - font-size: 1rem; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -abbr[title] { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - cursor: help; - -webkit-text-decoration-skip-ink: none; - text-decoration-skip-ink: none; -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; -} - -ol, -ul { - padding-left: 2rem; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 700; -} - -dd { - margin-bottom: 0.5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small { - font-size: 0.875em; -} - -mark { - padding: 0.1875em; - color: var(--bs-highlight-color); - background-color: var(--bs-highlight-bg); -} - -sub, -sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -a { - color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); - text-decoration: underline; -} -a:hover { - --bs-link-color-rgb: var(--bs-link-hover-color-rgb); -} - -a:not([href]):not([class]), a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none; -} - -pre, -code, -kbd, -samp { - font-family: var(--bs-font-monospace); - font-size: 1em; -} - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 0.875em; -} -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -code { - font-size: 0.875em; - color: var(--bs-code-color); - word-wrap: break-word; -} -a > code { - color: inherit; -} - -kbd { - padding: 0.1875rem 0.375rem; - font-size: 0.875em; - color: var(--bs-body-bg); - background-color: var(--bs-body-color); - border-radius: 0.25rem; -} -kbd kbd { - padding: 0; - font-size: 1em; -} - -figure { - margin: 0 0 1rem; -} - -img, -svg { - vertical-align: middle; -} - -table { - caption-side: bottom; - border-collapse: collapse; -} - -caption { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: var(--bs-secondary-color); - text-align: left; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -label { - display: inline-block; -} - -button { - border-radius: 0; -} - -button:focus:not(:focus-visible) { - outline: 0; -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -select { - text-transform: none; -} - -[role=button] { - cursor: pointer; -} - -select { - word-wrap: normal; -} -select:disabled { - opacity: 1; -} - -[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { - display: none !important; -} - -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} -button:not(:disabled), -[type=button]:not(:disabled), -[type=reset]:not(:disabled), -[type=submit]:not(:disabled) { - cursor: pointer; -} - -::-moz-focus-inner { - padding: 0; - border-style: none; -} - -textarea { - resize: vertical; -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} - -legend { - float: left; - width: 100%; - padding: 0; - margin-bottom: 0.5rem; - font-size: calc(1.275rem + 0.3vw); - line-height: inherit; -} -@media (min-width: 1200px) { - legend { - font-size: 1.5rem; - } -} -legend + * { - clear: left; -} - -::-webkit-datetime-edit-fields-wrapper, -::-webkit-datetime-edit-text, -::-webkit-datetime-edit-minute, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-year-field { - padding: 0; -} - -::-webkit-inner-spin-button { - height: auto; -} - -[type=search] { - -webkit-appearance: textfield; - outline-offset: -2px; -} - -/* rtl:raw: -[type="tel"], -[type="url"], -[type="email"], -[type="number"] { - direction: ltr; -} -*/ -::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-color-swatch-wrapper { - padding: 0; -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} - -::file-selector-button { - font: inherit; - -webkit-appearance: button; -} - -output { - display: inline-block; -} - -iframe { - border: 0; -} - -summary { - display: list-item; - cursor: pointer; -} - -progress { - vertical-align: baseline; -} - -[hidden] { - display: none !important; -} - -/*# sourceMappingURL=bootstrap-reboot.css.map */ \ No newline at end of file diff --git a/site/public/docs/5.3/dist/css/bootstrap-reboot.css.map b/site/public/docs/5.3/dist/css/bootstrap-reboot.css.map deleted file mode 100644 index 5fe522b6d7..0000000000 --- a/site/public/docs/5.3/dist/css/bootstrap-reboot.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, h5, h4, h3, h2, h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1 {\n font-size: 2.5rem;\n }\n}\n\nh2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2 {\n font-size: 2rem;\n }\n}\n\nh3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3 {\n font-size: 1.75rem;\n }\n}\n\nh4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4 {\n font-size: 1.5rem;\n }\n}\n\nh5 {\n font-size: 1.25rem;\n}\n\nh6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 0.875em;\n}\n\nmark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`