From 06196f90d4a139451ea85f13da20431db5fda36e Mon Sep 17 00:00:00 2001 From: miray-mustafov Date: Thu, 9 May 2024 17:18:24 +0300 Subject: [PATCH 1/5] setup new branch --- server/main.py | 23 +++++++++++++++++++++ server/static/styles.css | 3 +++ server/templates/categories_demo.html | 29 +++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 server/static/styles.css create mode 100644 server/templates/categories_demo.html diff --git a/server/main.py b/server/main.py index 6a111c5..8c679bc 100644 --- a/server/main.py +++ b/server/main.py @@ -8,6 +8,10 @@ from routers.votes import votes_router from routers.messages import messages_router +from fastapi.responses import HTMLResponse +from fastapi.staticfiles import StaticFiles +from fastapi.templating import Jinja2Templates + app = FastAPI() app.include_router(users_router) app.include_router(categories_router) @@ -17,5 +21,24 @@ app.include_router(votes_router) app.include_router(messages_router) +app.mount("/static", StaticFiles(directory="static"), name="static") +templates = Jinja2Templates(directory="templates") + + +# todo visit http://127.0.0.1:8000/categories_demo +@app.get("/categories_demo", + response_class=HTMLResponse) # response_class is for the /docs to know that the response will be HTML +async def categories_demo_view( + request: Request, + search: str | None = None +): + from services.categories_services import get_all + categories = get_all(search=search) + + return templates.TemplateResponse( + request=request, name="categories_demo.html", context={'categories': categories} + ) + + if __name__ == '__main__': uvicorn.run('main:app', host='127.0.0.1', port=8000) diff --git a/server/static/styles.css b/server/static/styles.css new file mode 100644 index 0000000..03d0aca --- /dev/null +++ b/server/static/styles.css @@ -0,0 +1,3 @@ +h1 { + color: blue; +} diff --git a/server/templates/categories_demo.html b/server/templates/categories_demo.html new file mode 100644 index 0000000..6bc40b8 --- /dev/null +++ b/server/templates/categories_demo.html @@ -0,0 +1,29 @@ + + + Categories + + + + +

+

Categories

+

+ + + + + + + + {% for cat in categories %} + + + + + + + {% endfor %} +
idnamelockedprivate
{{cat.category_id}}{{cat.name}}{{cat.is_locked}}{{cat.is_private}}
+ + \ No newline at end of file From c00bb7d73a064924cf2710374fd2a10ca861f6e0 Mon Sep 17 00:00:00 2001 From: miray-mustafov Date: Fri, 10 May 2024 11:17:33 +0300 Subject: [PATCH 2/5] not imp --- server/main.py | 22 +- server/routers/categories.py | 29 +- server/routers/main_router.py | 3 + server/routers/topics.py | 60 +- server/static/css/all-styles.css | 4 + server/static/css/body-nav-foot.css | 52 + server/static/css/bootstrap.css | 12473 ++++++++++++++++ server/static/css/buttons.css | 29 + server/static/css/rest.css | 116 + server/static/images/404img.png | Bin 0 -> 23527 bytes server/static/images/404imglg.png | Bin 0 -> 28999 bytes server/static/images/edit-pen-icon-6.jpg | Bin 0 -> 16759 bytes server/static/images/favicon-32x32.png | Bin 0 -> 2635 bytes server/static/images/icon-remove-22.jpg | Bin 0 -> 13917 bytes server/static/images/no_posts.png | Bin 0 -> 70584 bytes server/static/images/search.png | Bin 0 -> 10757 bytes server/static/images/sg-logo.svg | 34 + server/static/images/user.png | Bin 0 -> 11096 bytes server/static/js/bootstrap.bundle.js | 7075 +++++++++ server/static/styles.css | 3 - server/templates/404.html | 14 + server/templates/base.html | 97 + server/templates/base2.html | 18 + server/templates/categories_demo.html | 27 +- server/templates/common/home-page.html | 102 + .../common/list-categorized-items.html | 74 + .../common/list-favourite-items.html | 68 + .../templates/common/list-searched-items.html | 74 + server/templates/home_page.html | 5 + server/templates/items/item-add.html | 73 + server/templates/items/item-delete.html | 15 + server/templates/items/item-details.html | 124 + server/templates/items/item-edit.html | 72 + .../templates/partials/category-side-bar.html | 19 + server/templates/partials/heart-empty.html | 22 + server/templates/partials/heart-red.html | 15 + .../templates/partials/page-navigation.html | 19 + server/templates/partials/search-form.html | 21 + server/templates/topics_demo.html | 21 + server/templates/users/user-delete.html | 15 + server/templates/users/user-details.html | 40 + server/templates/users/user-edit.html | 47 + server/templates/users/user-login.html | 19 + server/templates/users/user-register.html | 36 + 44 files changed, 20869 insertions(+), 68 deletions(-) create mode 100644 server/routers/main_router.py create mode 100644 server/static/css/all-styles.css create mode 100644 server/static/css/body-nav-foot.css create mode 100644 server/static/css/bootstrap.css create mode 100644 server/static/css/buttons.css create mode 100644 server/static/css/rest.css create mode 100644 server/static/images/404img.png create mode 100644 server/static/images/404imglg.png create mode 100644 server/static/images/edit-pen-icon-6.jpg create mode 100644 server/static/images/favicon-32x32.png create mode 100644 server/static/images/icon-remove-22.jpg create mode 100644 server/static/images/no_posts.png create mode 100644 server/static/images/search.png create mode 100644 server/static/images/sg-logo.svg create mode 100644 server/static/images/user.png create mode 100644 server/static/js/bootstrap.bundle.js delete mode 100644 server/static/styles.css create mode 100644 server/templates/404.html create mode 100644 server/templates/base.html create mode 100644 server/templates/base2.html create mode 100644 server/templates/common/home-page.html create mode 100644 server/templates/common/list-categorized-items.html create mode 100644 server/templates/common/list-favourite-items.html create mode 100644 server/templates/common/list-searched-items.html create mode 100644 server/templates/home_page.html create mode 100644 server/templates/items/item-add.html create mode 100644 server/templates/items/item-delete.html create mode 100644 server/templates/items/item-details.html create mode 100644 server/templates/items/item-edit.html create mode 100644 server/templates/partials/category-side-bar.html create mode 100644 server/templates/partials/heart-empty.html create mode 100644 server/templates/partials/heart-red.html create mode 100644 server/templates/partials/page-navigation.html create mode 100644 server/templates/partials/search-form.html create mode 100644 server/templates/topics_demo.html create mode 100644 server/templates/users/user-delete.html create mode 100644 server/templates/users/user-details.html create mode 100644 server/templates/users/user-edit.html create mode 100644 server/templates/users/user-login.html create mode 100644 server/templates/users/user-register.html diff --git a/server/main.py b/server/main.py index 8c679bc..d122d8c 100644 --- a/server/main.py +++ b/server/main.py @@ -7,10 +7,8 @@ from routers.replies import replies_router from routers.votes import votes_router from routers.messages import messages_router - from fastapi.responses import HTMLResponse -from fastapi.staticfiles import StaticFiles -from fastapi.templating import Jinja2Templates +from routers.main_router import templates app = FastAPI() app.include_router(users_router) @@ -21,24 +19,20 @@ app.include_router(votes_router) app.include_router(messages_router) +from fastapi.staticfiles import StaticFiles + app.mount("/static", StaticFiles(directory="static"), name="static") -templates = Jinja2Templates(directory="templates") -# todo visit http://127.0.0.1:8000/categories_demo -@app.get("/categories_demo", - response_class=HTMLResponse) # response_class is for the /docs to know that the response will be HTML -async def categories_demo_view( +@app.get("/", response_class=HTMLResponse, + name='home_page_view') # response_class is for the /docs to know that the response will be HTML +def home_page_view( request: Request, - search: str | None = None ): - from services.categories_services import get_all - categories = get_all(search=search) - return templates.TemplateResponse( - request=request, name="categories_demo.html", context={'categories': categories} + request=request, name="home_page.html" ) if __name__ == '__main__': - uvicorn.run('main:app', host='127.0.0.1', port=8000) + uvicorn.run('main:app', host='127.0.0.1', port=8001) diff --git a/server/routers/categories.py b/server/routers/categories.py index 654512c..324da0a 100644 --- a/server/routers/categories.py +++ b/server/routers/categories.py @@ -5,16 +5,31 @@ from data.models.user import AnonymousUser from data.models.category import Category, CategoryTopicsPaginate from services import categories_services, topics_services -from common.utils import get_pagination_info, create_links, Page +from common.utils import Page +from routers.main_router import templates +from fastapi.responses import HTMLResponse categories_router = APIRouter(prefix='/categories', tags=['categories']) -@categories_router.get('/') -def get_all_categories( - search: str | None = None) -> list[Category]: - categories = categories_services.get_all(search=search) - return categories +@categories_router.get("/", + response_class=HTMLResponse, + name='categories_demo_view', ) +def categories_demo_view( + request: Request, +): + categories = categories_services.get_all() + + return templates.TemplateResponse( + request=request, name="categories_demo.html", context={'categories': categories} + ) + + +# @categories_router.get('/') +# def get_all_categories( +# search: str | None = None) -> list[Category]: +# categories = categories_services.get_all(search=search) +# return categories @categories_router.get('/{category_id}') @@ -49,7 +64,7 @@ def get_category_by_id( status_code=SC.Forbidden, detail=f'You do not have permission to access this private category' ) - + if sort and sort.lower() not in ['asc', 'desc']: raise HTTPException( status_code=SC.BadRequest, diff --git a/server/routers/main_router.py b/server/routers/main_router.py new file mode 100644 index 0000000..6176130 --- /dev/null +++ b/server/routers/main_router.py @@ -0,0 +1,3 @@ +from fastapi.templating import Jinja2Templates + +templates = Jinja2Templates(directory="templates") diff --git a/server/routers/topics.py b/server/routers/topics.py index 9d91384..190af35 100644 --- a/server/routers/topics.py +++ b/server/routers/topics.py @@ -7,10 +7,13 @@ from common.utils import Page from starlette.requests import Request +from routers.main_router import templates +from fastapi.responses import HTMLResponse + topics_router = APIRouter(prefix='/topics', tags=['topics']) -@topics_router.get('/') +@topics_router.get('/', response_class=HTMLResponse, name='get_all_topics') def get_all_topics( request: Request, page: int = Query(1, ge=1, description="Page number"), @@ -20,14 +23,13 @@ def get_all_topics( search: str | None = None, username: str | None = None, category: str | None = None, - status: str | None = None + status: str | None = None, ): - """ - User can view all Topics - Topics can be sorted by: - topic_id - - title + - title - user_id of the author - status (open or locked) - best_reply_id @@ -71,34 +73,42 @@ def get_all_topics( ) topics, pagination_info, links = topics_services.get_topics_paginate_links( - request=request, page=page, size=size, sort=sort, sort_by=sort_by, - search=search, username=username, category=category, status=status + request=request, page=page, size=size, sort=sort, sort_by=sort_by, + search=search, username=username, category=category, status=status ) - - if not topics: - return [] - return TopicsPaginate( - topics=topics, - pagination_info=pagination_info, - links=links + if not topics: + context = {'topics': None} + else: + context = { + 'topics ': topics, + 'pagination_info ': pagination_info, + 'links ': links, + + } + # context = TopicsPaginate( + # topics=topics, + # pagination_info=pagination_info, + # links=links + # ) + return templates.TemplateResponse( + request=request, name="topics_demo.html", context=context ) @topics_router.get('/{topic_id}') def get_topic_by_id( - topic_id: int, + topic_id: int, current_user: OptionalUser, request: Request, page: int = Query(1, ge=1, description="Page number"), size: int = Query(Page.SIZE, ge=1, le=15, description="Page size") ) -> TopicRepliesPaginate: - """ - A guest can view a Topic with all of its Replies, if the Topic belongs to a public Category - If the Category is private, authentication is required """ - + topic = topics_services.get_by_id(topic_id) if not topic: @@ -108,23 +118,24 @@ def get_topic_by_id( ) category = categories_services.get_by_id(topic.category_id) - + if category.is_private: - + if isinstance(current_user, AnonymousUser): raise HTTPException( status_code=SC.Unauthorized, detail='Login to view topics in private categories' - ) + ) if not current_user.is_admin and not categories_services.has_access_to_private_category(current_user.user_id, - category.category_id): + category.category_id): raise HTTPException( status_code=SC.Forbidden, detail=f'You do not have permission to access this private category' ) - - replies, pagination_info, links = replies_services.get_all(topic_id=topic.topic_id, request=request, page=page, size=size) + + replies, pagination_info, links = replies_services.get_all(topic_id=topic.topic_id, request=request, page=page, + size=size) result = TopicRepliesPaginate( topic=topic, replies=replies, pagination_info=pagination_info, links=links) @@ -134,11 +145,10 @@ def get_topic_by_id( @topics_router.post('/') def create_topic(new_topic: TopicCreate, current_user: UserAuthDep): - """ - User can create a Topic, if the User has write access to the designated Category """ - + category = categories_services.get_by_id(new_topic.category_id) if not category: @@ -162,7 +172,6 @@ def create_topic(new_topic: TopicCreate, current_user: UserAuthDep): @topics_router.patch('/{topic_id}/bestReply') def update_topic_best_reply(topic_id: int, current_user: UserAuthDep, topic_update: TopicUpdate = Body(...)): - """ - User can choose a best Reply to a Topic, if the User owns the Topic """ @@ -188,7 +197,6 @@ def update_topic_best_reply(topic_id: int, current_user: UserAuthDep, topic_upda @topics_router.patch('/{topic_id}/locking') def switch_topic_locking(topic_id: int, existing_user: UserAuthDep): - """ - User can lock or unlock a Topic, if the User owns the Topic """ diff --git a/server/static/css/all-styles.css b/server/static/css/all-styles.css new file mode 100644 index 0000000..183bfea --- /dev/null +++ b/server/static/css/all-styles.css @@ -0,0 +1,4 @@ +@import './bootstrap.css'; +@import './body-nav-foot.css'; +@import './buttons.css'; +@import './rest.css'; \ No newline at end of file diff --git a/server/static/css/body-nav-foot.css b/server/static/css/body-nav-foot.css new file mode 100644 index 0000000..7eadfa9 --- /dev/null +++ b/server/static/css/body-nav-foot.css @@ -0,0 +1,52 @@ +body { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +main { + margin-top: 1rem; + margin-bottom: 1rem; +} + +.navbar-brand { + color: var(--my_silver); + /*padding-right: 1rem;*/ +} + +.navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(245,245,222)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); +} + +.nav-link { + color: var(--my_silver); + border-radius: 3px; +} + +.nav-link:hover { + color: black; + background-color: var(--my_silver); + +} + +.nav-item { + color: var(--my_silver); + font-weight: bold; +} + +footer { + background: black; + width: 100%; + height: 30px; /* Height of the footer */ + color: #C9C9C9; + margin-top: auto; +} + +footer span { + margin-left: 10px; + margin-right: 10px; +} + +.welcome { + color: var(--my_silver); +} \ No newline at end of file diff --git a/server/static/css/bootstrap.css b/server/static/css/bootstrap.css new file mode 100644 index 0000000..afc427a --- /dev/null +++ b/server/static/css/bootstrap.css @@ -0,0 +1,12473 @@ +@charset "UTF-8"; +/*! + * Bootstrap v5.2.3 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root { + /* My vars start*/ + --my_silver: #C9C9C9; + --my_body_color: #F2F4F5; + --my_color_markmine: #BBFDAD; + /* My vars finish*/ + + --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-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 255, 255, 255; + --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-bg: #fff; + --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-2xl: 2rem; + --bs-border-radius-pill: 50rem; + --bs-link-color: #C9C9C9; + --bs-link-hover-color: #0a58ca; + --bs-code-color: #d63384; + --bs-highlight-bg: #fff3cd; +} + +*, +*::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: 1px solid; + opacity: 0.25; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; +} + +h1, .h1 { + font-size: calc(1.375rem + 1.5vw); +} + +@media (min-width: 1200px) { + h1, .h1 { + font-size: 2.5rem; + } +} + +h2, .h2 { + font-size: calc(1.325rem + 0.9vw); +} + +@media (min-width: 1200px) { + h2, .h2 { + font-size: 2rem; + } +} + +h3, .h3 { + font-size: calc(1.3rem + 0.6vw); +} + +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.75rem; + } +} + +h4, .h4 { + font-size: calc(1.275rem + 0.3vw); +} + +@media (min-width: 1200px) { + h4, .h4 { + font-size: 1.5rem; + } +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .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, .small { + font-size: 0.875em; +} + +mark, .mark { + padding: 0.1875em; + 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: var(--bs-link-color); + text-decoration: underline; +} + +a:hover { + color: var(--bs-link-hover-color); +} + +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: #6c757d; + 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] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* 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; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} + +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} + +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} + +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} + +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} + +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} + +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} + +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; +} + +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid var(--bs-border-color); + border-radius: 0.375rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 0.875em; + color: #6c757d; +} + +.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; + } +} + +.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 > * { + 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.3333333333%; +} + +.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.6666666667%; +} + +.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.3333333333%; + } + + .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.6666666667%; + } + + .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.3333333333%; + } + + .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.6666666667%; + } + + .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.3333333333%; + } + + .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.6666666667%; + } + + .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.3333333333%; + } + + .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.6666666667%; + } + + .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.3333333333%; + } + + .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.6666666667%; + } + + .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; + } +} + +.table { + --bs-table-color: var(--bs-body-color); + --bs-table-bg: transparent; + --bs-table-border-color: var(--bs-border-color); + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-body-color); + --bs-table-striped-bg: rgba(0, 0, 0, 0.05); + --bs-table-active-color: var(--bs-body-color); + --bs-table-active-bg: rgba(0, 0, 0, 0.1); + --bs-table-hover-color: var(--bs-body-color); + --bs-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + color: var(--bs-table-color); + vertical-align: top; + border-color: var(--bs-table-border-color); +} + +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + background-color: var(--bs-table-bg); + border-bottom-width: 1px; + box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); +} + +.table > tbody { + vertical-align: inherit; +} + +.table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: 2px solid currentcolor; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > * { + border-width: 1px 0; +} + +.table-bordered > :not(caption) > * > * { + border-width: 0 1px; +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} + +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-active { + --bs-table-accent-bg: var(--bs-table-active-bg); + color: var(--bs-table-active-color); +} + +.table-hover > tbody > tr:hover > * { + --bs-table-accent-bg: var(--bs-table-hover-bg); + color: var(--bs-table-hover-color); +} + +.table-primary { + --bs-table-color: #000; + --bs-table-bg: #cfe2ff; + --bs-table-border-color: #bacbe6; + --bs-table-striped-bg: #c5d7f2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bacbe6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfd1ec; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-secondary { + --bs-table-color: #000; + --bs-table-bg: #e2e3e5; + --bs-table-border-color: #cbccce; + --bs-table-striped-bg: #d7d8da; + --bs-table-striped-color: #000; + --bs-table-active-bg: #cbccce; + --bs-table-active-color: #000; + --bs-table-hover-bg: #d1d2d4; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-success { + --bs-table-color: #000; + --bs-table-bg: #d1e7dd; + --bs-table-border-color: #bcd0c7; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-info { + --bs-table-color: #000; + --bs-table-bg: #cff4fc; + --bs-table-border-color: #badce3; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-warning { + --bs-table-color: #000; + --bs-table-bg: #fff3cd; + --bs-table-border-color: #e6dbb9; + --bs-table-striped-bg: #f2e7c3; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dbb9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece1be; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-danger { + --bs-table-color: #000; + --bs-table-bg: #f8d7da; + --bs-table-border-color: #dfc2c4; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-light { + --bs-table-color: #000; + --bs-table-bg: #f8f9fa; + --bs-table-border-color: #dfe0e1; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-dark { + --bs-table-color: #fff; + --bs-table-bg: #212529; + --bs-table-border-color: #373b3e; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} + +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} + +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} + +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} + +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} + +.form-label { + margin-bottom: 0.5rem; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: #6c757d; +} + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.375rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} + +.form-control[type=file] { + overflow: hidden; +} + +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} + +.form-control:focus { + color: #212529; + background-color: #fff; + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} + +.form-control::-webkit-date-and-time-value { + height: 1.5em; +} + +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:disabled { + background-color: #e9ecef; + opacity: 1; +} + +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + + .form-control::file-selector-button { + transition: none; + } +} + +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: #dde0e3; +} + +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: #dde0e3; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-plaintext:focus { + outline: 0; +} + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.25rem; +} + +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.5rem; +} + +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} + +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} + +textarea.form-control { + min-height: calc(1.5em + 0.75rem + 2px); +} + +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); +} + +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); +} + +.form-control-color { + width: 3rem; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem; +} + +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} + +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: 0.375rem; +} + +.form-control-color::-webkit-color-swatch { + border-radius: 0.375rem; +} + +.form-control-color.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); +} + +.form-control-color.form-control-lg { + height: calc(1.5em + 1rem + 2px); +} + +.form-select { + display: block; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + -moz-padding-start: calc(0.75rem - 3px); + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: 1px solid #ced4da; + border-radius: 0.375rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} + +.form-select:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} + +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} + +.form-select:disabled { + background-color: #e9ecef; +} + +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #212529; +} + +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: 0.25rem; +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: 0.5rem; +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} + +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} + +.form-check-reverse { + padding-right: 1.5em; + padding-left: 0; + text-align: right; +} + +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.5em; + margin-left: 0; +} + +.form-check-input { + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + background-color: #fff; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1px solid rgba(0, 0, 0, 0.25); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} + +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} + +.form-check-input[type=radio] { + border-radius: 50%; +} + +.form-check-input:active { + filter: brightness(90%); +} + +.form-check-input:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} + +.form-check-input:checked { + background-color: #0d6efd; + border-color: #0d6efd; +} + +.form-check-input:checked[type=checkbox] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); +} + +.form-check-input:checked[type=radio] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} + +.form-check-input[type=checkbox]:indeterminate { + background-color: #0d6efd; + border-color: #0d6efd; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} + +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} + +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.5; +} + +.form-switch { + padding-left: 2.5em; +} + +.form-switch .form-check-input { + width: 2em; + margin-left: -2.5em; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} + +.form-switch .form-check-input:focus { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e"); +} + +.form-switch .form-check-input:checked { + background-position: right center; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.form-switch.form-check-reverse { + padding-right: 2.5em; + padding-left: 0; +} + +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.form-range:focus { + outline: 0; +} + +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} + +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} + +.form-range::-moz-focus-outer { + border: 0; +} + +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} + +.form-range::-webkit-slider-thumb:active { + background-color: #b6d4fe; +} + +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} + +.form-range::-moz-range-thumb:active { + background-color: #b6d4fe; +} + +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.form-range:disabled { + pointer-events: none; +} + +.form-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} + +.form-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} + +.form-floating { + position: relative; +} + +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + 2px); + line-height: 1.25; +} + +.form-floating > label { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 1rem 0.75rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: 1px solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} + +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 0.75rem; +} + +.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder { + color: transparent; +} + +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} + +.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} + +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} + +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} + +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} + +/*.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {*/ +/* opacity: 0.65;*/ +/* transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);*/ +/*}*/ + +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} + +.form-floating > .form-control:-webkit-autofill ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} + +.form-floating > .form-control-plaintext ~ label { + border-width: 1px 0; +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} + +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} + +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} + +.input-group .btn { + position: relative; + z-index: 2; +} + +.input-group .btn:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.375rem; +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.5rem; +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.25rem; +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #198754; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(25, 135, 84, 0.9); + border-radius: 0.375rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #198754; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' 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.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: #198754; +} + +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' 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.1z'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: #198754; +} + +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: #198754; +} + +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #198754; +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #dc3545; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(220, 53, 69, 0.9); + border-radius: 0.375rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #dc3545; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: #dc3545; +} + +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: #dc3545; +} + +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: #dc3545; +} + +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --bs-btn-padding-x: 0.75rem; + --bs-btn-padding-y: 0.375rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 1rem; + --bs-btn-font-weight: 400; + --bs-btn-line-height: 1.5; + --bs-btn-color: #212529; + --bs-btn-bg: transparent; + --bs-btn-border-width: 1px; + --bs-btn-border-color: transparent; + --bs-btn-border-radius: 0.375rem; + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} + +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} + +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} + +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} + +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} + +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); +} + +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--bs-btn-focus-box-shadow); +} + +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); +} + +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0b5ed7; + --bs-btn-hover-border-color: #0a58ca; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0a58ca; + --bs-btn-active-border-color: #0a53be; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0d6efd; + --bs-btn-disabled-border-color: #0d6efd; +} + +.btn-secondary { + --bs-btn-color: #fff; + --bs-btn-bg: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5c636a; + --bs-btn-hover-border-color: #565e64; + --bs-btn-focus-shadow-rgb: 130, 138, 145; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #565e64; + --bs-btn-active-border-color: #51585e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6c757d; + --bs-btn-disabled-border-color: #6c757d; +} + +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #157347; + --bs-btn-hover-border-color: #146c43; + --bs-btn-focus-shadow-rgb: 60, 153, 110; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #146c43; + --bs-btn-active-border-color: #13653f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #198754; + --bs-btn-disabled-border-color: #198754; +} + +.btn-info { + --bs-btn-color: #000; + --bs-btn-bg: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #31d2f2; + --bs-btn-hover-border-color: #25cff2; + --bs-btn-focus-shadow-rgb: 11, 172, 204; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #3dd5f3; + --bs-btn-active-border-color: #25cff2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #0dcaf0; + --bs-btn-disabled-border-color: #0dcaf0; +} + +.btn-warning { + --bs-btn-color: #000; + --bs-btn-bg: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffca2c; + --bs-btn-hover-border-color: #ffc720; + --bs-btn-focus-shadow-rgb: 217, 164, 6; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffcd39; + --bs-btn-active-border-color: #ffc720; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #ffc107; + --bs-btn-disabled-border-color: #ffc107; +} + +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #bb2d3b; + --bs-btn-hover-border-color: #b02a37; + --bs-btn-focus-shadow-rgb: 225, 83, 97; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #b02a37; + --bs-btn-active-border-color: #a52834; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #dc3545; + --bs-btn-disabled-border-color: #dc3545; +} + +.btn-light { + --bs-btn-color: #000; + --bs-btn-bg: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #d3d4d5; + --bs-btn-hover-border-color: #c6c7c8; + --bs-btn-focus-shadow-rgb: 211, 212, 213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #c6c7c8; + --bs-btn-active-border-color: #babbbc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f8f9fa; + --bs-btn-disabled-border-color: #f8f9fa; +} + +.btn-dark { + --bs-btn-color: #fff; + --bs-btn-bg: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #424649; + --bs-btn-hover-border-color: #373b3e; + --bs-btn-focus-shadow-rgb: 66, 70, 73; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4d5154; + --bs-btn-active-border-color: #373b3e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #212529; + --bs-btn-disabled-border-color: #212529; +} + +.btn-outline-primary { + --bs-btn-color: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0d6efd; + --bs-btn-hover-border-color: #0d6efd; + --bs-btn-focus-shadow-rgb: 13, 110, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0d6efd; + --bs-btn-active-border-color: #0d6efd; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0d6efd; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0d6efd; + --bs-gradient: none; +} + +.btn-outline-secondary { + --bs-btn-color: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6c757d; + --bs-btn-hover-border-color: #6c757d; + --bs-btn-focus-shadow-rgb: 108, 117, 125; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6c757d; + --bs-btn-active-border-color: #6c757d; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6c757d; + --bs-gradient: none; +} + +.btn-outline-success { + --bs-btn-color: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #198754; + --bs-btn-hover-border-color: #198754; + --bs-btn-focus-shadow-rgb: 25, 135, 84; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #198754; + --bs-btn-active-border-color: #198754; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #198754; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #198754; + --bs-gradient: none; +} + +.btn-outline-info { + --bs-btn-color: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #0dcaf0; + --bs-btn-hover-border-color: #0dcaf0; + --bs-btn-focus-shadow-rgb: 13, 202, 240; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #0dcaf0; + --bs-btn-active-border-color: #0dcaf0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0dcaf0; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0dcaf0; + --bs-gradient: none; +} + +.btn-outline-warning { + --bs-btn-color: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffc107; + --bs-btn-hover-border-color: #ffc107; + --bs-btn-focus-shadow-rgb: 255, 193, 7; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffc107; + --bs-btn-active-border-color: #ffc107; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffc107; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffc107; + --bs-gradient: none; +} + +.btn-outline-danger { + --bs-btn-color: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #dc3545; + --bs-btn-hover-border-color: #dc3545; + --bs-btn-focus-shadow-rgb: 220, 53, 69; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #dc3545; + --bs-btn-active-border-color: #dc3545; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #dc3545; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #dc3545; + --bs-gradient: none; +} + +.btn-outline-light { + --bs-btn-color: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f8f9fa; + --bs-btn-hover-border-color: #f8f9fa; + --bs-btn-focus-shadow-rgb: 248, 249, 250; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f8f9fa; + --bs-btn-active-border-color: #f8f9fa; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f8f9fa; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f8f9fa; + --bs-gradient: none; +} + +.btn-outline-dark { + --bs-btn-color: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #212529; + --bs-btn-hover-border-color: #212529; + --bs-btn-focus-shadow-rgb: 33, 37, 41; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #212529; + --bs-btn-active-border-color: #212529; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #212529; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #212529; + --bs-gradient: none; +} + +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: none; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + text-decoration: underline; +} + +.btn-link:focus-visible { + color: var(--bs-btn-color); +} + +.btn-link:hover { + color: var(--bs-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.25rem; + --bs-btn-border-radius: 0.5rem; +} + +.btn-sm, .btn-group-sm > .btn { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.875rem; + --bs-btn-border-radius: 0.25rem; +} + +.fade { + transition: opacity 0.15s linear; +} + +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} + +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} + +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} + +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} + +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} + +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: #212529; + --bs-dropdown-bg: #fff; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: 0.375rem; + --bs-dropdown-border-width: 1px; + --bs-dropdown-inner-border-radius: calc(0.375rem - 1px); + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-dropdown-link-color: #212529; + --bs-dropdown-link-hover-color: #1e2125; + --bs-dropdown-link-hover-bg: #e9ecef; + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 0.25rem; + --bs-dropdown-header-color: #6c757d; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); +} + +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} + +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} + +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-sm-end { + --bs-position: end; + } + + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} + +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-md-end { + --bs-position: end; + } + + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} + +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-lg-end { + --bs-position: end; + } + + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} + +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-xl-end { + --bs-position: end; + } + + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} + +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-xxl-end { + --bs-position: end; + } + + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} + +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--bs-dropdown-spacer); +} + +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} + +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); +} + +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropstart .dropdown-toggle::after { + display: none; +} + +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:hover, .dropdown-item:focus { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); +} + +.dropdown-item.active, .dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.875rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); +} + +.dropdown-menu-dark { + --bs-dropdown-color: #dee2e6; + --bs-dropdown-bg: #343a40; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #dee2e6; + --bs-dropdown-link-hover-color: #fff; + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-header-color: #adb5bd; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} + +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group { + border-radius: 0.375rem; +} + +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} + +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: bold; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: #6c757d; + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: red; + text-decoration: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} + +.nav-link:hover, .nav-link:focus { + color: var(--bs-nav-link-hover-color); +} + +.nav-link.disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --bs-nav-tabs-border-width: 1px; + --bs-nav-tabs-border-color: #dee2e6; + --bs-nav-tabs-border-radius: 0.375rem; + --bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6; + --bs-nav-tabs-link-active-color: #495057; + --bs-nav-tabs-link-active-bg: #fff; + --bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff; + border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); +} + +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + background: none; + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} + +.nav-tabs .nav-link.disabled, .nav-tabs .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); +} + +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --bs-nav-pills-border-radius: 0.375rem; + --bs-nav-pills-link-active-color: #fff; + --bs-nav-pills-link-active-bg: #0d6efd; +} + +.nav-pills .nav-link { + background: none; + border: 0; + border-radius: var(--bs-nav-pills-border-radius); +} + +.nav-pills .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: rgba(0, 0, 0, 0.55); + --bs-navbar-hover-color: rgba(0, 0, 0, 0.7); + --bs-navbar-disabled-color: rgba(0, 0, 0, 0.3); + --bs-navbar-active-color: rgba(0, 0, 0, 0.9); + --bs-navbar-brand-padding-y: 0.3125rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.25rem; + --bs-navbar-brand-color: #C9C9C9; /*me*/ + --bs-navbar-brand-hover-color: #C9C9C9; + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.25rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(0, 0, 0, 0.1); + --bs-navbar-toggler-border-radius: 0.375rem; + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} + +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} + +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + text-decoration: none; + white-space: nowrap; +} + +.navbar-brand:hover, .navbar-brand:focus { + color: var(--bs-navbar-brand-hover-color); +} + +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .show > .nav-link, +.navbar-nav .nav-link.active { + color: var(--bs-navbar-active-color); +} + +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); +} + +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--bs-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + transition: var(--bs-navbar-toggler-transition); +} + +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} + +.navbar-toggler:hover { + text-decoration: none; +} + +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + + .navbar-expand-sm .navbar-toggler { + display: none; + } + + .navbar-expand-sm .offcanvas { + 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; + transition: none; + } + + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + + .navbar-expand-md .navbar-toggler { + display: none; + } + + .navbar-expand-md .offcanvas { + 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; + transition: none; + } + + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + + .navbar-expand-lg .navbar-toggler { + display: none; + } + + .navbar-expand-lg .offcanvas { + 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; + transition: none; + } + + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} + +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + + .navbar-expand-xl .navbar-toggler { + display: none; + } + + .navbar-expand-xl .offcanvas { + 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; + transition: none; + } + + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} + +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + + .navbar-expand-xxl .navbar-toggler { + display: none; + } + + .navbar-expand-xxl .offcanvas { + 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; + transition: none; + } + + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} + +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} + +.navbar-expand .navbar-nav { + flex-direction: row; +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); +} + +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} + +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} + +.navbar-expand .navbar-toggler { + display: none; +} + +.navbar-expand .offcanvas { + 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; + transition: none; +} + +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} + +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark { + --bs-navbar-color: rgba(255, 255, 255, 0.55); + --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #fff; + --bs-navbar-brand-color: #fff; + --bs-navbar-brand-hover-color: red; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --bs-card-spacer-y: 1rem; + --bs-card-spacer-x: 1rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-border-width: 1px; + --bs-card-border-color: var(--bs-border-color-translucent); + --bs-card-border-radius: 0.375rem; + --bs-card-box-shadow: ; + --bs-card-inner-border-radius: calc(0.375rem - 1px); + --bs-card-cap-padding-y: 0.5rem; + --bs-card-cap-padding-x: 1rem; + --bs-card-cap-bg: rgba(0, 0, 0, 0.03); + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: #fff; + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 0.75rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); +} + +.card > hr { + margin-right: 0; + margin-left: 0; +} + +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} + +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} + +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} + +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} + +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); +} + +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} + +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); +} + +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; +} + +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); +} + +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --bs-accordion-color: #212529; + --bs-accordion-bg: #fff; + --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: 1px; + --bs-accordion-border-radius: 0.375rem; + --bs-accordion-inner-border-radius: calc(0.375rem - 1px); + --bs-accordion-btn-padding-x: 1.25rem; + --bs-accordion-btn-padding-y: 1rem; + --bs-accordion-btn-color: #212529; + --bs-accordion-btn-bg: var(--bs-accordion-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath 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-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.25rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath 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-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-border-color: #86b7fe; + --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-accordion-body-padding-x: 1.25rem; + --bs-accordion-body-padding-y: 1rem; + --bs-accordion-active-color: #0c63e4; + --bs-accordion-active-bg: #e7f1ff; +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 1rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--bs-accordion-transition); +} + +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} + +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); +} + +.accordion-button:not(.collapsed)::after { + background-image: var(--bs-accordion-btn-active-icon); + transform: var(--bs-accordion-btn-icon-transform); +} + +.accordion-button::after { + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + transition: var(--bs-accordion-btn-icon-transition); +} + +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} + +.accordion-button:hover { + z-index: 2; +} + +.accordion-button:focus { + z-index: 3; + border-color: var(--bs-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--bs-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); +} + +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); +} + +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); +} + +.accordion-item:not(:first-of-type) { + border-top: 0; +} + +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} + +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); +} + +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} + +.accordion-body { + padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} + +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} + +.accordion-flush .accordion-item:first-child { + border-top: 0; +} + +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} + +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} + +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: #6c757d; + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: #6c757d; + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); +} + +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} + +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); +} + +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: #fff; + --bs-pagination-border-width: 1px; + --bs-pagination-border-color: #dee2e6; + --bs-pagination-border-radius: 0.375rem; + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: #e9ecef; + --bs-pagination-hover-border-color: #dee2e6; + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: #e9ecef; + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #0d6efd; + --bs-pagination-active-border-color: #0d6efd; + --bs-pagination-disabled-color: #6c757d; + --bs-pagination-disabled-bg: #fff; + --bs-pagination-disabled-border-color: #dee2e6; + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + text-decoration: none; + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} + +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} + +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); +} + +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} + +.page-link.disabled, .disabled > .page-link { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-left: -1px; +} + +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} + +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} + +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.25rem; + --bs-pagination-border-radius: 0.5rem; +} + +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.875rem; + --bs-pagination-border-radius: 0.25rem; +} + +.badge { + --bs-badge-padding-x: 0.65em; + --bs-badge-padding-y: 0.35em; + --bs-badge-font-size: 0.75em; + --bs-badge-font-weight: 700; + --bs-badge-color: #fff; + --bs-badge-border-radius: 0.375rem; + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: 1px solid var(--bs-alert-border-color); + --bs-alert-border-radius: 0.375rem; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 3rem; +} + +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} + +.alert-primary { + --bs-alert-color: #084298; + --bs-alert-bg: #cfe2ff; + --bs-alert-border-color: #b6d4fe; +} + +.alert-primary .alert-link { + color: #06357a; +} + +.alert-secondary { + --bs-alert-color: #41464b; + --bs-alert-bg: #e2e3e5; + --bs-alert-border-color: #d3d6d8; +} + +.alert-secondary .alert-link { + color: #34383c; +} + +.alert-success { + --bs-alert-color: #0f5132; + --bs-alert-bg: #d1e7dd; + --bs-alert-border-color: #badbcc; +} + +.alert-success .alert-link { + color: #0c4128; +} + +.alert-info { + --bs-alert-color: #055160; + --bs-alert-bg: #cff4fc; + --bs-alert-border-color: #b6effb; +} + +.alert-info .alert-link { + color: #04414d; +} + +.alert-warning { + --bs-alert-color: #664d03; + --bs-alert-bg: #fff3cd; + --bs-alert-border-color: #ffecb5; +} + +.alert-warning .alert-link { + color: #523e02; +} + +.alert-danger { + --bs-alert-color: #842029; + --bs-alert-bg: #f8d7da; + --bs-alert-border-color: #f5c2c7; +} + +.alert-danger .alert-link { + color: #6a1a21; +} + +.alert-light { + --bs-alert-color: #636464; + --bs-alert-bg: #fefefe; + --bs-alert-border-color: #fdfdfe; +} + +.alert-light .alert-link { + color: #4f5050; +} + +.alert-dark { + --bs-alert-color: #141619; + --bs-alert-bg: #d3d3d4; + --bs-alert-border-color: #bcbebf; +} + +.alert-dark .alert-link { + color: #101214; +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} + +.progress { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.75rem; + --bs-progress-bg: #e9ecef; + --bs-progress-border-radius: 0.375rem; + --bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-progress-bar-color: #fff; + --bs-progress-bar-bg: #0d6efd; + --bs-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + transition: var(--bs-progress-bar-transition); +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--bs-progress-height) var(--bs-progress-height); +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --bs-list-group-color: #212529; + --bs-list-group-bg: #fff; + --bs-list-group-border-color: rgba(0, 0, 0, 0.125); + --bs-list-group-border-width: 1px; + --bs-list-group-border-radius: 0.375rem; + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: #495057; + --bs-list-group-action-hover-color: #495057; + --bs-list-group-action-hover-bg: #f8f9fa; + --bs-list-group-action-active-color: #212529; + --bs-list-group-action-active-bg: #e9ecef; + --bs-list-group-disabled-color: #6c757d; + --bs-list-group-disabled-bg: #fff; + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #0d6efd; + --bs-list-group-active-border-color: #0d6efd; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} + +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; +} + +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); +} + +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + text-decoration: none; + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); +} + +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} + +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} + +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} + +.list-group-item + .list-group-item { + border-top-width: 0; +} + +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} + +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; +} + +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; +} + +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} + +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; +} + +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} + +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} + +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} + +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} + +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} + +.list-group-flush { + border-radius: 0; +} + +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); +} + +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + color: #084298; + background-color: #cfe2ff; +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #084298; + background-color: #bacbe6; +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #084298; + border-color: #084298; +} + +.list-group-item-secondary { + color: #41464b; + background-color: #e2e3e5; +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #41464b; + background-color: #cbccce; +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #41464b; + border-color: #41464b; +} + +.list-group-item-success { + color: #0f5132; + background-color: #d1e7dd; +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #0f5132; + background-color: #bcd0c7; +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #0f5132; + border-color: #0f5132; +} + +.list-group-item-info { + color: #055160; + background-color: #cff4fc; +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #055160; + background-color: #badce3; +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #055160; + border-color: #055160; +} + +.list-group-item-warning { + color: #664d03; + background-color: #fff3cd; +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #664d03; + background-color: #e6dbb9; +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #664d03; + border-color: #664d03; +} + +.list-group-item-danger { + color: #842029; + background-color: #f8d7da; +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #842029; + background-color: #dfc2c4; +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #842029; + border-color: #842029; +} + +.list-group-item-light { + color: #636464; + background-color: #fefefe; +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #636464; + background-color: #e5e5e5; +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #636464; + border-color: #636464; +} + +.list-group-item-dark { + color: #141619; + background-color: #d3d3d4; +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #141619; + background-color: #bebebf; +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #141619; + border-color: #141619; +} + +.btn-close { + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: #000; + background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath 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.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; + border: 0; + border-radius: 0.375rem; + opacity: 0.5; +} + +.btn-close:hover { + color: #000; + text-decoration: none; + opacity: 0.75; +} + +.btn-close:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + opacity: 1; +} + +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + opacity: 0.25; +} + +.btn-close-white { + filter: invert(1) grayscale(100%) brightness(200%); +} + +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 1.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(255, 255, 255, 0.85); + --bs-toast-border-width: 1px; + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: 0.375rem; + --bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-toast-header-color: #6c757d; + --bs-toast-header-bg: rgba(255, 255, 255, 0.85); + --bs-toast-header-border-color: rgba(0, 0, 0, 0.05); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} + +.toast.showing { + opacity: 0; +} + +.toast:not(.show) { + display: none; +} + +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} + +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); + border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); + border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); +} + +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} + +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: #fff; + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: 1px; + --bs-modal-border-radius: 0.5rem; + --bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-modal-inner-border-radius: calc(0.5rem - 1px); + --bs-modal-header-padding-x: 1rem; + --bs-modal-header-padding-y: 1rem; + --bs-modal-header-padding: 1rem 1rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: 1px; + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: 1px; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--bs-modal-margin); + pointer-events: none; +} + +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} + +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} + +.modal.show .modal-dialog { + transform: none; +} + +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} + +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} + +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); + outline: 0; +} + +.modal-backdrop { + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000; + --bs-backdrop-opacity: 0.5; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} + +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--bs-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} + +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + } + + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + + .modal-sm { + --bs-modal-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --bs-modal-width: 800px; + } +} + +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} + +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} + +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} + +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} + +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} + +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} + +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} + +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} + +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} + +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.875rem; + --bs-tooltip-color: #fff; + --bs-tooltip-bg: #000; + --bs-tooltip-border-radius: 0.375rem; + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + padding: var(--bs-tooltip-arrow-height); + margin: var(--bs-tooltip-margin); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} + +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} + +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: 0; +} + +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} + +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: 0; +} + +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} + +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} + +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 0.875rem; + --bs-popover-bg: #fff; + --bs-popover-border-width: 1px; + --bs-popover-border-color: var(--bs-border-color-translucent); + --bs-popover-border-radius: 0.5rem; + --bs-popover-inner-border-radius: calc(0.5rem - 1px); + --bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 0.5rem; + --bs-popover-header-font-size: 1rem; + --bs-popover-header-color: ; + --bs-popover-header-bg: #f0f0f0; + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-color: #212529; + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); +} + +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} + +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} + +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} + +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} + +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} + +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} + +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} + +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} + +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} + +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} + +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} + +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} + +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} + +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} + +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} + +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/*rtl:options: {*/ + +/*"autoRename"*/ +/*: true,*/ + +/*"stringMap"*/ +/*:[ {*/ +/*"name": "prev-next",*/ +/*"search": "prev",*/ +/*"replace": "next"*/ +/*}*/ + +/*]*/ +/*} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} + +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} + +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} + +.carousel-dark .carousel-caption { + color: #000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} + +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.25em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.2em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} + +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --bs-spinner-animation-speed: 1.5s; + } +} + +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1rem; + --bs-offcanvas-padding-y: 1rem; + --bs-offcanvas-color: ; + --bs-offcanvas-bg: #fff; + --bs-offcanvas-border-width: 1px; + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} + +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} + +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} + +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} + +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} + +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} + +@media (max-width: 575.98px) { + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } +} + +@media (max-width: 575.98px) { + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} + +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + + .offcanvas-sm .offcanvas-header { + display: none; + } + + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} + +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} + +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} + +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} + +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} + +@media (max-width: 767.98px) { + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} + +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + + .offcanvas-md .offcanvas-header { + display: none; + } + + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} + +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} + +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + + .offcanvas-lg .offcanvas-header { + display: none; + } + + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} + +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} + +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + + .offcanvas-xl .offcanvas-header { + display: none; + } + + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} + +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} + +@media (min-width: 1400px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + + .offcanvas-xxl .offcanvas-header { + display: none; + } + + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} + +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); +} + +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); +} + +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); +} + +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); +} + +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} + +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} + +.offcanvas-backdrop.fade { + opacity: 0; +} + +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} + +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: 1.5; +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} + +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} + +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} + +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fff !important; + background-color: RGBA(13, 110, 253, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(108, 117, 125, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fff !important; + background-color: RGBA(25, 135, 84, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #000 !important; + background-color: RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #000 !important; + background-color: RGBA(255, 193, 7, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fff !important; + background-color: RGBA(220, 53, 69, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #000 !important; + background-color: RGBA(248, 249, 250, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fff !important; + background-color: RGBA(33, 37, 41, var(--bs-bg-opacity, 1)) !important; +} + +.link-primary { + color: #0d6efd !important; +} + +.link-primary:hover, .link-primary:focus { + color: #0a58ca !important; +} + +.link-secondary { + color: #6c757d !important; +} + +.link-secondary:hover, .link-secondary:focus { + color: #565e64 !important; +} + +.link-success { + color: #198754 !important; +} + +.link-success:hover, .link-success:focus { + color: #146c43 !important; +} + +.link-info { + color: #0dcaf0 !important; +} + +.link-info:hover, .link-info:focus { + color: #3dd5f3 !important; +} + +.link-warning { + color: #ffc107 !important; +} + +.link-warning:hover, .link-warning:focus { + color: #ffcd39 !important; +} + +.link-danger { + color: #dc3545 !important; +} + +.link-danger:hover, .link-danger:focus { + color: #b02a37 !important; +} + +.link-light { + color: #f8f9fa !important; +} + +.link-light:hover, .link-light:focus { + color: #f9fafb !important; +} + +.link-dark { + color: #212529 !important; +} + +.link-dark:hover, .link-dark:focus { + color: #1a1e21 !important; +} + +.ratio { + position: relative; + width: 100%; +} + +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} + +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + + .sticky-sm-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} + +@media (min-width: 768px) { + .sticky-md-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + + .sticky-md-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} + +@media (min-width: 992px) { + .sticky-lg-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + + .sticky-lg-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} + +@media (min-width: 1200px) { + .sticky-xl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + + .sticky-xl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} + +@media (min-width: 1400px) { + .sticky-xxl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + + .sticky-xxl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} + +.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; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: 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; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; +} + +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; +} + +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; +} + +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} + +.border-warning { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; +} + +.border-danger { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; +} + +.border-light { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; +} + +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} + +.border-white { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; +} + +.border-1 { + --bs-border-width: 1px; +} + +.border-2 { + --bs-border-width: 2px; +} + +.border-3 { + --bs-border-width: 3px; +} + +.border-4 { + --bs-border-width: 4px; +} + +.border-5 { + --bs-border-width: 5px; +} + +.border-opacity-10 { + --bs-border-opacity: 0.1; +} + +.border-opacity-25 { + --bs-border-opacity: 0.25; +} + +.border-opacity-50 { + --bs-border-opacity: 0.5; +} + +.border-opacity-75 { + --bs-border-opacity: 0.75; +} + +.border-opacity-100 { + --bs-border-opacity: 1; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !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; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-5 { + font-size: 1.25rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 2 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: #6c757d !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--bs-border-radius-2xl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + + .float-sm-end { + float: right !important; + } + + .float-sm-none { + float: none !important; + } + + .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-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; + } + + .gap-sm-0 { + gap: 0 !important; + } + + .gap-sm-1 { + gap: 0.25rem !important; + } + + .gap-sm-2 { + gap: 0.5rem !important; + } + + .gap-sm-3 { + gap: 1rem !important; + } + + .gap-sm-4 { + gap: 1.5rem !important; + } + + .gap-sm-5 { + gap: 3rem !important; + } + + .text-sm-start { + text-align: left !important; + } + + .text-sm-end { + text-align: right !important; + } + + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + + .float-md-end { + float: right !important; + } + + .float-md-none { + float: none !important; + } + + .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-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; + } + + .gap-md-0 { + gap: 0 !important; + } + + .gap-md-1 { + gap: 0.25rem !important; + } + + .gap-md-2 { + gap: 0.5rem !important; + } + + .gap-md-3 { + gap: 1rem !important; + } + + .gap-md-4 { + gap: 1.5rem !important; + } + + .gap-md-5 { + gap: 3rem !important; + } + + .text-md-start { + text-align: left !important; + } + + .text-md-end { + text-align: right !important; + } + + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + + .float-lg-end { + float: right !important; + } + + .float-lg-none { + float: none !important; + } + + .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-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; + } + + .gap-lg-0 { + gap: 0 !important; + } + + .gap-lg-1 { + gap: 0.25rem !important; + } + + .gap-lg-2 { + gap: 0.5rem !important; + } + + .gap-lg-3 { + gap: 1rem !important; + } + + .gap-lg-4 { + gap: 1.5rem !important; + } + + .gap-lg-5 { + gap: 3rem !important; + } + + .text-lg-start { + text-align: left !important; + } + + .text-lg-end { + text-align: right !important; + } + + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + + .float-xl-end { + float: right !important; + } + + .float-xl-none { + float: none !important; + } + + .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-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; + } + + .gap-xl-0 { + gap: 0 !important; + } + + .gap-xl-1 { + gap: 0.25rem !important; + } + + .gap-xl-2 { + gap: 0.5rem !important; + } + + .gap-xl-3 { + gap: 1rem !important; + } + + .gap-xl-4 { + gap: 1.5rem !important; + } + + .gap-xl-5 { + gap: 3rem !important; + } + + .text-xl-start { + text-align: left !important; + } + + .text-xl-end { + text-align: right !important; + } + + .text-xl-center { + text-align: center !important; + } +} + +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + + .float-xxl-end { + float: right !important; + } + + .float-xxl-none { + float: none !important; + } + + .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-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; + } + + .gap-xxl-0 { + gap: 0 !important; + } + + .gap-xxl-1 { + gap: 0.25rem !important; + } + + .gap-xxl-2 { + gap: 0.5rem !important; + } + + .gap-xxl-3 { + gap: 1rem !important; + } + + .gap-xxl-4 { + gap: 1.5rem !important; + } + + .gap-xxl-5 { + gap: 3rem !important; + } + + .text-xxl-start { + text-align: left !important; + } + + .text-xxl-end { + text-align: right !important; + } + + .text-xxl-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .fs-1 { + font-size: 2.5rem !important; + } + + .fs-2 { + font-size: 2rem !important; + } + + .fs-3 { + font-size: 1.75rem !important; + } + + .fs-4 { + font-size: 1.5rem !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-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.css.map */ \ No newline at end of file diff --git a/server/static/css/buttons.css b/server/static/css/buttons.css new file mode 100644 index 0000000..4e39d13 --- /dev/null +++ b/server/static/css/buttons.css @@ -0,0 +1,29 @@ +.btn { + background-color: var(--my_body_color); + color: black; + padding: 7px 14px; + font-size: 16px; + cursor: pointer; + border-color: black; +} + +.btn:hover { + background-color: black; + color: var(--my_body_color); +} + +.bin-img, .edit-img { + width: 25px; + margin-left: -5px; + margin-top: 8px; +} + +.btn-edit, .btn-add { + padding-left: 6rem; + padding-right: 6rem; + margin-bottom: 1rem; +} + +.btn-register { + margin-top: 15px; +} diff --git a/server/static/css/rest.css b/server/static/css/rest.css new file mode 100644 index 0000000..4ee990e --- /dev/null +++ b/server/static/css/rest.css @@ -0,0 +1,116 @@ +.my-isnew{ + pointer-events: none; +} + +.my-arrows{ + background-color: #888888; + border-radius: 1rem; +} + +.result-message{ + margin-top: 1rem; + background-color: white!important; + box-shadow: 1px 2px 3px #888888; + border: 1px solid rgb(156, 152, 152); + border-radius: 3px; +} + +.c-t { + color: #0a53be; + font-weight: bold; +} + + +.mark-mine { + background: var(--my_color_markmine); +} + +.carousel-item { + background: var(--my_body_color); + background-position: center; + background-size: cover; + position: relative; +} + +.img-carousel { + object-fit: contain; +} + + +#user-details-grid { + display: grid; + grid-template-columns: 0.25fr 0.75fr; + +} + +#item-details-grid { + display: grid; + grid-template-columns: 0.5fr 0.5fr; +} + +.grid-sm-big { + display: grid; + grid-template-columns: 0.5fr 3fr; +} + +[type=file] { + padding-bottom: 1rem; +} + + +.box { + background-color: white; + display: block; + box-shadow: 1px 2px 3px #888888; + border: 1px solid rgb(156, 152, 152); + border-radius: 3px; +} + +.box-itemedit { + position: center; + width: 500px; +} + +.box-logreg { + margin-bottom: 15px; + padding: 40px; + width: 280px; +} + +.box-itemadd { + padding: 40px; + margin-bottom: 15px; +} + +.item-add { + width: 500px !important; +} + + +.dropdown-item:hover { + background-color: #C9C9C9; + color: black !important; +} + +.next-padding { + padding-left: 5rem; + margin-right: 3rem; +} + +.category-li { + color: black !important; +} + +.category-li:hover { + color: #0D6EFD !important; + font-weight: bold; +} + +.item-edit-container { + width: 600px !important; + padding-top: 1rem; +} + +.user-edit-container { + width: 600px !important; +} \ No newline at end of file diff --git a/server/static/images/404img.png b/server/static/images/404img.png new file mode 100644 index 0000000000000000000000000000000000000000..c5fb46b173e14b7ab3ad7478f4a7e1b858300fed GIT binary patch literal 23527 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 sBKT*wuc;0AJAYQ+(#O*kn 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 literal 0 HcmV?d00001 diff --git a/server/static/images/icon-remove-22.jpg b/server/static/images/icon-remove-22.jpg new file mode 100644 index 0000000000000000000000000000000000000000..801a58d019c27ce2cdb2a4f9c8552f5636c94469 GIT binary patch literal 13917 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 literal 0 HcmV?d00001 diff --git a/server/static/images/no_posts.png b/server/static/images/no_posts.png new file mode 100644 index 0000000000000000000000000000000000000000..fce67744597b5cb001102f8269a39d9dee37284f GIT binary patch literal 70584 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 L=G>mO_Q3xEo0isn literal 0 HcmV?d00001 diff --git a/server/static/images/search.png b/server/static/images/search.png new file mode 100644 index 0000000000000000000000000000000000000000..c62a93a8ab4aeddbb402fb9cab4c7ca21cb56d8d GIT binary patch literal 10757 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�gfdAbUMggBeMFRb$b@e1Z{m9)pm}=Lkq&rjEu< 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 literal 0 HcmV?d00001 diff --git a/server/static/images/sg-logo.svg b/server/static/images/sg-logo.svg new file mode 100644 index 0000000..107aeb8 --- /dev/null +++ b/server/static/images/sg-logo.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/static/images/user.png b/server/static/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..ff20a20a60b43063d8751b5da57670210804453a GIT binary patch literal 11096 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 { + if (object === null || object === undefined) { + return `${object}`; + } + + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + /** + * Public Util API + */ + + + const getUID = prefix => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + + return prefix; + }; + + const getSelector = element => { + let selector = element.getAttribute('data-bs-target'); + + if (!selector || selector === '#') { + let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, + // so everything starting with `#` or `.`. If a "real" URL is used as the selector, + // `document.querySelector` will rightfully complain it is invalid. + // See https://github.com/twbs/bootstrap/issues/32273 + + if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { + return null; + } // Just in case some CMS puts out a full URL with the anchor appended + + + if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { + hrefAttribute = `#${hrefAttribute.split('#')[1]}`; + } + + selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; + } + + return selector; + }; + + const getSelectorFromElement = element => { + const selector = getSelector(element); + + if (selector) { + return document.querySelector(selector) ? selector : null; + } + + return null; + }; + + const getElementFromSelector = element => { + const selector = getSelector(element); + return selector ? document.querySelector(selector) : null; + }; + + const getTransitionDurationFromElement = element => { + if (!element) { + return 0; + } // Get transition-duration of the element + + + let { + transitionDuration, + transitionDelay + } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + + const triggerTransitionEnd = element => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + + const isElement$1 = object => { + if (!object || typeof object !== 'object') { + return false; + } + + if (typeof object.jquery !== 'undefined') { + object = object[0]; + } + + return typeof object.nodeType !== 'undefined'; + }; + + const getElement = object => { + // it's a jQuery object or a node element + if (isElement$1(object)) { + return object.jquery ? object[0] : object; + } + + if (typeof object === 'string' && object.length > 0) { + return document.querySelector(object); + } + + return null; + }; + + const isVisible = element => { + if (!isElement$1(element) || element.getClientRects().length === 0) { + return false; + } + + const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed + + const closedDetails = element.closest('details:not([open])'); + + if (!closedDetails) { + return elementIsVisible; + } + + if (closedDetails !== element) { + const summary = element.closest('summary'); + + if (summary && summary.parentNode !== closedDetails) { + return false; + } + + if (summary === null) { + return false; + } + } + + return elementIsVisible; + }; + + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + + if (element.classList.contains('disabled')) { + return true; + } + + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + + const findShadowRoot = element => { + if (!document.documentElement.attachShadow) { + return null; + } // Can find the shadow root otherwise it'll return the document + + + if (typeof element.getRootNode === 'function') { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + + if (element instanceof ShadowRoot) { + return element; + } // when we don't find a shadow root + + + if (!element.parentNode) { + return null; + } + + return findShadowRoot(element.parentNode); + }; + + const noop = () => {}; + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ + + + const reflow = element => { + element.offsetHeight; // eslint-disable-line no-unused-expressions + }; + + const getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { + return window.jQuery; + } + + return null; + }; + + const DOMContentLoadedCallbacks = []; + + const onDOMContentLoaded = callback => { + if (document.readyState === 'loading') { + // add listener on the first call when the document is in loading state + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener('DOMContentLoaded', () => { + for (const callback of DOMContentLoadedCallbacks) { + callback(); + } + }); + } + + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + + const isRTL = () => document.documentElement.dir === 'rtl'; + + const defineJQueryPlugin = plugin => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + /* istanbul ignore if */ + + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + + const execute = callback => { + if (typeof callback === 'function') { + callback(); + } + }; + + const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + + const handler = ({ + target + }) => { + if (target !== transitionElement) { + return; + } + + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + /** + * Return the previous/next element of a list. + * + * @param {array} list The list of elements + * @param activeElement The active element + * @param shouldGetNext Choose to get next or previous element + * @param isCycleAllowed + * @return {Element|elem} The proper element + */ + + + const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { + const listLength = list.length; + let index = list.indexOf(activeElement); // if the element does not exist in the list return an element + // depending on the direction and if cycle is allowed + + if (index === -1) { + return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; + } + + index += shouldGetNext ? 1 : -1; + + if (isCycleAllowed) { + index = (index + listLength) % listLength; + } + + return list[Math.max(0, Math.min(index, listLength - 1))]; + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): dom/event-handler.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const namespaceRegex = /[^.]*(?=\..*)\.|.*/; + const stripNameRegex = /\..*/; + const stripUidRegex = /::\d+$/; + const eventRegistry = {}; // Events storage + + let uidEvent = 1; + const customEvents = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); + /** + * Private methods + */ + + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { + delegateTarget: element + }); + + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + + return fn.apply(element, [event]); + }; + } + + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + + for (let { + target + } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + + hydrateObj(event, { + delegateTarget: target + }); + + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + + return fn.apply(target, [event]); + } + } + }; + } + + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); + } + + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check + + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + + return [isDelegated, callable, typeEvent]; + } + + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position + // this prevents the handler from being dispatched the same way as mouseover or mouseout does + + if (originalTypeEvent in customEvents) { + const wrapFunction = fn => { + return function (event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn.call(this, event); + } + }; + }; + + callable = wrapFunction(callable); + } + + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + + if (!fn) { + return; + } + + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + + for (const handlerKey of Object.keys(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + const event = storeElementEvent[handlerKey]; + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + + function getTypeEvent(event) { + // allow to get the native events from namespaced events ('click.bs.button' --> 'click') + event = event.replace(stripNameRegex, ''); + return customEvents[event] || event; + } + + const EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith('.'); + + if (typeof callable !== 'undefined') { + // Simplest case: handler is passed, remove that listener ONLY. + if (!Object.keys(storeElementEvent).length) { + return; + } + + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + + for (const keyHandlers of Object.keys(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ''); + + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + const event = storeElementEvent[keyHandlers]; + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + + trigger(element, event, args) { + if (typeof event !== 'string' || !element) { + return null; + } + + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + + let evt = new Event(event, { + bubbles, + cancelable: true + }); + evt = hydrateObj(evt, args); + + if (defaultPrevented) { + evt.preventDefault(); + } + + if (nativeDispatch) { + element.dispatchEvent(evt); + } + + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + + return evt; + } + + }; + + function hydrateObj(obj, meta) { + for (const [key, value] of Object.entries(meta || {})) { + try { + obj[key] = value; + } catch (_unused) { + Object.defineProperty(obj, key, { + configurable: true, + + get() { + return value; + } + + }); + } + } + + return obj; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): dom/data.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + /** + * Constants + */ + const elementMap = new Map(); + const Data = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, new Map()); + } + + const instanceMap = elementMap.get(element); // make it clear we only want one instance per element + // can be removed later when multiple key/instances are fine to be used + + if (!instanceMap.has(key) && instanceMap.size !== 0) { + // eslint-disable-next-line no-console + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + + instanceMap.set(key, instance); + }, + + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + + return null; + }, + + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + + const instanceMap = elementMap.get(element); + instanceMap.delete(key); // free up element references if there are no instances left for an element + + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): dom/manipulator.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + function normalizeData(value) { + if (value === 'true') { + return true; + } + + if (value === 'false') { + return false; + } + + if (value === Number(value).toString()) { + return Number(value); + } + + if (value === '' || value === 'null') { + return null; + } + + if (typeof value !== 'string') { + return value; + } + + try { + return JSON.parse(decodeURIComponent(value)); + } catch (_unused) { + return value; + } + } + + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); + } + + const Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + + getDataAttributes(element) { + if (!element) { + return {}; + } + + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); + + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ''); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + + return attributes; + }, + + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): util/config.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Class definition + */ + + class Config { + // Getters + static get Default() { + return {}; + } + + static get DefaultType() { + return {}; + } + + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + + this._typeCheckConfig(config); + + return config; + } + + _configAfterMerge(config) { + return config; + } + + _mergeConfigObj(config, element) { + const jsonConfig = isElement$1(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse + + return { ...this.constructor.Default, + ...(typeof jsonConfig === 'object' ? jsonConfig : {}), + ...(isElement$1(element) ? Manipulator.getDataAttributes(element) : {}), + ...(typeof config === 'object' ? config : {}) + }; + } + + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const property of Object.keys(configTypes)) { + const expectedTypes = configTypes[property]; + const value = config[property]; + const valueType = isElement$1(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); + } + } + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): base-component.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const VERSION = '5.2.3'; + /** + * Class definition + */ + + class BaseComponent extends Config { + constructor(element, config) { + super(); + element = getElement(element); + + if (!element) { + return; + } + + this._element = element; + this._config = this._getConfig(config); + Data.set(this._element, this.constructor.DATA_KEY, this); + } // Public + + + dispose() { + Data.remove(this._element, this.constructor.DATA_KEY); + EventHandler.off(this._element, this.constructor.EVENT_KEY); + + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + + this._typeCheckConfig(config); + + return config; + } // Static + + + static getInstance(element) { + return Data.get(getElement(element), this.DATA_KEY); + } + + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); + } + + static get VERSION() { + return VERSION; + } + + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + const target = getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + + instance[method](); + }); + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$f = 'alert'; + const DATA_KEY$a = 'bs.alert'; + const EVENT_KEY$b = `.${DATA_KEY$a}`; + const EVENT_CLOSE = `close${EVENT_KEY$b}`; + const EVENT_CLOSED = `closed${EVENT_KEY$b}`; + const CLASS_NAME_FADE$5 = 'fade'; + const CLASS_NAME_SHOW$8 = 'show'; + /** + * Class definition + */ + + class Alert extends BaseComponent { + // Getters + static get NAME() { + return NAME$f; + } // Public + + + close() { + const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); + + if (closeEvent.defaultPrevented) { + return; + } + + this._element.classList.remove(CLASS_NAME_SHOW$8); + + const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); + + this._queueCallback(() => this._destroyElement(), this._element, isAnimated); + } // Private + + + _destroyElement() { + this._element.remove(); + + EventHandler.trigger(this._element, EVENT_CLOSED); + this.dispose(); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Alert.getOrCreateInstance(this); + + if (typeof config !== 'string') { + return; + } + + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](this); + }); + } + + } + /** + * Data API implementation + */ + + + enableDismissTrigger(Alert, 'close'); + /** + * jQuery + */ + + defineJQueryPlugin(Alert); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$e = 'button'; + const DATA_KEY$9 = 'bs.button'; + const EVENT_KEY$a = `.${DATA_KEY$9}`; + const DATA_API_KEY$6 = '.data-api'; + const CLASS_NAME_ACTIVE$3 = 'active'; + const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; + const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; + /** + * Class definition + */ + + class Button extends BaseComponent { + // Getters + static get NAME() { + return NAME$e; + } // Public + + + toggle() { + // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method + this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Button.getOrCreateInstance(this); + + if (config === 'toggle') { + data[config](); + } + }); + } + + } + /** + * Data API implementation + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { + event.preventDefault(); + const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); + const data = Button.getOrCreateInstance(button); + data.toggle(); + }); + /** + * jQuery + */ + + defineJQueryPlugin(Button); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): dom/selector-engine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + + children(element, selector) { + return [].concat(...element.children).filter(child => child.matches(selector)); + }, + + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + + return parents; + }, + + prev(element, selector) { + let previous = element.previousElementSibling; + + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + + previous = previous.previousElementSibling; + } + + return []; + }, + + // TODO: this is now unused; remove later along with prev() + next(element, selector) { + let next = element.nextElementSibling; + + while (next) { + if (next.matches(selector)) { + return [next]; + } + + next = next.nextElementSibling; + } + + return []; + }, + + focusableChildren(element) { + const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); + return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); + } + + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): util/swipe.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$d = 'swipe'; + const EVENT_KEY$9 = '.bs.swipe'; + const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; + const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; + const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; + const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; + const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; + const POINTER_TYPE_TOUCH = 'touch'; + const POINTER_TYPE_PEN = 'pen'; + const CLASS_NAME_POINTER_EVENT = 'pointer-event'; + const SWIPE_THRESHOLD = 40; + const Default$c = { + endCallback: null, + leftCallback: null, + rightCallback: null + }; + const DefaultType$c = { + endCallback: '(function|null)', + leftCallback: '(function|null)', + rightCallback: '(function|null)' + }; + /** + * Class definition + */ + + class Swipe extends Config { + constructor(element, config) { + super(); + this._element = element; + + if (!element || !Swipe.isSupported()) { + return; + } + + this._config = this._getConfig(config); + this._deltaX = 0; + this._supportPointerEvents = Boolean(window.PointerEvent); + + this._initEvents(); + } // Getters + + + static get Default() { + return Default$c; + } + + static get DefaultType() { + return DefaultType$c; + } + + static get NAME() { + return NAME$d; + } // Public + + + dispose() { + EventHandler.off(this._element, EVENT_KEY$9); + } // Private + + + _start(event) { + if (!this._supportPointerEvents) { + this._deltaX = event.touches[0].clientX; + return; + } + + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX; + } + } + + _end(event) { + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX - this._deltaX; + } + + this._handleSwipe(); + + execute(this._config.endCallback); + } + + _move(event) { + this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; + } + + _handleSwipe() { + const absDeltaX = Math.abs(this._deltaX); + + if (absDeltaX <= SWIPE_THRESHOLD) { + return; + } + + const direction = absDeltaX / this._deltaX; + this._deltaX = 0; + + if (!direction) { + return; + } + + execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); + } + + _initEvents() { + if (this._supportPointerEvents) { + EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); + EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); + + this._element.classList.add(CLASS_NAME_POINTER_EVENT); + } else { + EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); + EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); + EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); + } + } + + _eventIsPointerPenTouch(event) { + return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); + } // Static + + + static isSupported() { + return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$c = 'carousel'; + const DATA_KEY$8 = 'bs.carousel'; + const EVENT_KEY$8 = `.${DATA_KEY$8}`; + const DATA_API_KEY$5 = '.data-api'; + const ARROW_LEFT_KEY$1 = 'ArrowLeft'; + const ARROW_RIGHT_KEY$1 = 'ArrowRight'; + const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + + const ORDER_NEXT = 'next'; + const ORDER_PREV = 'prev'; + const DIRECTION_LEFT = 'left'; + const DIRECTION_RIGHT = 'right'; + const EVENT_SLIDE = `slide${EVENT_KEY$8}`; + const EVENT_SLID = `slid${EVENT_KEY$8}`; + const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; + const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; + const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; + const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; + const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; + const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; + const CLASS_NAME_CAROUSEL = 'carousel'; + const CLASS_NAME_ACTIVE$2 = 'active'; + const CLASS_NAME_SLIDE = 'slide'; + const CLASS_NAME_END = 'carousel-item-end'; + const CLASS_NAME_START = 'carousel-item-start'; + const CLASS_NAME_NEXT = 'carousel-item-next'; + const CLASS_NAME_PREV = 'carousel-item-prev'; + const SELECTOR_ACTIVE = '.active'; + const SELECTOR_ITEM = '.carousel-item'; + const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; + const SELECTOR_ITEM_IMG = '.carousel-item img'; + const SELECTOR_INDICATORS = '.carousel-indicators'; + const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; + const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; + const KEY_TO_DIRECTION = { + [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, + [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT + }; + const Default$b = { + interval: 5000, + keyboard: true, + pause: 'hover', + ride: false, + touch: true, + wrap: true + }; + const DefaultType$b = { + interval: '(number|boolean)', + // TODO:v6 remove boolean support + keyboard: 'boolean', + pause: '(string|boolean)', + ride: '(boolean|string)', + touch: 'boolean', + wrap: 'boolean' + }; + /** + * Class definition + */ + + class Carousel extends BaseComponent { + constructor(element, config) { + super(element, config); + this._interval = null; + this._activeElement = null; + this._isSliding = false; + this.touchTimeout = null; + this._swipeHelper = null; + this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); + + this._addEventListeners(); + + if (this._config.ride === CLASS_NAME_CAROUSEL) { + this.cycle(); + } + } // Getters + + + static get Default() { + return Default$b; + } + + static get DefaultType() { + return DefaultType$b; + } + + static get NAME() { + return NAME$c; + } // Public + + + next() { + this._slide(ORDER_NEXT); + } + + nextWhenVisible() { + // FIXME TODO use `document.visibilityState` + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if (!document.hidden && isVisible(this._element)) { + this.next(); + } + } + + prev() { + this._slide(ORDER_PREV); + } + + pause() { + if (this._isSliding) { + triggerTransitionEnd(this._element); + } + + this._clearInterval(); + } + + cycle() { + this._clearInterval(); + + this._updateInterval(); + + this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); + } + + _maybeEnableCycle() { + if (!this._config.ride) { + return; + } + + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); + return; + } + + this.cycle(); + } + + to(index) { + const items = this._getItems(); + + if (index > items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); + return; + } + + const activeIndex = this._getItemIndex(this._getActive()); + + if (activeIndex === index) { + return; + } + + const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; + + this._slide(order, items[index]); + } + + dispose() { + if (this._swipeHelper) { + this._swipeHelper.dispose(); + } + + super.dispose(); + } // Private + + + _configAfterMerge(config) { + config.defaultInterval = config.interval; + return config; + } + + _addEventListeners() { + if (this._config.keyboard) { + EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event)); + } + + if (this._config.pause === 'hover') { + EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); + EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); + } + + if (this._config.touch && Swipe.isSupported()) { + this._addTouchEventListeners(); + } + } + + _addTouchEventListeners() { + for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { + EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()); + } + + const endCallBack = () => { + if (this._config.pause !== 'hover') { + return; + } // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + + + this.pause(); + + if (this.touchTimeout) { + clearTimeout(this.touchTimeout); + } + + this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); + }; + + const swipeConfig = { + leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), + rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), + endCallback: endCallBack + }; + this._swipeHelper = new Swipe(this._element, swipeConfig); + } + + _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + const direction = KEY_TO_DIRECTION[event.key]; + + if (direction) { + event.preventDefault(); + + this._slide(this._directionToOrder(direction)); + } + } + + _getItemIndex(element) { + return this._getItems().indexOf(element); + } + + _setActiveIndicatorElement(index) { + if (!this._indicatorsElement) { + return; + } + + const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); + activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); + activeIndicator.removeAttribute('aria-current'); + const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); + + if (newActiveIndicator) { + newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); + newActiveIndicator.setAttribute('aria-current', 'true'); + } + } + + _updateInterval() { + const element = this._activeElement || this._getActive(); + + if (!element) { + return; + } + + const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); + this._config.interval = elementInterval || this._config.defaultInterval; + } + + _slide(order, element = null) { + if (this._isSliding) { + return; + } + + const activeElement = this._getActive(); + + const isNext = order === ORDER_NEXT; + const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); + + if (nextElement === activeElement) { + return; + } + + const nextElementIndex = this._getItemIndex(nextElement); + + const triggerEvent = eventName => { + return EventHandler.trigger(this._element, eventName, { + relatedTarget: nextElement, + direction: this._orderToDirection(order), + from: this._getItemIndex(activeElement), + to: nextElementIndex + }); + }; + + const slideEvent = triggerEvent(EVENT_SLIDE); + + if (slideEvent.defaultPrevented) { + return; + } + + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + // todo: change tests that use empty divs to avoid this check + return; + } + + const isCycling = Boolean(this._interval); + this.pause(); + this._isSliding = true; + + this._setActiveIndicatorElement(nextElementIndex); + + this._activeElement = nextElement; + const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; + const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; + nextElement.classList.add(orderClassName); + reflow(nextElement); + activeElement.classList.add(directionalClassName); + nextElement.classList.add(directionalClassName); + + const completeCallBack = () => { + nextElement.classList.remove(directionalClassName, orderClassName); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); + this._isSliding = false; + triggerEvent(EVENT_SLID); + }; + + this._queueCallback(completeCallBack, activeElement, this._isAnimated()); + + if (isCycling) { + this.cycle(); + } + } + + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_SLIDE); + } + + _getActive() { + return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + } + + _getItems() { + return SelectorEngine.find(SELECTOR_ITEM, this._element); + } + + _clearInterval() { + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + } + + _directionToOrder(direction) { + if (isRTL()) { + return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; + } + + return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; + } + + _orderToDirection(order) { + if (isRTL()) { + return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + + return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Carousel.getOrCreateInstance(this, config); + + if (typeof config === 'number') { + data.to(config); + return; + } + + if (typeof config === 'string') { + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + }); + } + + } + /** + * Data API implementation + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { + const target = getElementFromSelector(this); + + if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { + return; + } + + event.preventDefault(); + const carousel = Carousel.getOrCreateInstance(target); + const slideIndex = this.getAttribute('data-bs-slide-to'); + + if (slideIndex) { + carousel.to(slideIndex); + + carousel._maybeEnableCycle(); + + return; + } + + if (Manipulator.getDataAttribute(this, 'slide') === 'next') { + carousel.next(); + + carousel._maybeEnableCycle(); + + return; + } + + carousel.prev(); + + carousel._maybeEnableCycle(); + }); + EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { + const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); + + for (const carousel of carousels) { + Carousel.getOrCreateInstance(carousel); + } + }); + /** + * jQuery + */ + + defineJQueryPlugin(Carousel); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$b = 'collapse'; + const DATA_KEY$7 = 'bs.collapse'; + const EVENT_KEY$7 = `.${DATA_KEY$7}`; + const DATA_API_KEY$4 = '.data-api'; + const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; + const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; + const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; + const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; + const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; + const CLASS_NAME_SHOW$7 = 'show'; + const CLASS_NAME_COLLAPSE = 'collapse'; + const CLASS_NAME_COLLAPSING = 'collapsing'; + const CLASS_NAME_COLLAPSED = 'collapsed'; + const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; + const WIDTH = 'width'; + const HEIGHT = 'height'; + const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; + const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; + const Default$a = { + parent: null, + toggle: true + }; + const DefaultType$a = { + parent: '(null|element)', + toggle: 'boolean' + }; + /** + * Class definition + */ + + class Collapse extends BaseComponent { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); + + for (const elem of toggleList) { + const selector = getSelectorFromElement(elem); + const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); + + if (selector !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + + this._initializeChildren(); + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + + if (this._config.toggle) { + this.toggle(); + } + } // Getters + + + static get Default() { + return Default$a; + } + + static get DefaultType() { + return DefaultType$a; + } + + static get NAME() { + return NAME$b; + } // Public + + + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + + let activeChildren = []; // find active children + + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { + toggle: false + })); + } + + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + + const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); + + if (startEvent.defaultPrevented) { + return; + } + + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + + const dimension = this._getDimension(); + + this._element.classList.remove(CLASS_NAME_COLLAPSE); + + this._element.classList.add(CLASS_NAME_COLLAPSING); + + this._element.style[dimension] = 0; + + this._addAriaAndCollapsedClass(this._triggerArray, true); + + this._isTransitioning = true; + + const complete = () => { + this._isTransitioning = false; + + this._element.classList.remove(CLASS_NAME_COLLAPSING); + + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + + this._element.style[dimension] = ''; + EventHandler.trigger(this._element, EVENT_SHOWN$6); + }; + + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + + this._queueCallback(complete, this._element, true); + + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + + const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); + + if (startEvent.defaultPrevented) { + return; + } + + const dimension = this._getDimension(); + + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + + this._element.classList.add(CLASS_NAME_COLLAPSING); + + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + + for (const trigger of this._triggerArray) { + const element = getElementFromSelector(trigger); + + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + + this._isTransitioning = true; + + const complete = () => { + this._isTransitioning = false; + + this._element.classList.remove(CLASS_NAME_COLLAPSING); + + this._element.classList.add(CLASS_NAME_COLLAPSE); + + EventHandler.trigger(this._element, EVENT_HIDDEN$6); + }; + + this._element.style[dimension] = ''; + + this._queueCallback(complete, this._element, true); + } + + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW$7); + } // Private + + + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); // Coerce string values + + config.parent = getElement(config.parent); + return config; + } + + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + + _initializeChildren() { + if (!this._config.parent) { + return; + } + + const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); + + for (const element of children) { + const selected = getElementFromSelector(element); + + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + + _getFirstLevelChildren(selector) { + const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth + + return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); + } + + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute('aria-expanded', isOpen); + } + } // Static + + + static jQueryInterface(config) { + const _config = {}; + + if (typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false; + } + + return this.each(function () { + const data = Collapse.getOrCreateInstance(this, _config); + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + }); + } + + } + /** + * Data API implementation + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { + event.preventDefault(); + } + + const selector = getSelectorFromElement(this); + const selectorElements = SelectorEngine.find(selector); + + for (const element of selectorElements) { + Collapse.getOrCreateInstance(element, { + toggle: false + }).toggle(); + } + }); + /** + * jQuery + */ + + defineJQueryPlugin(Collapse); + + var top = 'top'; + var bottom = 'bottom'; + var right = 'right'; + var left = 'left'; + var auto = 'auto'; + var basePlacements = [top, bottom, right, left]; + var start = 'start'; + var end = 'end'; + var clippingParents = 'clippingParents'; + var viewport = 'viewport'; + var popper = 'popper'; + var reference = 'reference'; + var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); // modifiers that need to read the DOM + + var beforeRead = 'beforeRead'; + var read = 'read'; + var afterRead = 'afterRead'; // pure-logic modifiers + + var beforeMain = 'beforeMain'; + var main = 'main'; + var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + + var beforeWrite = 'beforeWrite'; + var write = 'write'; + var afterWrite = 'afterWrite'; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + + function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; + } + + function getWindow(node) { + if (node == null) { + return window; + } + + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; + } + + function isElement(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + + function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + + // and applies them to the HTMLElements such as popper and arrow + + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); + } + + function effect$2(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } // eslint-disable-next-line import/no-unused-modules + + + const applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$2, + requires: ['computeStyles'] + }; + + function getBasePlacement(placement) { + return placement.split('-')[0]; + } + + var max = Math.max; + var min = Math.min; + var round = Math.round; + + function getUAString() { + var uaData = navigator.userAgentData; + + if (uaData != null && uaData.brands) { + return uaData.brands.map(function (item) { + return item.brand + "/" + item.version; + }).join(' '); + } + + return navigator.userAgent; + } + + function isLayoutViewport() { + return !/^((?!chrome|android).)*safari/i.test(getUAString()); + } + + function getBoundingClientRect(element, includeScale, isFixedStrategy) { + if (includeScale === void 0) { + includeScale = false; + } + + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + + var clientRect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + + if (includeScale && isHTMLElement(element)) { + scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; + scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; + } + + var _ref = isElement(element) ? getWindow(element) : window, + visualViewport = _ref.visualViewport; + + var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; + var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; + var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; + var width = clientRect.width / scaleX; + var height = clientRect.height / scaleY; + return { + width: width, + height: height, + top: y, + right: x + width, + bottom: y + height, + left: x, + x: x, + y: y + }; + } + + // means it doesn't take into account transforms. + + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 + + var width = element.offsetWidth; + var height = element.offsetHeight; + + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; + } + + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; + } + + function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); + } + + function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; + } + + function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; + } + + function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) // fallback + + ); + } + + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle$1(element).position === 'fixed') { + return null; + } + + return element.offsetParent; + } // `.offsetParent` reports `null` for fixed elements, while absolute elements + // return the containing block + + + function getContainingBlock(element) { + var isFirefox = /firefox/i.test(getUAString()); + var isIE = /Trident/i.test(getUAString()); + + if (isIE && isHTMLElement(element)) { + // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport + var elementCss = getComputedStyle$1(element); + + if (elementCss.position === 'fixed') { + return null; + } + } + + var currentNode = getParentNode(element); + + if (isShadowRoot(currentNode)) { + currentNode = currentNode.host; + } + + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + + return null; + } // Gets the closest ancestor positioned element. Handles some edge cases, + // such as table ancestors and cross browser bugs. + + + function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { + return window; + } + + return offsetParent || getContainingBlock(element) || window; + } + + function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; + } + + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; + } + + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + + function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + + var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + }; + + function arrow(_ref) { + var _state$modifiersData$; + + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + + if (!arrowElement || !popperOffsets) { + return; + } + + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds + + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); // Prevents breaking syntax highlighting... + + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); + } + + function effect$1(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + + if (arrowElement == null) { + return; + } // CSS selector + + + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + + if (!arrowElement) { + return; + } + } + + if (!contains(state.elements.popper, arrowElement)) { + + return; + } + + state.elements.arrow = arrowElement; + } // eslint-disable-next-line import/no-unused-modules + + + const arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect$1, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + + function getVariation(placement) { + return placement.split('-')[1]; + } + + var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' + }; // Round the offsets to the nearest suitable subpixel based on the DPR. + // Zooming can change the DPR, but it seems to report a value that will + // cleanly divide the values into the appropriate subpixels. + + function roundOffsetsByDPR(_ref) { + var x = _ref.x, + y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + + function mapToStyles(_ref2) { + var _Object$assign2; + + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref3.x; + y = _ref3.y; + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; + + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); + + if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + + + offsetParent = offsetParent; + + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] + offsetParent[heightProp]; + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] + offsetParent[widthProp]; + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref4.x; + y = _ref4.y; + + if (gpuAcceleration) { + var _Object$assign; + + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); + } + + function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' + }; + + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); + } // eslint-disable-next-line import/no-unused-modules + + + const computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} + }; + + var passive = { + passive: true + }; + + function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; + } // eslint-disable-next-line import/no-unused-modules + + + const eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} + }; + + var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); + } + + var hash = { + start: 'end', + end: 'start' + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); + } + + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; + } + + function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + + function getViewportRect(element, strategy) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + var layoutViewport = isLayoutViewport(); + + if (layoutViewport || !layoutViewport && strategy === 'fixed') { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; + } + + // of the `` and `` rect bounds if horizontally scrollable + + function getDocumentRect(element) { + var _element$ownerDocumen; + + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + + if (getComputedStyle$1(body || html).direction === 'rtl') { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + + return { + width: width, + height: height, + x: x, + y: y + }; + } + + function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = getComputedStyle$1(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + + function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + + return getScrollParent(getParentNode(node)); + } + + /* + given a DOM element, return the list of all scroll parents, up the list of ancesors + until we get to the top window object. This list is what we attach scroll listeners + to, because if any of these parent elements scroll, we'll need to re-calculate the + reference element's position. + */ + + function listScrollParents(element, list) { + var _element$ownerDocumen; + + if (list === void 0) { + list = []; + } + + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))); + } + + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + + function getInnerBoundingClientRect(element, strategy) { + var rect = getBoundingClientRect(element, false, strategy === 'fixed'); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + + function getClientRectFromMixedType(element, clippingParent, strategy) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } // A "clipping parent" is an overflowable container with the characteristic of + // clipping (or hiding) overflowing elements with a position different from + // `initial` + + + function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + + if (!isElement(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 + + + return clippingParents.filter(function (clippingParent) { + return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); + } // Gets the maximum area that the element is visible in due to any number of + // clipping parents + + + function getClippingRect(element, boundary, rootBoundary, strategy) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent, strategy); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent, strategy)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + + function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + } + } + + return offsets; + } + + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$strategy = _options.strategy, + strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect + + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element + + if (elementContext === popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + + return overflowOffsets; + } + + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... + + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); + } + + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + + function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + + if (state.modifiersData[name]._skip) { + return; + } + + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + + var _basePlacement = getBasePlacement(placement); + + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + + checksMap.set(placement, checks); + } + + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; + + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + + if (_ret === "break") break; + } + } + + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } // eslint-disable-next-line import/no-unused-modules + + + const flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } + }; + + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); + } + + function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); + } // eslint-disable-next-line import/no-unused-modules + + + const hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide + }; + + function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + + function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + + state.modifiersData[name] = data; + } // eslint-disable-next-line import/no-unused-modules + + + const offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset + }; + + function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); + } // eslint-disable-next-line import/no-unused-modules + + + const popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} + }; + + function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; + } + + function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + + if (!popperOffsets) { + return; + } + + if (checkMainAxis) { + var _offsetModifierState$; + + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min$1 = offset + overflow[mainSide]; + var max$1 = offset - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds + + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) + + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + + if (checkAltAxis) { + var _offsetModifierState$2; + + var _mainSide = mainAxis === 'x' ? top : left; + + var _altSide = mainAxis === 'x' ? bottom : right; + + var _offset = popperOffsets[altAxis]; + + var _len = altAxis === 'y' ? 'height' : 'width'; + + var _min = _offset + overflow[_mainSide]; + + var _max = _offset - overflow[_altSide]; + + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + + state.modifiersData[name] = data; + } // eslint-disable-next-line import/no-unused-modules + + + const preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] + }; + + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } // Returns the composite rect of an element relative to its offsetParent. + // Composite means it takes into account transforms as well as layout. + + + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + + function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively + + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); + } + }); + return result; + } + + function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order(modifiers); // order based on phase + + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); + } + + function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + + return pending; + }; + } + + function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values + + return Object.keys(merged).map(function (key) { + return merged[key]; + }); + } + + var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' + }; + + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); + } + + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers + + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); // Validate the provided modifiers so that the consumer will get warned + + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore + + if (!areValidElements(reference, popper)) { + + return; + } // Store the reference and popper rects to be read by modifiers + + + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect + + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` + + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + + for (var index = 0; index < state.orderedModifiers.length; index++) { + + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + + if (!areValidElements(reference, popper)) { + + return instance; + } + + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref3) { + var name = _ref3.name, + _ref3$options = _ref3.options, + options = _ref3$options === void 0 ? {} : _ref3$options, + effect = _ref3.effect; + + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + + var noopFn = function noopFn() {}; + + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + + return instance; + }; + } + var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules + + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); // eslint-disable-next-line import/no-unused-modules + + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers + }); // eslint-disable-next-line import/no-unused-modules + + const Popper = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ + __proto__: null, + popperGenerator, + detectOverflow, + createPopperBase: createPopper$2, + createPopper, + createPopperLite: createPopper$1, + top, + bottom, + right, + left, + auto, + basePlacements, + start, + end, + clippingParents, + viewport, + popper, + reference, + variationPlacements, + placements, + beforeRead, + read, + afterRead, + beforeMain, + main, + afterMain, + beforeWrite, + write, + afterWrite, + modifierPhases, + applyStyles: applyStyles$1, + arrow: arrow$1, + computeStyles: computeStyles$1, + eventListeners, + flip: flip$1, + hide: hide$1, + offset: offset$1, + popperOffsets: popperOffsets$1, + preventOverflow: preventOverflow$1 + }, Symbol.toStringTag, { value: 'Module' })); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$a = 'dropdown'; + const DATA_KEY$6 = 'bs.dropdown'; + const EVENT_KEY$6 = `.${DATA_KEY$6}`; + const DATA_API_KEY$3 = '.data-api'; + const ESCAPE_KEY$2 = 'Escape'; + const TAB_KEY$1 = 'Tab'; + const ARROW_UP_KEY$1 = 'ArrowUp'; + const ARROW_DOWN_KEY$1 = 'ArrowDown'; + const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button + + const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; + const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; + const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; + const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; + const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; + const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; + const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; + const CLASS_NAME_SHOW$6 = 'show'; + const CLASS_NAME_DROPUP = 'dropup'; + const CLASS_NAME_DROPEND = 'dropend'; + const CLASS_NAME_DROPSTART = 'dropstart'; + const CLASS_NAME_DROPUP_CENTER = 'dropup-center'; + const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; + const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; + const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; + const SELECTOR_MENU = '.dropdown-menu'; + const SELECTOR_NAVBAR = '.navbar'; + const SELECTOR_NAVBAR_NAV = '.navbar-nav'; + const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; + const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; + const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; + const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; + const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; + const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; + const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; + const PLACEMENT_TOPCENTER = 'top'; + const PLACEMENT_BOTTOMCENTER = 'bottom'; + const Default$9 = { + autoClose: true, + boundary: 'clippingParents', + display: 'dynamic', + offset: [0, 2], + popperConfig: null, + reference: 'toggle' + }; + const DefaultType$9 = { + autoClose: '(boolean|string)', + boundary: '(string|element)', + display: 'string', + offset: '(array|string|function)', + popperConfig: '(null|object|function)', + reference: '(string|element|object)' + }; + /** + * Class definition + */ + + class Dropdown extends BaseComponent { + constructor(element, config) { + super(element, config); + this._popper = null; + this._parent = this._element.parentNode; // dropdown wrapper + // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/ + + this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); + this._inNavbar = this._detectNavbar(); + } // Getters + + + static get Default() { + return Default$9; + } + + static get DefaultType() { + return DefaultType$9; + } + + static get NAME() { + return NAME$a; + } // Public + + + toggle() { + return this._isShown() ? this.hide() : this.show(); + } + + show() { + if (isDisabled(this._element) || this._isShown()) { + return; + } + + const relatedTarget = { + relatedTarget: this._element + }; + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); + + if (showEvent.defaultPrevented) { + return; + } + + this._createPopper(); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { + for (const element of [].concat(...document.body.children)) { + EventHandler.on(element, 'mouseover', noop); + } + } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + this._menu.classList.add(CLASS_NAME_SHOW$6); + + this._element.classList.add(CLASS_NAME_SHOW$6); + + EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); + } + + hide() { + if (isDisabled(this._element) || !this._isShown()) { + return; + } + + const relatedTarget = { + relatedTarget: this._element + }; + + this._completeHide(relatedTarget); + } + + dispose() { + if (this._popper) { + this._popper.destroy(); + } + + super.dispose(); + } + + update() { + this._inNavbar = this._detectNavbar(); + + if (this._popper) { + this._popper.update(); + } + } // Private + + + _completeHide(relatedTarget) { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); + + if (hideEvent.defaultPrevented) { + return; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop); + } + } + + if (this._popper) { + this._popper.destroy(); + } + + this._menu.classList.remove(CLASS_NAME_SHOW$6); + + this._element.classList.remove(CLASS_NAME_SHOW$6); + + this._element.setAttribute('aria-expanded', 'false'); + + Manipulator.removeDataAttribute(this._menu, 'popper'); + EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); + } + + _getConfig(config) { + config = super._getConfig(config); + + if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { + // Popper virtual elements require a getBoundingClientRect method + throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); + } + + return config; + } + + _createPopper() { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); + } + + let referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = this._parent; + } else if (isElement$1(this._config.reference)) { + referenceElement = getElement(this._config.reference); + } else if (typeof this._config.reference === 'object') { + referenceElement = this._config.reference; + } + + const popperConfig = this._getPopperConfig(); + + this._popper = createPopper(referenceElement, this._menu, popperConfig); + } + + _isShown() { + return this._menu.classList.contains(CLASS_NAME_SHOW$6); + } + + _getPlacement() { + const parentDropdown = this._parent; + + if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { + return PLACEMENT_RIGHT; + } + + if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { + return PLACEMENT_LEFT; + } + + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { + return PLACEMENT_TOPCENTER; + } + + if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { + return PLACEMENT_BOTTOMCENTER; + } // We need to trim the value because custom properties can also include spaces + + + const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; + + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { + return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; + } + + return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; + } + + _detectNavbar() { + return this._element.closest(SELECTOR_NAVBAR) !== null; + } + + _getOffset() { + const { + offset + } = this._config; + + if (typeof offset === 'string') { + return offset.split(',').map(value => Number.parseInt(value, 10)); + } + + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + + return offset; + } + + _getPopperConfig() { + const defaultBsPopperConfig = { + placement: this._getPlacement(), + modifiers: [{ + name: 'preventOverflow', + options: { + boundary: this._config.boundary + } + }, { + name: 'offset', + options: { + offset: this._getOffset() + } + }] + }; // Disable Popper if we have a static display or Dropdown is in Navbar + + if (this._inNavbar || this._config.display === 'static') { + Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove + + defaultBsPopperConfig.modifiers = [{ + name: 'applyStyles', + enabled: false + }]; + } + + return { ...defaultBsPopperConfig, + ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) + }; + } + + _selectMenuItem({ + key, + target + }) { + const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)); + + if (!items.length) { + return; + } // if target isn't included in items (e.g. when expanding the dropdown) + // allow cycling to get the last item in case key equals ARROW_UP_KEY + + + getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Dropdown.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } + + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + }); + } + + static clearMenus(event) { + if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { + return; + } + + const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); + + for (const toggle of openToggles) { + const context = Dropdown.getInstance(toggle); + + if (!context || context._config.autoClose === false) { + continue; + } + + const composedPath = event.composedPath(); + const isMenuTarget = composedPath.includes(context._menu); + + if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { + continue; + } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu + + + if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { + continue; + } + + const relatedTarget = { + relatedTarget: context._element + }; + + if (event.type === 'click') { + relatedTarget.clickEvent = event; + } + + context._completeHide(relatedTarget); + } + } + + static dataApiKeydownHandler(event) { + // If not an UP | DOWN | ESCAPE key => not a dropdown command + // If input/textarea && if key is other than ESCAPE => not a dropdown command + const isInput = /input|textarea/i.test(event.target.tagName); + const isEscapeEvent = event.key === ESCAPE_KEY$2; + const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); + + if (!isUpOrDownEvent && !isEscapeEvent) { + return; + } + + if (isInput && !isEscapeEvent) { + return; + } + + event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/ + + const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); + const instance = Dropdown.getOrCreateInstance(getToggleButton); + + if (isUpOrDownEvent) { + event.stopPropagation(); + instance.show(); + + instance._selectMenuItem(event); + + return; + } + + if (instance._isShown()) { + // else is escape and we check if it is shown + event.stopPropagation(); + instance.hide(); + getToggleButton.focus(); + } + } + + } + /** + * Data API implementation + */ + + + EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); + EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); + EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); + EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); + EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { + event.preventDefault(); + Dropdown.getOrCreateInstance(this).toggle(); + }); + /** + * jQuery + */ + + defineJQueryPlugin(Dropdown); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): util/scrollBar.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; + const SELECTOR_STICKY_CONTENT = '.sticky-top'; + const PROPERTY_PADDING = 'padding-right'; + const PROPERTY_MARGIN = 'margin-right'; + /** + * Class definition + */ + + class ScrollBarHelper { + constructor() { + this._element = document.body; + } // Public + + + getWidth() { + // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes + const documentWidth = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - documentWidth); + } + + hide() { + const width = this.getWidth(); + + this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width + + + this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth + + + this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width); + + this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width); + } + + reset() { + this._resetElementAttributes(this._element, 'overflow'); + + this._resetElementAttributes(this._element, PROPERTY_PADDING); + + this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); + + this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); + } + + isOverflowing() { + return this.getWidth() > 0; + } // Private + + + _disableOverFlow() { + this._saveInitialAttribute(this._element, 'overflow'); + + this._element.style.overflow = 'hidden'; + } + + _setElementAttributes(selector, styleProperty, callback) { + const scrollbarWidth = this.getWidth(); + + const manipulationCallBack = element => { + if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { + return; + } + + this._saveInitialAttribute(element, styleProperty); + + const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); + element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); + }; + + this._applyManipulationCallback(selector, manipulationCallBack); + } + + _saveInitialAttribute(element, styleProperty) { + const actualValue = element.style.getPropertyValue(styleProperty); + + if (actualValue) { + Manipulator.setDataAttribute(element, styleProperty, actualValue); + } + } + + _resetElementAttributes(selector, styleProperty) { + const manipulationCallBack = element => { + const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero + + if (value === null) { + element.style.removeProperty(styleProperty); + return; + } + + Manipulator.removeDataAttribute(element, styleProperty); + element.style.setProperty(styleProperty, value); + }; + + this._applyManipulationCallback(selector, manipulationCallBack); + } + + _applyManipulationCallback(selector, callBack) { + if (isElement$1(selector)) { + callBack(selector); + return; + } + + for (const sel of SelectorEngine.find(selector, this._element)) { + callBack(sel); + } + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): util/backdrop.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$9 = 'backdrop'; + const CLASS_NAME_FADE$4 = 'fade'; + const CLASS_NAME_SHOW$5 = 'show'; + const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; + const Default$8 = { + className: 'modal-backdrop', + clickCallback: null, + isAnimated: false, + isVisible: true, + // if false, we use the backdrop helper without adding any element to the dom + rootElement: 'body' // give the choice to place backdrop under different elements + + }; + const DefaultType$8 = { + className: 'string', + clickCallback: '(function|null)', + isAnimated: 'boolean', + isVisible: 'boolean', + rootElement: '(element|string)' + }; + /** + * Class definition + */ + + class Backdrop extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + this._isAppended = false; + this._element = null; + } // Getters + + + static get Default() { + return Default$8; + } + + static get DefaultType() { + return DefaultType$8; + } + + static get NAME() { + return NAME$9; + } // Public + + + show(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + + this._append(); + + const element = this._getElement(); + + if (this._config.isAnimated) { + reflow(element); + } + + element.classList.add(CLASS_NAME_SHOW$5); + + this._emulateAnimation(() => { + execute(callback); + }); + } + + hide(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + + this._getElement().classList.remove(CLASS_NAME_SHOW$5); + + this._emulateAnimation(() => { + this.dispose(); + execute(callback); + }); + } + + dispose() { + if (!this._isAppended) { + return; + } + + EventHandler.off(this._element, EVENT_MOUSEDOWN); + + this._element.remove(); + + this._isAppended = false; + } // Private + + + _getElement() { + if (!this._element) { + const backdrop = document.createElement('div'); + backdrop.className = this._config.className; + + if (this._config.isAnimated) { + backdrop.classList.add(CLASS_NAME_FADE$4); + } + + this._element = backdrop; + } + + return this._element; + } + + _configAfterMerge(config) { + // use getElement() with the default "body" to get a fresh Element on each instantiation + config.rootElement = getElement(config.rootElement); + return config; + } + + _append() { + if (this._isAppended) { + return; + } + + const element = this._getElement(); + + this._config.rootElement.append(element); + + EventHandler.on(element, EVENT_MOUSEDOWN, () => { + execute(this._config.clickCallback); + }); + this._isAppended = true; + } + + _emulateAnimation(callback) { + executeAfterTransition(callback, this._getElement(), this._config.isAnimated); + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): util/focustrap.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$8 = 'focustrap'; + const DATA_KEY$5 = 'bs.focustrap'; + const EVENT_KEY$5 = `.${DATA_KEY$5}`; + const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; + const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; + const TAB_KEY = 'Tab'; + const TAB_NAV_FORWARD = 'forward'; + const TAB_NAV_BACKWARD = 'backward'; + const Default$7 = { + autofocus: true, + trapElement: null // The element to trap focus inside of + + }; + const DefaultType$7 = { + autofocus: 'boolean', + trapElement: 'element' + }; + /** + * Class definition + */ + + class FocusTrap extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + this._isActive = false; + this._lastTabNavDirection = null; + } // Getters + + + static get Default() { + return Default$7; + } + + static get DefaultType() { + return DefaultType$7; + } + + static get NAME() { + return NAME$8; + } // Public + + + activate() { + if (this._isActive) { + return; + } + + if (this._config.autofocus) { + this._config.trapElement.focus(); + } + + EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop + + EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event)); + EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); + this._isActive = true; + } + + deactivate() { + if (!this._isActive) { + return; + } + + this._isActive = false; + EventHandler.off(document, EVENT_KEY$5); + } // Private + + + _handleFocusin(event) { + const { + trapElement + } = this._config; + + if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { + return; + } + + const elements = SelectorEngine.focusableChildren(trapElement); + + if (elements.length === 0) { + trapElement.focus(); + } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { + elements[elements.length - 1].focus(); + } else { + elements[0].focus(); + } + } + + _handleKeydown(event) { + if (event.key !== TAB_KEY) { + return; + } + + this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$7 = 'modal'; + const DATA_KEY$4 = 'bs.modal'; + const EVENT_KEY$4 = `.${DATA_KEY$4}`; + const DATA_API_KEY$2 = '.data-api'; + const ESCAPE_KEY$1 = 'Escape'; + const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; + const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; + const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; + const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; + const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; + const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; + const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; + const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; + const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; + const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; + const CLASS_NAME_OPEN = 'modal-open'; + const CLASS_NAME_FADE$3 = 'fade'; + const CLASS_NAME_SHOW$4 = 'show'; + const CLASS_NAME_STATIC = 'modal-static'; + const OPEN_SELECTOR$1 = '.modal.show'; + const SELECTOR_DIALOG = '.modal-dialog'; + const SELECTOR_MODAL_BODY = '.modal-body'; + const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; + const Default$6 = { + backdrop: true, + focus: true, + keyboard: true + }; + const DefaultType$6 = { + backdrop: '(boolean|string)', + focus: 'boolean', + keyboard: 'boolean' + }; + /** + * Class definition + */ + + class Modal extends BaseComponent { + constructor(element, config) { + super(element, config); + this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + this._isShown = false; + this._isTransitioning = false; + this._scrollBar = new ScrollBarHelper(); + + this._addEventListeners(); + } // Getters + + + static get Default() { + return Default$6; + } + + static get DefaultType() { + return DefaultType$6; + } + + static get NAME() { + return NAME$7; + } // Public + + + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + + show(relatedTarget) { + if (this._isShown || this._isTransitioning) { + return; + } + + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { + relatedTarget + }); + + if (showEvent.defaultPrevented) { + return; + } + + this._isShown = true; + this._isTransitioning = true; + + this._scrollBar.hide(); + + document.body.classList.add(CLASS_NAME_OPEN); + + this._adjustDialog(); + + this._backdrop.show(() => this._showElement(relatedTarget)); + } + + hide() { + if (!this._isShown || this._isTransitioning) { + return; + } + + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); + + if (hideEvent.defaultPrevented) { + return; + } + + this._isShown = false; + this._isTransitioning = true; + + this._focustrap.deactivate(); + + this._element.classList.remove(CLASS_NAME_SHOW$4); + + this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); + } + + dispose() { + for (const htmlElement of [window, this._dialog]) { + EventHandler.off(htmlElement, EVENT_KEY$4); + } + + this._backdrop.dispose(); + + this._focustrap.deactivate(); + + super.dispose(); + } + + handleUpdate() { + this._adjustDialog(); + } // Private + + + _initializeBackDrop() { + return new Backdrop({ + isVisible: Boolean(this._config.backdrop), + // 'static' option will be translated to true, and booleans will keep their value, + isAnimated: this._isAnimated() + }); + } + + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + + _showElement(relatedTarget) { + // try to append dynamic modal + if (!document.body.contains(this._element)) { + document.body.append(this._element); + } + + this._element.style.display = 'block'; + + this._element.removeAttribute('aria-hidden'); + + this._element.setAttribute('aria-modal', true); + + this._element.setAttribute('role', 'dialog'); + + this._element.scrollTop = 0; + const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); + + if (modalBody) { + modalBody.scrollTop = 0; + } + + reflow(this._element); + + this._element.classList.add(CLASS_NAME_SHOW$4); + + const transitionComplete = () => { + if (this._config.focus) { + this._focustrap.activate(); + } + + this._isTransitioning = false; + EventHandler.trigger(this._element, EVENT_SHOWN$4, { + relatedTarget + }); + }; + + this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); + } + + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { + if (event.key !== ESCAPE_KEY$1) { + return; + } + + if (this._config.keyboard) { + event.preventDefault(); + this.hide(); + return; + } + + this._triggerBackdropTransition(); + }); + EventHandler.on(window, EVENT_RESIZE$1, () => { + if (this._isShown && !this._isTransitioning) { + this._adjustDialog(); + } + }); + EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { + // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks + EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { + if (this._element !== event.target || this._element !== event2.target) { + return; + } + + if (this._config.backdrop === 'static') { + this._triggerBackdropTransition(); + + return; + } + + if (this._config.backdrop) { + this.hide(); + } + }); + }); + } + + _hideModal() { + this._element.style.display = 'none'; + + this._element.setAttribute('aria-hidden', true); + + this._element.removeAttribute('aria-modal'); + + this._element.removeAttribute('role'); + + this._isTransitioning = false; + + this._backdrop.hide(() => { + document.body.classList.remove(CLASS_NAME_OPEN); + + this._resetAdjustments(); + + this._scrollBar.reset(); + + EventHandler.trigger(this._element, EVENT_HIDDEN$4); + }); + } + + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_FADE$3); + } + + _triggerBackdropTransition() { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); + + if (hideEvent.defaultPrevented) { + return; + } + + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed + + if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { + return; + } + + if (!isModalOverflowing) { + this._element.style.overflowY = 'hidden'; + } + + this._element.classList.add(CLASS_NAME_STATIC); + + this._queueCallback(() => { + this._element.classList.remove(CLASS_NAME_STATIC); + + this._queueCallback(() => { + this._element.style.overflowY = initialOverflowY; + }, this._dialog); + }, this._dialog); + + this._element.focus(); + } + /** + * The following methods are used to handle overflowing modals + */ + + + _adjustDialog() { + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + const scrollbarWidth = this._scrollBar.getWidth(); + + const isBodyOverflowing = scrollbarWidth > 0; + + if (isBodyOverflowing && !isModalOverflowing) { + const property = isRTL() ? 'paddingLeft' : 'paddingRight'; + this._element.style[property] = `${scrollbarWidth}px`; + } + + if (!isBodyOverflowing && isModalOverflowing) { + const property = isRTL() ? 'paddingRight' : 'paddingLeft'; + this._element.style[property] = `${scrollbarWidth}px`; + } + } + + _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } // Static + + + static jQueryInterface(config, relatedTarget) { + return this.each(function () { + const data = Modal.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } + + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](relatedTarget); + }); + } + + } + /** + * Data API implementation + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { + const target = getElementFromSelector(this); + + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + EventHandler.one(target, EVENT_SHOW$4, showEvent => { + if (showEvent.defaultPrevented) { + // only register focus restorer if modal will actually get shown + return; + } + + EventHandler.one(target, EVENT_HIDDEN$4, () => { + if (isVisible(this)) { + this.focus(); + } + }); + }); // avoid conflict when clicking modal toggler while another one is open + + const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); + + if (alreadyOpen) { + Modal.getInstance(alreadyOpen).hide(); + } + + const data = Modal.getOrCreateInstance(target); + data.toggle(this); + }); + enableDismissTrigger(Modal); + /** + * jQuery + */ + + defineJQueryPlugin(Modal); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): offcanvas.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$6 = 'offcanvas'; + const DATA_KEY$3 = 'bs.offcanvas'; + const EVENT_KEY$3 = `.${DATA_KEY$3}`; + const DATA_API_KEY$1 = '.data-api'; + const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; + const ESCAPE_KEY = 'Escape'; + const CLASS_NAME_SHOW$3 = 'show'; + const CLASS_NAME_SHOWING$1 = 'showing'; + const CLASS_NAME_HIDING = 'hiding'; + const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; + const OPEN_SELECTOR = '.offcanvas.show'; + const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; + const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; + const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; + const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; + const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; + const EVENT_RESIZE = `resize${EVENT_KEY$3}`; + const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; + const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; + const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; + const Default$5 = { + backdrop: true, + keyboard: true, + scroll: false + }; + const DefaultType$5 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + scroll: 'boolean' + }; + /** + * Class definition + */ + + class Offcanvas extends BaseComponent { + constructor(element, config) { + super(element, config); + this._isShown = false; + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + + this._addEventListeners(); + } // Getters + + + static get Default() { + return Default$5; + } + + static get DefaultType() { + return DefaultType$5; + } + + static get NAME() { + return NAME$6; + } // Public + + + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + + show(relatedTarget) { + if (this._isShown) { + return; + } + + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { + relatedTarget + }); + + if (showEvent.defaultPrevented) { + return; + } + + this._isShown = true; + + this._backdrop.show(); + + if (!this._config.scroll) { + new ScrollBarHelper().hide(); + } + + this._element.setAttribute('aria-modal', true); + + this._element.setAttribute('role', 'dialog'); + + this._element.classList.add(CLASS_NAME_SHOWING$1); + + const completeCallBack = () => { + if (!this._config.scroll || this._config.backdrop) { + this._focustrap.activate(); + } + + this._element.classList.add(CLASS_NAME_SHOW$3); + + this._element.classList.remove(CLASS_NAME_SHOWING$1); + + EventHandler.trigger(this._element, EVENT_SHOWN$3, { + relatedTarget + }); + }; + + this._queueCallback(completeCallBack, this._element, true); + } + + hide() { + if (!this._isShown) { + return; + } + + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); + + if (hideEvent.defaultPrevented) { + return; + } + + this._focustrap.deactivate(); + + this._element.blur(); + + this._isShown = false; + + this._element.classList.add(CLASS_NAME_HIDING); + + this._backdrop.hide(); + + const completeCallback = () => { + this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); + + this._element.removeAttribute('aria-modal'); + + this._element.removeAttribute('role'); + + if (!this._config.scroll) { + new ScrollBarHelper().reset(); + } + + EventHandler.trigger(this._element, EVENT_HIDDEN$3); + }; + + this._queueCallback(completeCallback, this._element, true); + } + + dispose() { + this._backdrop.dispose(); + + this._focustrap.deactivate(); + + super.dispose(); + } // Private + + + _initializeBackDrop() { + const clickCallback = () => { + if (this._config.backdrop === 'static') { + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + return; + } + + this.hide(); + }; // 'static' option will be translated to true, and booleans will keep their value + + + const isVisible = Boolean(this._config.backdrop); + return new Backdrop({ + className: CLASS_NAME_BACKDROP, + isVisible, + isAnimated: true, + rootElement: this._element.parentNode, + clickCallback: isVisible ? clickCallback : null + }); + } + + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { + if (event.key !== ESCAPE_KEY) { + return; + } + + if (!this._config.keyboard) { + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + return; + } + + this.hide(); + }); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Offcanvas.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } + + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](this); + }); + } + + } + /** + * Data API implementation + */ + + + EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { + const target = getElementFromSelector(this); + + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + + if (isDisabled(this)) { + return; + } + + EventHandler.one(target, EVENT_HIDDEN$3, () => { + // focus on trigger when it is closed + if (isVisible(this)) { + this.focus(); + } + }); // avoid conflict when clicking a toggler of an offcanvas, while another is open + + const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); + + if (alreadyOpen && alreadyOpen !== target) { + Offcanvas.getInstance(alreadyOpen).hide(); + } + + const data = Offcanvas.getOrCreateInstance(target); + data.toggle(this); + }); + EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { + for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { + Offcanvas.getOrCreateInstance(selector).show(); + } + }); + EventHandler.on(window, EVENT_RESIZE, () => { + for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { + if (getComputedStyle(element).position !== 'fixed') { + Offcanvas.getOrCreateInstance(element).hide(); + } + } + }); + enableDismissTrigger(Offcanvas); + /** + * jQuery + */ + + defineJQueryPlugin(Offcanvas); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): util/sanitizer.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); + const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + /** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts + */ + + const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; + /** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts + */ + + const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; + + const allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue)); + } + + return true; + } // Check if a regular expression validates the attribute. + + + return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); + }; + + 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: [], + div: [], + 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: [] + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + + if (sanitizeFunction && typeof sanitizeFunction === 'function') { + return sanitizeFunction(unsafeHtml); + } + + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + const elements = [].concat(...createdDocument.body.querySelectorAll('*')); + + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); + + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + + return createdDocument.body.innerHTML; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): util/template-factory.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$5 = 'TemplateFactory'; + const Default$4 = { + allowList: DefaultAllowlist, + content: {}, + // { selector : text , selector2 : text2 , } + extraClass: '', + html: false, + sanitize: true, + sanitizeFn: null, + template: '

' + }; + const DefaultType$4 = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }; + const DefaultContentType = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + /** + * Class definition + */ + + class TemplateFactory extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + } // Getters + + + static get Default() { + return Default$4; + } + + static get DefaultType() { + return DefaultType$4; + } + + static get NAME() { + return NAME$5; + } // Public + + + getContent() { + return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean); + } + + hasContent() { + return this.getContent().length > 0; + } + + changeContent(content) { + this._checkContent(content); + + this._config.content = { ...this._config.content, + ...content + }; + return this; + } + + toHtml() { + const templateWrapper = document.createElement('div'); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + + for (const [selector, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector); + } + + const template = templateWrapper.children[0]; + + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + + if (extraClass) { + template.classList.add(...extraClass.split(' ')); + } + + return template; + } // Private + + + _typeCheckConfig(config) { + super._typeCheckConfig(config); + + this._checkContent(config.content); + } + + _checkContent(arg) { + for (const [selector, content] of Object.entries(arg)) { + super._typeCheckConfig({ + selector, + entry: content + }, DefaultContentType); + } + } + + _setContent(template, content, selector) { + const templateElement = SelectorEngine.findOne(selector, template); + + if (!templateElement) { + return; + } + + content = this._resolvePossibleFunction(content); + + if (!content) { + templateElement.remove(); + return; + } + + if (isElement$1(content)) { + this._putElementInTemplate(getElement(content), templateElement); + + return; + } + + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content); + return; + } + + templateElement.textContent = content; + } + + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + + _resolvePossibleFunction(arg) { + return typeof arg === 'function' ? arg(this) : arg; + } + + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ''; + templateElement.append(element); + return; + } + + templateElement.textContent = element.textContent; + } + + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$4 = 'tooltip'; + const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); + const CLASS_NAME_FADE$2 = 'fade'; + const CLASS_NAME_MODAL = 'modal'; + const CLASS_NAME_SHOW$2 = 'show'; + const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; + const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + const EVENT_MODAL_HIDE = 'hide.bs.modal'; + const TRIGGER_HOVER = 'hover'; + const TRIGGER_FOCUS = 'focus'; + const TRIGGER_CLICK = 'click'; + const TRIGGER_MANUAL = 'manual'; + const EVENT_HIDE$2 = 'hide'; + const EVENT_HIDDEN$2 = 'hidden'; + const EVENT_SHOW$2 = 'show'; + const EVENT_SHOWN$2 = 'shown'; + const EVENT_INSERTED = 'inserted'; + const EVENT_CLICK$1 = 'click'; + const EVENT_FOCUSIN$1 = 'focusin'; + const EVENT_FOCUSOUT$1 = 'focusout'; + const EVENT_MOUSEENTER = 'mouseenter'; + const EVENT_MOUSELEAVE = 'mouseleave'; + const AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: isRTL() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: isRTL() ? 'right' : 'left' + }; + const Default$3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: 'clippingParents', + container: false, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: false, + offset: [0, 0], + placement: 'top', + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: '', + trigger: 'hover focus' + }; + const DefaultType$3 = { + allowList: 'object', + animation: 'boolean', + boundary: '(string|element)', + container: '(string|element|boolean)', + customClass: '(string|function)', + delay: '(number|object)', + fallbackPlacements: 'array', + html: 'boolean', + offset: '(array|string|function)', + placement: '(string|function)', + popperConfig: '(null|object|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + selector: '(string|boolean)', + template: 'string', + title: '(string|element|function)', + trigger: 'string' + }; + /** + * Class definition + */ + + class Tooltip extends BaseComponent { + constructor(element, config) { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); + } + + super(element, config); // Private + + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; // Protected + + this.tip = null; + + this._setListeners(); + + if (!this._config.selector) { + this._fixTitle(); + } + } // Getters + + + static get Default() { + return Default$3; + } + + static get DefaultType() { + return DefaultType$3; + } + + static get NAME() { + return NAME$4; + } // Public + + + enable() { + this._isEnabled = true; + } + + disable() { + this._isEnabled = false; + } + + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + + toggle() { + if (!this._isEnabled) { + return; + } + + this._activeTrigger.click = !this._activeTrigger.click; + + if (this._isShown()) { + this._leave(); + + return; + } + + this._enter(); + } + + dispose() { + clearTimeout(this._timeout); + EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + + if (this._element.getAttribute('data-bs-original-title')) { + this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); + } + + this._disposePopper(); + + super.dispose(); + } + + show() { + if (this._element.style.display === 'none') { + throw new Error('Please use show on visible elements'); + } + + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + + const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); + const shadowRoot = findShadowRoot(this._element); + + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } // todo v6 remove this OR make it optional + + + this._disposePopper(); + + const tip = this._getTipElement(); + + this._element.setAttribute('aria-describedby', tip.getAttribute('id')); + + const { + container + } = this._config; + + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.on(element, 'mouseover', noop); + } + } + + const complete = () => { + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); + + if (this._isHovered === false) { + this._leave(); + } + + this._isHovered = false; + }; + + this._queueCallback(complete, this.tip, this._isAnimated()); + } + + hide() { + if (!this._isShown()) { + return; + } + + const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); + + if (hideEvent.defaultPrevented) { + return; + } + + const tip = this._getTipElement(); + + tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop); + } + } + + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; // it is a trick to support manual triggering + + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + + if (!this._isHovered) { + this._disposePopper(); + } + + this._element.removeAttribute('aria-describedby'); + + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); + }; + + this._queueCallback(complete, this.tip, this._isAnimated()); + } + + update() { + if (this._popper) { + this._popper.update(); + } + } // Protected + + + _isWithContent() { + return Boolean(this._getTitle()); + } + + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + + return this.tip; + } + + _createTipElement(content) { + const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6 + + + if (!tip) { + return null; + } + + tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only + + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute('id', tipId); + + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE$2); + } + + return tip; + } + + setContent(content) { + this._newContent = content; + + if (this._isShown()) { + this._disposePopper(); + + this.show(); + } + } + + _getTemplateFactory(content) { + if (this._templateFactory) { + this._templateFactory.changeContent(content); + } else { + this._templateFactory = new TemplateFactory({ ...this._config, + // the `content` var has to be after `this._config` + // to override config.content in case of popover + content, + extraClass: this._resolvePossibleFunction(this._config.customClass) + }); + } + + return this._templateFactory; + } + + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); + } // Private + + + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); + } + + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); + } + + _createPopper(tip) { + const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement; + const attachment = AttachmentMap[placement.toUpperCase()]; + return createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + + _getOffset() { + const { + offset + } = this._config; + + if (typeof offset === 'string') { + return offset.split(',').map(value => Number.parseInt(value, 10)); + } + + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + + return offset; + } + + _resolvePossibleFunction(arg) { + return typeof arg === 'function' ? arg.call(this._element) : arg; + } + + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + modifiers: [{ + name: 'flip', + options: { + fallbackPlacements: this._config.fallbackPlacements + } + }, { + name: 'offset', + options: { + offset: this._getOffset() + } + }, { + name: 'preventOverflow', + options: { + boundary: this._config.boundary + } + }, { + name: 'arrow', + options: { + element: `.${this.constructor.NAME}-arrow` + } + }, { + name: 'preSetPlacement', + enabled: true, + phase: 'beforeMain', + fn: data => { + // Pre-set Popper's placement attribute in order to read the arrow sizes properly. + // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement + this._getTipElement().setAttribute('data-popper-placement', data.state.placement); + } + }] + }; + return { ...defaultBsPopperConfig, + ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) + }; + } + + _setListeners() { + const triggers = this._config.trigger.split(' '); + + for (const trigger of triggers) { + if (trigger === 'click') { + EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); + EventHandler.on(this._element, eventIn, this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + + context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + + context._enter(); + }); + EventHandler.on(this._element, eventOut, this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + + context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + + context._leave(); + }); + } + } + + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + + EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + + _fixTitle() { + const title = this._element.getAttribute('title'); + + if (!title) { + return; + } + + if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { + this._element.setAttribute('aria-label', title); + } + + this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility + + + this._element.removeAttribute('title'); + } + + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + + this._isHovered = true; + + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + + this._isHovered = false; + + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + + _getConfig(config) { + const dataAttributes = Manipulator.getDataAttributes(this._element); + + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + + config = { ...dataAttributes, + ...(typeof config === 'object' && config ? config : {}) + }; + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + + this._typeCheckConfig(config); + + return config; + } + + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + + return config; + } + + _getDelegateConfig() { + const config = {}; + + for (const key in this._config) { + if (this.constructor.Default[key] !== this._config[key]) { + config[key] = this._config[key]; + } + } + + config.selector = false; + config.trigger = 'manual'; // In the future can be replaced with: + // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) + // `Object.fromEntries(keysWithDifferentValues)` + + return config; + } + + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + + this._popper = null; + } + + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Tooltip.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } + + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + }); + } + + } + /** + * jQuery + */ + + + defineJQueryPlugin(Tooltip); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$3 = 'popover'; + const SELECTOR_TITLE = '.popover-header'; + const SELECTOR_CONTENT = '.popover-body'; + const Default$2 = { ...Tooltip.Default, + content: '', + offset: [0, 8], + placement: 'right', + template: '', + trigger: 'click' + }; + const DefaultType$2 = { ...Tooltip.DefaultType, + content: '(null|string|element|function)' + }; + /** + * Class definition + */ + + class Popover extends Tooltip { + // Getters + static get Default() { + return Default$2; + } + + static get DefaultType() { + return DefaultType$2; + } + + static get NAME() { + return NAME$3; + } // Overrides + + + _isWithContent() { + return this._getTitle() || this._getContent(); + } // Private + + + _getContentForTemplate() { + return { + [SELECTOR_TITLE]: this._getTitle(), + [SELECTOR_CONTENT]: this._getContent() + }; + } + + _getContent() { + return this._resolvePossibleFunction(this._config.content); + } // Static + + + static jQueryInterface(config) { + return this.each(function () { + const data = Popover.getOrCreateInstance(this, config); + + if (typeof config !== 'string') { + return; + } + + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + }); + } + + } + /** + * jQuery + */ + + + defineJQueryPlugin(Popover); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v5.2.3): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * Constants + */ + + const NAME$2 = 'scrollspy'; + const DATA_KEY$2 = 'bs.scrollspy'; + const EVENT_KEY$2 = `.${DATA_KEY$2}`; + const DATA_API_KEY = '.data-api'; + const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; + const EVENT_CLICK = `click${EVENT_KEY$2}`; + const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; + const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; + const CLASS_NAME_ACTIVE$1 = 'active'; + const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; + const SELECTOR_TARGET_LINKS = '[href]'; + const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; + const SELECTOR_NAV_LINKS = '.nav-link'; + const SELECTOR_NAV_ITEMS = '.nav-item'; + const SELECTOR_LIST_ITEMS = '.list-group-item'; + const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; + const SELECTOR_DROPDOWN = '.dropdown'; + const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; + const Default$1 = { + offset: null, + // TODO: v6 @deprecated, keep it for backwards compatibility reasons + rootMargin: '0px 0px -25%', + smoothScroll: false, + target: null, + threshold: [0.1, 0.5, 1] + }; + const DefaultType$1 = { + offset: '(number|null)', + // TODO v6 @deprecated, keep it for backwards compatibility reasons + rootMargin: 'string', + smoothScroll: 'boolean', + target: 'element', + threshold: 'array' + }; + /** + * Class definition + */ + + class ScrollSpy extends BaseComponent { + constructor(element, config) { + super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper + + this._targetLinks = new Map(); + this._observableSections = new Map(); + this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; + this._activeTarget = null; + this._observer = null; + this._previousScrollData = { + visibleEntryTop: 0, + parentScrollTop: 0 + }; + this.refresh(); // initialize + } // Getters + + + static get Default() { + return Default$1; + } + + static get DefaultType() { + return DefaultType$1; + } + + static get NAME() { + return NAME$2; + } // Public + + + refresh() { + this._initializeTargetsAndObservables(); + + this._maybeEnableSmoothScroll(); + + if (this._observer) { + this._observer.disconnect(); + } else { + this._observer = this._getNewObserver(); + } + + for (const section of this._observableSections.values()) { + this._observer.observe(section); + } + } + + dispose() { + this._observer.disconnect(); + + super.dispose(); + } // Private + + + _configAfterMerge(config) { + // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case + config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only + + config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; + + if (typeof config.threshold === 'string') { + config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); + } + + return config; + } + + _maybeEnableSmoothScroll() { + if (!this._config.smoothScroll) { + return; + } // unregister any previous listeners + + + EventHandler.off(this._config.target, EVENT_CLICK); + EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { + const observableSection = this._observableSections.get(event.target.hash); + + if (observableSection) { + event.preventDefault(); + const root = this._rootElement || window; + const height = observableSection.offsetTop - this._element.offsetTop; + + if (root.scrollTo) { + root.scrollTo({ + top: height, + behavior: 'smooth' + }); + return; + } // Chrome 60 doesn't support `scrollTo` + + + root.scrollTop = height; + } + }); + } + + _getNewObserver() { + const options = { + root: this._rootElement, + threshold: this._config.threshold, + rootMargin: this._config.rootMargin + }; + return new IntersectionObserver(entries => this._observerCallback(entries), options); + } // The logic of selection + + + _observerCallback(entries) { + const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); + + const activate = entry => { + this._previousScrollData.visibleEntryTop = entry.target.offsetTop; + + this._process(targetElement(entry)); + }; + + const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; + const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; + this._previousScrollData.parentScrollTop = parentScrollTop; + + for (const entry of entries) { + if (!entry.isIntersecting) { + this._activeTarget = null; + + this._clearActiveClass(targetElement(entry)); + + continue; + } + + const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop + + if (userScrollsDown && entryIsLowerThanPrevious) { + activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration + + if (!parentScrollTop) { + return; + } + + continue; + } // if we are scrolling up, pick the smallest offsetTop + + + if (!userScrollsDown && !entryIsLowerThanPrevious) { + activate(entry); + } + } + } + + _initializeTargetsAndObservables() { + this._targetLinks = new Map(); + this._observableSections = new Map(); + const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); + + for (const anchor of targetLinks) { + // ensure that the anchor has an id and is not disabled + if (!anchor.hash || isDisabled(anchor)) { + continue; + } + + const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible + + if (isVisible(observableSection)) { + this._targetLinks.set(anchor.hash, anchor); + + this._observableSections.set(anchor.hash, observableSection); + } + } + } + + _process(target) { + if (this._activeTarget === target) { + return; + } + + this._clearActiveClass(this._config.target); + + this._activeTarget = target; + target.classList.add(CLASS_NAME_ACTIVE$1); + + this._activateParents(target); + + EventHandler.trigger(this._element, EVENT_ACTIVATE, { + relatedTarget: target + }); + } + + _activateParents(target) { + // Activate dropdown parents + if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { + SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); + return; + } + + for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { + // Set triggered links parents as active + // With both - {% if request.user.is_authenticated %} - - {% endif %} + {# {% if request.user.is_authenticated %}#} + {# #} + {# {% endif %}#} @@ -76,7 +80,7 @@ email: forum@forum.com - + diff --git a/server/templates/base2.html b/server/templates/base2.html index 44345a6..bc24aa6 100644 --- a/server/templates/base2.html +++ b/server/templates/base2.html @@ -1,16 +1,20 @@ + + Forum - + + -
- logo Forum +
+ {% block content %} {% endblock %}
diff --git a/server/templates/categories_demo.html b/server/templates/categories_demo.html index a74674d..d6f5b7f 100644 --- a/server/templates/categories_demo.html +++ b/server/templates/categories_demo.html @@ -1,4 +1,4 @@ -{% extends 'base2.html' %} +{% extends 'base.html' %} {% block content %}

Categories

@@ -8,6 +8,7 @@

Categories

+ {% for cat in categories %} diff --git a/server/templates/home_page.html b/server/templates/home_page.html index 3ae7b0d..85c6616 100644 --- a/server/templates/home_page.html +++ b/server/templates/home_page.html @@ -1,4 +1,4 @@ -{% extends 'base2.html' %} +{% extends 'base.html' %} {% block content %}

Hello, Homepage here

diff --git a/server/templates/topics_demo.html b/server/templates/topics_demo.html index 4b7ff8c..614186d 100644 --- a/server/templates/topics_demo.html +++ b/server/templates/topics_demo.html @@ -1,20 +1,19 @@ -{% extends 'base2.html' %} +{% extends 'base.html' %} {% block content %} -

Categories

+

Topics

locked private
{{ cat.category_id }}
- - + + - - {% for topic in topics %} + {% for t in topics %} - - - - + + + + {% endfor %}
id titleuser idlockedauthorstatus
{{ topic.topic_id }}{{ topic.title }}{{ topic.user_id }}{{ topic.is_locked }}{{ t.topic_id }}{{ t.title }}{{ t.author }}{{ t.status }}
diff --git a/server/templates/users/user-register.html b/server/templates/users/user-register.html index 9059800..85bc441 100644 --- a/server/templates/users/user-register.html +++ b/server/templates/users/user-register.html @@ -6,30 +6,37 @@

REGISTER

-
- {% csrf_token %} + + {{ jinja2.csrf_token() }} + + + {% if form.username.errors %} +
{{ form.username.errors[0] }}
+ {% endif %} - {{ form.username.label }} - {{ form.username.errors }} - {{ form.username|placeholder:'username' }} + + + {% if form.email.errors %} +
{{ form.email.errors[0] }}
+ {% endif %} - {{ form.email.label }} - {{ form.email.errors }} - {{ form.email|placeholder:'some@email.com' }} + + + {% if form.password1.errors %} +
{{ form.password1.errors[0] }}
+ {% endif %} - {{ form.password1.label }} - {{ form.password1|placeholder:'password' }} - {{ form.password2.label }} - {{ form.password2|placeholder:'repeat password' }} - {{ form.password1.errors }} - {{ form.password2.errors }} + + + {% if form.password2.errors %} +
{{ form.password2.errors[0] }}
+ {% endif %} -
-

Don't have account? Login

+

Don't have account? Login

From d5dad214a36d12e2ab534fbdcc6c4a67dc387e56 Mon Sep 17 00:00:00 2001 From: miray-mustafov Date: Sat, 11 May 2024 18:10:38 +0300 Subject: [PATCH 4/5] users forms begin --- server/routers/users.py | 19 ++++++++---- server/templates/users/user-register.html | 38 ++++++----------------- 2 files changed, 23 insertions(+), 34 deletions(-) diff --git a/server/routers/users.py b/server/routers/users.py index 76161a9..d1e3d3b 100644 --- a/server/routers/users.py +++ b/server/routers/users.py @@ -1,5 +1,7 @@ from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi.security import OAuth2PasswordRequestForm + +import data.models.user from common.responses import SC from data.models.user import UserRegister, UserUpdate, UserChangePassword, UserDelete, TokenData from services import users_services @@ -13,8 +15,8 @@ users_router = APIRouter(prefix='/users', tags=['users']) -@users_router.post('/register', status_code=SC.Created, name='register') -def register_user(user: UserRegister): +@users_router.get('/register', status_code=SC.Created, name='register') +def register_user(request: Request,): # user: UserRegister """ - Register the user, if: - username is at least 4 chars and is not already taken @@ -22,12 +24,17 @@ def register_user(user: UserRegister): - email follows the example - First name and last name are not required upon registration """ - result = users_services.register(user) + # dummy_user = data.models.user.UserRegister( + # username='dummy', email='dummy@email.com', + # password1='dummy', password2='dummy') + # + # result = users_services.register(dummy_user) - if not isinstance(result, int): - raise HTTPException(status_code=SC.BadRequest, detail=result.msg) + # if not isinstance(result, int): + # raise HTTPException(status_code=SC.BadRequest, detail=result.msg) - return RedirectResponse(url=f"{users_router.url_path_for('login')}", status_code=status.HTTP_302_FOUND) + return templates.TemplateResponse(request=request, name="users/user-register.html") + # return RedirectResponse(url=f"{users_router.url_path_for('login')}", status_code=status.HTTP_302_FOUND) @users_router.post('/login', name='login') diff --git a/server/templates/users/user-register.html b/server/templates/users/user-register.html index 85bc441..9686542 100644 --- a/server/templates/users/user-register.html +++ b/server/templates/users/user-register.html @@ -1,5 +1,4 @@ {% extends 'base.html' %} -{% load custom_filters %} {% block content %} @@ -7,34 +6,17 @@

REGISTER

- {{ jinja2.csrf_token() }} - - - {% if form.username.errors %} -
{{ form.username.errors[0] }}
- {% endif %} +{# {{ jinja2.csrf_token() }}#} + form +{# #} +{# #} +{# {% if form.username.errors %}#} +{#
{{ form.username.errors[0] }}
#} +{# {% endif %}#} - - - {% if form.email.errors %} -
{{ form.email.errors[0] }}
- {% endif %} - - - - {% if form.password1.errors %} -
{{ form.password1.errors[0] }}
- {% endif %} - - - - {% if form.password2.errors %} -
{{ form.password2.errors[0] }}
- {% endif %} - -
- -
+{#
#} +{# #} +{#
#}

Don't have account? Login

From 4ae4cf826c475822888c58d871a15289dad783a2 Mon Sep 17 00:00:00 2001 From: miray-mustafov Date: Fri, 17 May 2024 13:03:34 +0300 Subject: [PATCH 5/5] a --- server/routers/users.py | 2 +- server/services/categories_services.py | 2 +- server/templates/users/user-register.html | 24 +++++++++++++---------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/server/routers/users.py b/server/routers/users.py index d1e3d3b..bf7a4bb 100644 --- a/server/routers/users.py +++ b/server/routers/users.py @@ -16,7 +16,7 @@ @users_router.get('/register', status_code=SC.Created, name='register') -def register_user(request: Request,): # user: UserRegister +def register_user(request: Request, ): # user: UserRegister """ - Register the user, if: - username is at least 4 chars and is not already taken diff --git a/server/services/categories_services.py b/server/services/categories_services.py index 98bf2e2..9c9c083 100644 --- a/server/services/categories_services.py +++ b/server/services/categories_services.py @@ -84,7 +84,7 @@ def update_user_access_level(user_id: int, category_id: int, access: bool) -> No def is_user_in(user_id: int, category_id: int) -> bool: data = read_query( - '''SELECT COUNT_1(*) FROM users_categories_permissions + '''SELECT COUNT(*) FROM users_categories_permissions WHERE user_id = ? AND category_id = ?''', (user_id, category_id,) ) return data[0][0] > 0 diff --git a/server/templates/users/user-register.html b/server/templates/users/user-register.html index 9686542..66e1dcf 100644 --- a/server/templates/users/user-register.html +++ b/server/templates/users/user-register.html @@ -5,18 +5,22 @@

REGISTER

-
-{# {{ jinja2.csrf_token() }}#} + form -{# #} -{# #} -{# {% if form.username.errors %}#} -{#
{{ form.username.errors[0] }}
#} -{# {% endif %}#} +
-{#
#} -{# #} -{#
#} + {# {{ jinja2.csrf_token() }}#} + {# #} + {# #} + {# {% if form.username.errors %}#} + {#
{{ form.username.errors[0] }}
#} + {# {% endif %}#} + + {#
#} + {# #} + {#
#}

Don't have account? Login