From 9b4db3cd7f082cf3256bdf9e59e4b630942a6f0f Mon Sep 17 00:00:00 2001 From: JBBianchi Date: Fri, 28 Jun 2024 18:33:53 +0200 Subject: [PATCH] feat(Dashboard): added workflow instance details view (wip) Signed-off-by: Jean-Baptiste Bianchi --- .../CorrelationContextDetails.razor | 29 + .../DocumentDetails/DocumentDetails.razor | 147 + .../State.cs | 12 +- .../Components/DocumentDetails/Store.cs | 338 + .../HorizontalCollapsible.razor | 29 +- .../Components/Layout/MainLayout.razor | 12 +- .../ReferenceDetails/ReferenceDetails.razor | 120 - .../ResourceDetails/ResourceDetails.razor | 2 +- .../TaskInstanceDetails.razor | 29 + .../WorkflowInstanceDetails.razor | 235 + .../WorkflowInstanceDetails.razor.css | 3 + .../WorkflowInstanceDetails.razor.min.css | 1 + .../WorkflowInstanceDetails.razor.scss | 5 + .../WorkflowInstancesList.razor | 8 +- .../Synapse.Dashboard/Pages/About/View.razor | 2 +- .../Pages/Correlations/List/View.razor | 2 +- .../Pages/Correlators/List/View.razor | 2 +- .../Pages/Namespaces/List/View.razor | 2 +- .../Pages/Operators/List/View.razor | 2 +- .../Pages/Users/Profile.razor | 2 +- .../Pages/WorkflowInstances/List/View.razor | 19 +- .../Pages/Workflows/Details/State.cs | 5 + .../Pages/Workflows/Details/Store.cs | 72 +- .../Pages/Workflows/Details/View.razor | 100 +- .../Pages/Workflows/List/View.razor | 2 +- .../Synapse.Dashboard.csproj | 10 + .../Synapse.Dashboard/compilerconfig.json | 4 + src/dashboard/Synapse.Dashboard/libman.json | 13 +- .../Synapse.Dashboard/wwwroot/css/app.css | 1490 +- .../Synapse.Dashboard/wwwroot/css/app.min.css | 6 +- .../Synapse.Dashboard/wwwroot/css/app.scss | 4 - .../wwwroot/css/horizontal-collapse.scss | 14 + .../wwwroot/css/theme/_variables.scss | 81 +- .../wwwroot/css/theme/theme.scss | 4 +- .../wwwroot/lib/bootstrap/LICENSE | 2 +- .../wwwroot/lib/bootstrap/README.md | 19 +- .../lib/bootstrap/dist/js/bootstrap.bundle.js | 569 +- .../bootstrap/dist/js/bootstrap.bundle.js.map | 2 +- .../bootstrap/dist/js/bootstrap.bundle.min.js | 6 +- .../dist/js/bootstrap.bundle.min.js.map | 2 +- .../lib/bootstrap/dist/js/bootstrap.esm.js | 485 +- .../bootstrap/dist/js/bootstrap.esm.js.map | 2 +- .../bootstrap/dist/js/bootstrap.esm.min.js | 6 +- .../dist/js/bootstrap.esm.min.js.map | 2 +- .../lib/bootstrap/dist/js/bootstrap.js | 488 +- .../lib/bootstrap/dist/js/bootstrap.js.map | 2 +- .../lib/bootstrap/dist/js/bootstrap.min.js | 6 +- .../bootstrap/dist/js/bootstrap.min.js.map | 2 +- .../wwwroot/lib/bootstrap/package.json | 121 +- .../lib/bootstrap/scss/_accordion.scss | 22 +- .../wwwroot/lib/bootstrap/scss/_alert.scss | 4 +- .../lib/bootstrap/scss/_button-group.scss | 4 +- .../wwwroot/lib/bootstrap/scss/_buttons.scss | 15 +- .../wwwroot/lib/bootstrap/scss/_card.scss | 1 + .../wwwroot/lib/bootstrap/scss/_carousel.scss | 24 +- .../wwwroot/lib/bootstrap/scss/_close.scss | 2 + .../lib/bootstrap/scss/_functions.scss | 2 +- .../wwwroot/lib/bootstrap/scss/_grid.scss | 6 + .../wwwroot/lib/bootstrap/scss/_helpers.scss | 2 + .../lib/bootstrap/scss/_list-group.scss | 23 +- .../wwwroot/lib/bootstrap/scss/_maps.scss | 87 +- .../wwwroot/lib/bootstrap/scss/_modal.scss | 1 - .../wwwroot/lib/bootstrap/scss/_nav.scss | 59 +- .../wwwroot/lib/bootstrap/scss/_navbar.scss | 13 +- .../lib/bootstrap/scss/_offcanvas.scss | 5 +- .../lib/bootstrap/scss/_pagination.scss | 2 +- .../wwwroot/lib/bootstrap/scss/_reboot.scss | 11 +- .../wwwroot/lib/bootstrap/scss/_root.scss | 98 +- .../wwwroot/lib/bootstrap/scss/_tables.scss | 31 +- .../wwwroot/lib/bootstrap/scss/_tooltip.scss | 9 +- .../lib/bootstrap/scss/_utilities.scss | 84 +- .../lib/bootstrap/scss/_variables-dark.scss | 75 +- .../lib/bootstrap/scss/_variables.scss | 232 +- .../lib/bootstrap/scss/bootstrap-grid.scss | 4 - .../scss/forms/_floating-labels.scss | 35 +- .../lib/bootstrap/scss/forms/_form-check.scss | 5 +- .../bootstrap/scss/forms/_form-control.scss | 21 +- .../lib/bootstrap/scss/forms/_form-range.scss | 6 +- .../bootstrap/scss/forms/_form-select.scss | 3 +- .../bootstrap/scss/forms/_input-group.scss | 2 +- .../lib/bootstrap/scss/helpers/_color-bg.scss | 5 +- .../scss/helpers/_colored-links.scss | 22 +- .../bootstrap/scss/helpers/_focus-ring.scss | 5 + .../bootstrap/scss/helpers/_icon-link.scss | 25 + .../lib/bootstrap/scss/helpers/_vr.scss | 2 +- .../lib/bootstrap/scss/mixins/_banner.scss | 4 +- .../lib/bootstrap/scss/mixins/_forms.scss | 14 +- .../lib/bootstrap/scss/mixins/_grid.scss | 4 +- .../bootstrap/scss/mixins/_list-group.scss | 1 - .../lib/bootstrap/scss/mixins/_utilities.scss | 2 +- .../scss/mixins/_visually-hidden.scss | 6 +- .../lib/bootstrap/scss/vendor/_rfs.scss | 52 +- .../Synapse.Dashboard/wwwroot/lib/d3/LICENSE | 13 + .../wwwroot/lib/d3/dist/d3.js | 20617 ++++++++++++++++ .../wwwroot/lib/d3/dist/d3.min.js | 2 + .../lib/monaco-yaml-prebuilt/README.md | 2 +- .../lib/monaco-yaml-prebuilt/package.json | 6 +- .../wwwroot/lib/neuroglia/event-drops/LICENSE | 19 + .../lib/neuroglia/event-drops/dist/index.js | 2 + .../neuroglia/event-drops/dist/index.js.map | 1 + .../neuroglia/event-drops/dist/index.min.js | 8 + .../lib/neuroglia/event-drops/dist/style.css | 27 + .../neuroglia/event-drops/dist/style.min.css | 8 + 103 files changed, 24408 insertions(+), 1847 deletions(-) create mode 100644 src/dashboard/Synapse.Dashboard/Components/CorrelationContextDetails.razor create mode 100644 src/dashboard/Synapse.Dashboard/Components/DocumentDetails/DocumentDetails.razor rename src/dashboard/Synapse.Dashboard/Components/{ReferenceDetails => DocumentDetails}/State.cs (87%) create mode 100644 src/dashboard/Synapse.Dashboard/Components/DocumentDetails/Store.cs delete mode 100644 src/dashboard/Synapse.Dashboard/Components/ReferenceDetails/ReferenceDetails.razor create mode 100644 src/dashboard/Synapse.Dashboard/Components/TaskInstanceDetails/TaskInstanceDetails.razor create mode 100644 src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor create mode 100644 src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.css create mode 100644 src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.min.css create mode 100644 src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.scss create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/scss/helpers/_focus-ring.scss create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/scss/helpers/_icon-link.scss create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/d3/LICENSE create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/d3/dist/d3.js create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/d3/dist/d3.min.js create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/neuroglia/event-drops/LICENSE create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/neuroglia/event-drops/dist/index.js create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/neuroglia/event-drops/dist/index.js.map create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/neuroglia/event-drops/dist/index.min.js create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/neuroglia/event-drops/dist/style.css create mode 100644 src/dashboard/Synapse.Dashboard/wwwroot/lib/neuroglia/event-drops/dist/style.min.css diff --git a/src/dashboard/Synapse.Dashboard/Components/CorrelationContextDetails.razor b/src/dashboard/Synapse.Dashboard/Components/CorrelationContextDetails.razor new file mode 100644 index 000000000..da6d31127 --- /dev/null +++ b/src/dashboard/Synapse.Dashboard/Components/CorrelationContextDetails.razor @@ -0,0 +1,29 @@ +@* + Copyright © 2024-Present The Synapse Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*@ + +@namespace Synapse.Dashboard.Components +@inject IJsonSerializer JsonSerializer + +@if (CorrelationContext != null) +{ +
+        @JsonSerializer.SerializeToText(CorrelationContext);
+        
+} + +@code { + [Parameter] public CorrelationContext? CorrelationContext { get; set; } +} diff --git a/src/dashboard/Synapse.Dashboard/Components/DocumentDetails/DocumentDetails.razor b/src/dashboard/Synapse.Dashboard/Components/DocumentDetails/DocumentDetails.razor new file mode 100644 index 000000000..3a8caf730 --- /dev/null +++ b/src/dashboard/Synapse.Dashboard/Components/DocumentDetails/DocumentDetails.razor @@ -0,0 +1,147 @@ +@* + Copyright © 2024-Present The Synapse Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*@ + +@namespace Synapse.Dashboard.Components +@using Synapse.Dashboard.Components.DocumentDetailsStateManagement +@inherits StatefulComponent + +
+ @if (LabelTemplate != null) { + @LabelTemplate + } + else { + @Label + } + @if (collapse != null) + { + + } +
+ + + @if (reference == null && Document == null) + { +

No document

+ } + else + { + @if (!loaded) + { + + } + else + { + + + } + @if (problemDetails != null) + { +
+ + @problemDetails.Detail + + @if (problemDetails.Errors != null && problemDetails.Errors.Any()) + { + foreach (KeyValuePair errorContainer in problemDetails.Errors) + { + +
    + @foreach (string error in errorContainer.Value) + { +
  • @error
  • + } +
+
+ } + } +
+ } + } +
+ +@code { + /// + /// The label to display + /// + [Parameter] public string? Label { get; set; } + /// + /// The label to display + /// + [Parameter] public RenderFragment? LabelTemplate { get; set; } + /// + /// The reference of the document to load + /// + [Parameter] public string? Reference { get; set; } + /// + /// The reference of the document to display + /// + [Parameter] public object? Document { get; set; } + + /// + /// The reference + /// + private Collapse collapse = default!; + /// + /// The state of the + /// + private bool isOpen = false; + /// + /// The internal reference + /// + private string? reference; + /// + /// The internal boolean indicating if the resource already loaded + /// + private bool loaded = false; + /// + /// The that occurred when trying to save the resource, if any + /// + private ProblemDetails? problemDetails = null; + + /// + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync().ConfigureAwait(false); + Store.Reference.Subscribe(newReference => OnStateChanged(cmp => cmp.reference = newReference), token: CancellationTokenSource.Token); + Store.Loaded.Subscribe(newLoading => OnStateChanged(cmp => cmp.loaded = newLoading), token: CancellationTokenSource.Token); + Store.ProblemDetails.Subscribe(newProblemDetails => OnStateChanged(cmp => cmp.problemDetails = newProblemDetails), token: CancellationTokenSource.Token); + } + + /// + protected override async Task OnParametersSetAsync() + { + await base.OnParametersSetAsync(); + Store.SetDocument(Document); + if (reference != Reference) + { + Store.SetReference(Reference); + } + if (collapse != null) + { + isOpen = false; + await collapse.HideAsync(); + } + } + + async Task ToggleAsync() + { + isOpen = !isOpen; + await (isOpen ? collapse.ShowAsync() : collapse.HideAsync()); + } +} diff --git a/src/dashboard/Synapse.Dashboard/Components/ReferenceDetails/State.cs b/src/dashboard/Synapse.Dashboard/Components/DocumentDetails/State.cs similarity index 87% rename from src/dashboard/Synapse.Dashboard/Components/ReferenceDetails/State.cs rename to src/dashboard/Synapse.Dashboard/Components/DocumentDetails/State.cs index 9f528f7cc..bd016a841 100644 --- a/src/dashboard/Synapse.Dashboard/Components/ReferenceDetails/State.cs +++ b/src/dashboard/Synapse.Dashboard/Components/DocumentDetails/State.cs @@ -11,12 +11,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -namespace Synapse.Dashboard.Components.ReferenceDetailsStateManagement; +namespace Synapse.Dashboard.Components.DocumentDetailsStateManagement; /// -/// Represents the state of a +/// Represents the state of a /// -public record ReferenceDetailsState +public record DocumentDetailsState { /// @@ -27,12 +27,12 @@ public record ReferenceDetailsState /// /// Gets/sets the reference to load /// - public string Reference { get; set; } = string.Empty; + public string? Reference { get; set; } = string.Empty; /// - /// Gets/sets the referenced document + /// Gets/sets the JSON representation of the referenced document /// - public string Document { get; set; } = string.Empty; + public string DocumentJson { get; set; } = string.Empty; /// /// Gets/sets a boolean indicating the reference has been loaded diff --git a/src/dashboard/Synapse.Dashboard/Components/DocumentDetails/Store.cs b/src/dashboard/Synapse.Dashboard/Components/DocumentDetails/Store.cs new file mode 100644 index 000000000..2daab61c5 --- /dev/null +++ b/src/dashboard/Synapse.Dashboard/Components/DocumentDetails/Store.cs @@ -0,0 +1,338 @@ +// Copyright © 2024-Present The Synapse Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"), +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using Synapse.Api.Client.Services; + +namespace Synapse.Dashboard.Components.DocumentDetailsStateManagement; + +/// +/// Represents the of a +/// +/// The service used interact with Synapse API +/// The service used from JS interop +/// The service used ease Monaco Editor interactions +/// The service used to serialize and deserialize JSON +/// The service used to serialize and deserialize YAML +public class DocumentDetailsStore( + ISynapseApiClient apiClient, + IJSRuntime jsRuntime, + IMonacoEditorHelper monacoEditorHelper, + IJsonSerializer jsonSerializer, + IYamlSerializer yamlSerializer +) + : ComponentStore(new()) +{ + + private TextModel? _textModel = null; + + /// + /// Gets the service used to interact with the Synapse API + /// + protected ISynapseApiClient ApiClient { get; } = apiClient; + /// + /// Gets the service used for JS interop + /// + protected IJSRuntime JSRuntime { get; } = jsRuntime; + + /// + /// Gets the service used ease Monaco Editor interactions + /// + protected IMonacoEditorHelper MonacoEditorHelper { get; } = monacoEditorHelper; + + /// + /// Gets the service used to serialize and deserialize JSON + /// + protected IJsonSerializer JsonSerializer { get; } = jsonSerializer; + + /// + /// Gets the service used to serialize and deserialize YAML + /// + protected IYamlSerializer YamlSerializer { get; } = yamlSerializer; + + /// + /// The provider function + /// + public Func StandaloneEditorConstructionOptions = monacoEditorHelper.GetStandaloneEditorConstructionOptions(string.Empty, true, monacoEditorHelper.PreferredLanguage); + + /// + /// The reference + /// + public StandaloneCodeEditor? TextEditor { get; set; } + + #region Selectors + /// + /// Gets an used to observe changes + /// + public IObservable Label => this.Select(state => state.Label).DistinctUntilChanged(); + + /// + /// Gets an used to observe changes + /// + public IObservable Reference => this.Select(state => state.Reference).DistinctUntilChanged(); + + /// + /// Gets an used to observe changes + /// + public IObservable DocumentJson => this.Select(state => state.DocumentJson).DistinctUntilChanged(); + + /// + /// Gets an used to observe changes + /// + public IObservable Loaded => this.Select(state => state.Loaded).DistinctUntilChanged(); + + /// + /// Gets an used to observe changes + /// + public IObservable ProblemType => this.Select(state => state.ProblemType).DistinctUntilChanged(); + + /// + /// Gets an used to observe changes + /// + public IObservable ProblemTitle => this.Select(state => state.ProblemTitle).DistinctUntilChanged(); + + /// + /// Gets an used to observe changes + /// + public IObservable ProblemDetail => this.Select(state => state.ProblemDetail).DistinctUntilChanged(); + + /// + /// Gets an used to observe changes + /// + public IObservable ProblemStatus => this.Select(state => state.ProblemStatus).DistinctUntilChanged(); + + /// + /// Gets an used to observe changes + /// + public IObservable> ProblemErrors => this.Select(state => state.ProblemErrors).DistinctUntilChanged(); + + /// + /// Gets an used to observe computed + /// + public IObservable ProblemDetails => Observable.CombineLatest( + this.ProblemType, + this.ProblemTitle, + this.ProblemStatus, + this.ProblemDetail, + this.ProblemErrors, + (type, title, status, details, errors) => + { + if (string.IsNullOrWhiteSpace(title)) + { + return null; + } + return new ProblemDetails(type ?? new Uri("unknown://"), title, status, details, null, errors, null); + } + ); + #endregion + + #region Setters + /// + /// Sets the state's + /// + /// The new value + public void SetLabel(string label) + { + this.Reduce(state => state with + { + Label = label + }); + } + + /// + /// Sets the state's + /// + /// The new value + public void SetReference(string? reference) + { + this.Reduce(state => state with + { + Reference = reference, + DocumentJson = string.Empty, + Loaded = false, + }); + } + + /// + /// Sets the state's + /// + /// The new value + public void SetDocument(object? document) + { + this.Reduce(state => state with + { + DocumentJson = document != null ? this.JsonSerializer.SerializeToText(document) : string.Empty, + Loaded = true, + }); + } + #endregion + + #region Actions + /// + /// Loads the referenced documents + /// + /// + public async Task LoadReferencedDocumentAsync() + { + var reference = this.Get(state => state.Reference); + var loaded = this.Get(state => state.Loaded); + if (loaded || string.IsNullOrWhiteSpace(reference)) return; + try + { + var document = await this.ApiClient.WorkflowData.GetAsync(reference); + string documentText = this.JsonSerializer.SerializeToText(document.Content); + this.Reduce(state => state with + { + DocumentJson = documentText, + Loaded = true + }); + } + catch (ProblemDetailsException ex) + { + if (ex.Problem != null) + { + this.Reduce(state => state with + { + ProblemType = ex.Problem?.Type, + ProblemTitle = ex.Problem?.Title ?? string.Empty, + ProblemStatus = ex.Problem?.Status ?? 0, + ProblemDetail = ex.Problem?.Detail ?? string.Empty, + ProblemErrors = new EquatableDictionary(ex.Problem?.Errors ?? []) + }); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + // todo: handle exception + } + } + + /// + /// Handles changed of the text editor's language + /// + /// + /// + public async Task ToggleTextBasedEditorLanguageAsync(string _) + { + await this.OnTextBasedEditorInitAsync(); + } + + /// + /// Handles initialization of the text editor + /// + /// + public async Task OnTextBasedEditorInitAsync() + { + await this.SetTextBasedEditorLanguageAsync(); + await this.SetTextEditorValueAsync(); + } + + /// + /// Sets the language of the text editor + /// + /// + public async Task SetTextBasedEditorLanguageAsync() + { + try + { + var language = this.MonacoEditorHelper.PreferredLanguage; + if (this.TextEditor != null) + { + var reference = this.Get(state => state.Reference) ?? this.Get(state => state.Label); + + if (!string.IsNullOrWhiteSpace(reference)) + { + var resourceUri = $"inmemory://{reference.ToLower()}"; + this._textModel = await Global.GetModel(this.JSRuntime, resourceUri); + if (this._textModel == null) + { + this._textModel = await Global.CreateModel(this.JSRuntime, "", language, resourceUri); + } + } + if (this._textModel != null) + { + await Global.SetModelLanguage(this.JSRuntime, this._textModel, language); + await this.TextEditor!.SetModel(this._textModel); + } + } + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + // todo: handle exception + } + } + + /// + /// Changes the value of the text editor + /// + /// + async Task SetTextEditorValueAsync() + { + var document = this.Get(state => state.DocumentJson); + var language = this.MonacoEditorHelper.PreferredLanguage; + if (this.TextEditor != null && !string.IsNullOrWhiteSpace(document)) + { + try + { + if (language == PreferredLanguage.YAML) + { + document = this.YamlSerializer.ConvertFromJson(document); + } + await this.TextEditor.SetValue(document); + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + await this.MonacoEditorHelper.ChangePreferredLanguageAsync(language == PreferredLanguage.YAML ? PreferredLanguage.JSON : PreferredLanguage.YAML); + } + } + } + #endregion + + /// + public override Task InitializeAsync() + { + this.DocumentJson.SubscribeAsync(async (_) => { + await this.SetTextEditorValueAsync(); + }, cancellationToken: this.CancellationTokenSource.Token); + return base.InitializeAsync(); + } + + private bool disposed; + /// + /// Disposes of the store + /// + /// A boolean indicating whether or not the dispose of the store + protected override void Dispose(bool disposing) + { + if (!this.disposed) + { + if (disposing) + { + if (this._textModel != null) + { + this._textModel.DisposeModel(); + this._textModel = null; + } + if (this.TextEditor != null) + { + this.TextEditor.Dispose(); + this.TextEditor = null; + } + } + this.disposed = true; + } + } + +} \ No newline at end of file diff --git a/src/dashboard/Synapse.Dashboard/Components/HorizontalCollapsible/HorizontalCollapsible.razor b/src/dashboard/Synapse.Dashboard/Components/HorizontalCollapsible/HorizontalCollapsible.razor index 6699abe3f..cde9b5775 100644 --- a/src/dashboard/Synapse.Dashboard/Components/HorizontalCollapsible/HorizontalCollapsible.razor +++ b/src/dashboard/Synapse.Dashboard/Components/HorizontalCollapsible/HorizontalCollapsible.razor @@ -16,8 +16,8 @@ @namespace Synapse.Dashboard.Components
-
- +
+ @if(isCollapsed) { @@ -28,6 +28,10 @@ } @Label + @if (OnClose.HasDelegate) + { + + }
@if (!isCollapsed) { @@ -44,17 +48,26 @@ [Parameter] public RenderFragment Content { get; set; } = default!; [Parameter] public EventCallback OnShown { get; set; } [Parameter] public EventCallback OnHidden { get; set; } + [Parameter] public EventCallback OnClose { get; set; } - async Task ToggleAsync() + async Task OnToggleAsync() { - this.isCollapsed = !this.isCollapsed; - if (this.isCollapsed && this.OnHidden.HasDelegate) + isCollapsed = !isCollapsed; + if (isCollapsed && OnHidden.HasDelegate) + { + await OnHidden.InvokeAsync(); + } + if (!isCollapsed && OnShown.HasDelegate) { - await this.OnHidden.InvokeAsync(); + await OnShown.InvokeAsync(); } - if (!this.isCollapsed && this.OnShown.HasDelegate) + } + + async Task OnCloseAsync() + { + if (OnClose.HasDelegate) { - await this.OnShown.InvokeAsync(); + await OnClose.InvokeAsync(); } } } diff --git a/src/dashboard/Synapse.Dashboard/Components/Layout/MainLayout.razor b/src/dashboard/Synapse.Dashboard/Components/Layout/MainLayout.razor index b738f4eff..95452cc69 100644 --- a/src/dashboard/Synapse.Dashboard/Components/Layout/MainLayout.razor +++ b/src/dashboard/Synapse.Dashboard/Components/Layout/MainLayout.razor @@ -20,14 +20,14 @@ @inject IOptions Options
- @@ -100,11 +100,11 @@ - + -
+
@Body -
+
@code{ diff --git a/src/dashboard/Synapse.Dashboard/Components/ReferenceDetails/ReferenceDetails.razor b/src/dashboard/Synapse.Dashboard/Components/ReferenceDetails/ReferenceDetails.razor deleted file mode 100644 index 229940afc..000000000 --- a/src/dashboard/Synapse.Dashboard/Components/ReferenceDetails/ReferenceDetails.razor +++ /dev/null @@ -1,120 +0,0 @@ -@* - Copyright © 2024-Present The Synapse Authors - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*@ - -@namespace Synapse.Dashboard.Components -@using Synapse.Dashboard.Components.ReferenceDetailsStateManagement -@inherits StatefulComponent - - - - - @if (!loaded) - { - - } - else - { - - - } - @if (problemDetails != null) - { -
- - @problemDetails.Detail - - @if (problemDetails.Errors != null && problemDetails.Errors.Any()) - { - foreach (KeyValuePair errorContainer in problemDetails.Errors) - { - -
    - @foreach (string error in errorContainer.Value) - { -
  • @error
  • - } -
-
- } - } -
- } -
-
-
- -@code { - /// - /// The label to display - /// - [Parameter] public string Label { get; set; } = null!; - /// - /// The reference of the document to load - /// - [Parameter] public string Reference { get; set; } = null!; - - /// - /// The reference - /// - private Accordion accordion = default!; - /// - /// The internal label - /// - private string label = ""; - /// - /// The internal reference - /// - private string reference = ""; - /// - /// The internal boolean indicating if the resource already loaded - /// - private bool loaded = false; - /// - /// The that occurred when trying to save the resource, if any - /// - private ProblemDetails? problemDetails = null; - - /// - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync().ConfigureAwait(false); - this.Store.Label.Subscribe(newLabel => this.OnStateChanged(cmp => cmp.label = newLabel), token: this.CancellationTokenSource.Token); - this.Store.Reference.Subscribe(newReference => this.OnStateChanged(cmp => cmp.reference = newReference), token: this.CancellationTokenSource.Token); - this.Store.Loaded.Subscribe(newLoading => this.OnStateChanged(cmp => cmp.loaded = newLoading), token: this.CancellationTokenSource.Token); - this.Store.ProblemDetails.Subscribe(newProblemDetails => this.OnStateChanged(cmp => cmp.problemDetails = newProblemDetails), token: this.CancellationTokenSource.Token); - } - - /// - protected override async Task OnParametersSetAsync() - { - await base.OnParametersSetAsync(); - if (this.label != this.Label) - { - this.Store.SetLabel(this.Label); - } - if (this.reference != this.Reference) - { - this.Store.SetReference(this.Reference); - } - if (this.accordion != null) - { - await this.accordion.HideFirstAccordionItemAsync(); - } - } -} diff --git a/src/dashboard/Synapse.Dashboard/Components/ResourceDetails/ResourceDetails.razor b/src/dashboard/Synapse.Dashboard/Components/ResourceDetails/ResourceDetails.razor index 0184ff2ac..6c4986790 100644 --- a/src/dashboard/Synapse.Dashboard/Components/ResourceDetails/ResourceDetails.razor +++ b/src/dashboard/Synapse.Dashboard/Components/ResourceDetails/ResourceDetails.razor @@ -20,7 +20,7 @@
- +
diff --git a/src/dashboard/Synapse.Dashboard/Components/TaskInstanceDetails/TaskInstanceDetails.razor b/src/dashboard/Synapse.Dashboard/Components/TaskInstanceDetails/TaskInstanceDetails.razor new file mode 100644 index 000000000..8835edb8f --- /dev/null +++ b/src/dashboard/Synapse.Dashboard/Components/TaskInstanceDetails/TaskInstanceDetails.razor @@ -0,0 +1,29 @@ +@* + Copyright © 2024-Present The Synapse Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*@ + +@namespace Synapse.Dashboard.Components +@inject IJsonSerializer JsonSerializer + +@if (TaskInstance != null) +{ +
+    @JsonSerializer.SerializeToText(TaskInstance);
+    
+} + +@code { + [Parameter] public TaskInstance? TaskInstance { get; set; } +} diff --git a/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor new file mode 100644 index 000000000..10403ed81 --- /dev/null +++ b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor @@ -0,0 +1,235 @@ +@* + Copyright © 2024-Present The Synapse Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*@ + +@namespace Synapse.Dashboard.Components +@inject IJsonSerializer JsonSerializer + +@if (WorkflowInstance != null) +{ +
+
Timings
+
+
+
Started at
+ @(WorkflowInstance.Status?.StartedAt?.DateTime.FromNow() ?? "-") +
+
+
Ended at
+ @(WorkflowInstance.Status?.EndedAt?.DateTime.FromNow() ?? "-") +
+
+
Duration
+ @if (WorkflowInstance.Status?.StartedAt.HasValue == true && WorkflowInstance.Status?.EndedAt.HasValue == true) + { + @WorkflowInstance.Status.EndedAt.Value.Subtract(WorkflowInstance.Status.StartedAt.Value).ToString("hh\\:mm\\:ss\\.fff") + } + else + { + @("-") + } +
+
+
Global Data
+
+
+ +
+
+ +
+
+ @if (WorkflowInstance.Status?.Error != null) + { + + } + else + { + + } +
+
+
Executed Tasks
+ @if (WorkflowInstance.Status?.Tasks == null || WorkflowInstance.Status.Tasks.Count == 0) + { + @("-") + } + else + { +
API Version
+ + + + + + + + + + + @foreach (var task in WorkflowInstance.Status.Tasks) + { + Collapse collapse = null!; + bool isOpen = false; + + + + + + + + + + + } + +
NameStatusStarted AtEnded At
@task.Name@(task.Status ?? TaskInstanceStatus.Pending)@(task.StartedAt?.DateTime.FromNow() ?? "-")@(task.EndedAt?.DateTime.FromNow() ?? "-")
+ + + +
+ } +
Runs
+ @if (WorkflowInstance.Status?.Runs == null || WorkflowInstance.Status.Runs.Count == 0) + { + @("-") + } + else + { + + + + + + + + + + @foreach (var run in WorkflowInstance.Status.Runs) + { + + + + + + } + +
Started AtEnded AtDuration
@run.StartedAt.DateTime.FromNow()@(run.EndedAt?.DateTime.FromNow() ?? "-")@(run.EndedAt.HasValue ? run.EndedAt.Value.Subtract(run.StartedAt).ToString("hh\\:mm\\:ss\\.fff") : "-")
+ } +
Correlation
+ @if (WorkflowInstance.Status?.Correlation == null) + { + @("-") + } + else + { +
Keys
+ @if (WorkflowInstance.Status?.Correlation?.Keys == null || WorkflowInstance.Status.Correlation.Keys.Count == 0) + { + @("-") + } + else + { + + + + + + + + + @foreach (var keyValuePair in WorkflowInstance.Status.Correlation.Keys) + { + + + + + } + +
NameValue
@keyValuePair.Key@keyValuePair.Value
+ } +
Contexts
+ @if (WorkflowInstance.Status?.Correlation?.Contexts == null || WorkflowInstance.Status.Correlation.Contexts.Count == 0) + { + @("-") + } + else + { + + + + + + + + + + @foreach (var keyValuePair in WorkflowInstance.Status.Correlation.Contexts) + { + Collapse collapse = null!; + bool isOpen = false; + + + + + + + + + } + +
NameStatus
@keyValuePair.Key@(keyValuePair.Value?.Status ?? CorrelationContextStatus.Inactive)
+ @if (keyValuePair.Value == null) + { + @("-") + } + else + { + + + + } +
+ } + } +
+            @JsonSerializer.SerializeToText(WorkflowInstance);
+        
+
+} + +@code { + [Parameter] public WorkflowInstance? WorkflowInstance { get; set; } + + string GetTaskStatusClass(TaskInstance task) => task.Status switch + { + TaskInstanceStatus.Running => "border-accent text-accent", + TaskInstanceStatus.Faulted => "border-danger text-danger", + TaskInstanceStatus.Suspended => "border-icterine text-icterine", + TaskInstanceStatus.Cancelled => "border-warning text-warning", + TaskInstanceStatus.Completed => "border-success text-success", + TaskInstanceStatus.Skipped => "border-cinereous text-cinereous", + _ => "" + }; + + string GetCorrelationContextStatusClass(CorrelationContext? context) => context?.Status switch + { + CorrelationContextStatus.Active => "border-accent text-accent", + CorrelationContextStatus.Inactive => "border-secondary text-secondary", + CorrelationContextStatus.Completed => "border-success text-success", + CorrelationContextStatus.Cancelled => "border-warning text-warning", + _ => "" + }; +} diff --git a/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.css b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.css new file mode 100644 index 000000000..19f8c789b --- /dev/null +++ b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.css @@ -0,0 +1,3 @@ +.workflow-instance-details .label { + font-weight: 600; +} diff --git a/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.min.css b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.min.css new file mode 100644 index 000000000..3ca3fce6d --- /dev/null +++ b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.min.css @@ -0,0 +1 @@ +.workflow-instance-details .label{font-weight:600;} \ No newline at end of file diff --git a/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.scss b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.scss new file mode 100644 index 000000000..eca52e91c --- /dev/null +++ b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.scss @@ -0,0 +1,5 @@ +.workflow-instance-details { + .label { + font-weight: 600; + } +} diff --git a/src/dashboard/Synapse.Dashboard/Components/WorkflowInstancesList/WorkflowInstancesList.razor b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstancesList/WorkflowInstancesList.razor index e1afc349a..bf3220d9a 100644 --- a/src/dashboard/Synapse.Dashboard/Components/WorkflowInstancesList/WorkflowInstancesList.razor +++ b/src/dashboard/Synapse.Dashboard/Components/WorkflowInstancesList/WorkflowInstancesList.razor @@ -46,7 +46,7 @@
- +
@foreach (var column in columns) @@ -162,12 +162,12 @@ { return instance.Status?.Phase switch { - WorkflowInstanceStatusPhase.Pending => "border-secondary text-secondary", - WorkflowInstanceStatusPhase.Running => "border-primary text-primary", + WorkflowInstanceStatusPhase.Running => "border-accent text-accent", WorkflowInstanceStatusPhase.Faulted => "border-danger text-danger", WorkflowInstanceStatusPhase.Cancelled => "border-warning text-warning", WorkflowInstanceStatusPhase.Completed => "border-success text-success", - _ => "border-secondary text-secondary" + WorkflowInstanceStatusPhase.Waiting => "border-cinereous text-cinereous", + _ => "" }; } diff --git a/src/dashboard/Synapse.Dashboard/Pages/About/View.razor b/src/dashboard/Synapse.Dashboard/Pages/About/View.razor index 182c4b2d9..6c91b3826 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/About/View.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/About/View.razor @@ -30,7 +30,7 @@
-
+
diff --git a/src/dashboard/Synapse.Dashboard/Pages/Correlations/List/View.razor b/src/dashboard/Synapse.Dashboard/Pages/Correlations/List/View.razor index 9c6ce2f06..e2d2d3824 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Correlations/List/View.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/Correlations/List/View.razor @@ -28,7 +28,7 @@ -
Version
+
diff --git a/src/dashboard/Synapse.Dashboard/Pages/Correlators/List/View.razor b/src/dashboard/Synapse.Dashboard/Pages/Correlators/List/View.razor index 0723c01ca..9f0f6bd4f 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Correlators/List/View.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/Correlators/List/View.razor @@ -28,7 +28,7 @@ -
Namespace
+
diff --git a/src/dashboard/Synapse.Dashboard/Pages/Namespaces/List/View.razor b/src/dashboard/Synapse.Dashboard/Pages/Namespaces/List/View.razor index 2049f441d..718195fde 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Namespaces/List/View.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/Namespaces/List/View.razor @@ -18,7 +18,7 @@ -
Namespace
+
diff --git a/src/dashboard/Synapse.Dashboard/Pages/Operators/List/View.razor b/src/dashboard/Synapse.Dashboard/Pages/Operators/List/View.razor index a05e9513d..93f128025 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Operators/List/View.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/Operators/List/View.razor @@ -28,7 +28,7 @@ -
Name
+
diff --git a/src/dashboard/Synapse.Dashboard/Pages/Users/Profile.razor b/src/dashboard/Synapse.Dashboard/Pages/Users/Profile.razor index fe15c51ed..c8f87f8ed 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Users/Profile.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/Users/Profile.razor @@ -12,7 +12,7 @@ @if (user != null) { -
Namespace
+
@foreach (var claim in user.Claims) { diff --git a/src/dashboard/Synapse.Dashboard/Pages/WorkflowInstances/List/View.razor b/src/dashboard/Synapse.Dashboard/Pages/WorkflowInstances/List/View.razor index 2fadf3155..1532a2dc2 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/WorkflowInstances/List/View.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/WorkflowInstances/List/View.razor @@ -15,7 +15,7 @@ OnWorkflowChanged="OnWorkflowChanged" OnNamespaceChanged="OnNamespaceChanged" OnSearchInput="OnSearchInput" - OnShowDetails="OnShowResourceDetailsAsync" + OnShowDetails="OnShowInstanceDetailsAsync" OnDelete="OnDeleteResourceAsync"> @@ -64,17 +64,18 @@ } } - string GetStatusClass(WorkflowInstance instance) + /// + /// Opens the targeted 's details + /// + /// The to show the details for + protected Task OnShowInstanceDetailsAsync(WorkflowInstance instance) { - return instance.Status?.Phase switch + if (this.DetailsOffCanvas == null) return Task.CompletedTask; + var parameters = new Dictionary { - WorkflowInstanceStatusPhase.Pending => "border-secondary text-secondary", - WorkflowInstanceStatusPhase.Running => "border-primary text-primary", - WorkflowInstanceStatusPhase.Faulted => "border-danger text-danger", - WorkflowInstanceStatusPhase.Cancelled => "border-warning text-warning", - WorkflowInstanceStatusPhase.Completed => "border-success text-success", - _ => "border-secondary text-secondary" + { "WorkflowInstance", instance } }; + return this.DetailsOffCanvas.ShowAsync(title: "Instance details", parameters: parameters); } } \ No newline at end of file diff --git a/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/State.cs b/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/State.cs index e878de587..bf1ef0bd5 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/State.cs +++ b/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/State.cs @@ -47,4 +47,9 @@ public record WorkflowDetailsState /// public string WorkflowDefinitionJson { get; set; } = string.Empty; + /// + /// Gets/sets the displayed id + /// + public string? WorkflowInstanceName { get; set; } + } diff --git a/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/Store.cs b/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/Store.cs index dc6e89157..640746998 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/Store.cs +++ b/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/Store.cs @@ -40,6 +40,26 @@ IYamlSerializer yamlSerializer private TextModel? _textModel = null; private bool _disposed; + /// + /// Gets the service used for JS interop + /// + protected IJSRuntime JSRuntime { get; } = jsRuntime; + + /// + /// Gets the service used ease Monaco Editor interactions + /// + protected IMonacoEditorHelper MonacoEditorHelper { get; } = monacoEditorHelper; + + /// + /// Gets the service used to serialize and deserialize JSON + /// + protected IJsonSerializer JsonSerializer { get; } = jsonSerializer; + + /// + /// Gets the service used to serialize and deserialize YAML + /// + protected IYamlSerializer YamlSerializer { get; } = yamlSerializer; + /// /// The provider function /// @@ -66,6 +86,11 @@ IYamlSerializer yamlSerializer /// public IObservable WorkflowDefinitionVersion => this.Select(state => state.WorkflowDefinitionVersion).DistinctUntilChanged(); + /// + /// Gets an used to observe changes + /// + public IObservable WorkflowInstanceName => this.Select(state => state.WorkflowInstanceName).DistinctUntilChanged(); + /// /// Gets an exposing the /// @@ -78,7 +103,7 @@ IYamlSerializer yamlSerializer { return null; } - if (string.IsNullOrWhiteSpace(version)) + if (string.IsNullOrWhiteSpace(version) || version.Equals("latest", StringComparison.CurrentCultureIgnoreCase)) { var latest = workflow.Spec.Versions.GetLatest()?.Document.Version; if (!string.IsNullOrWhiteSpace(latest)) @@ -100,6 +125,21 @@ IYamlSerializer yamlSerializer /// Gets an used to observe changes /// public IObservable Document => this.Select(state => state.WorkflowDefinitionJson).DistinctUntilChanged(); + + /// + /// Gets an used to observe the displayed changes + /// + public IObservable WorkflowInstance => Observable.CombineLatest( + this.Resources, + this.WorkflowInstanceName, + (instances, name) => { + if (instances == null || instances.Count == 0 || name == null) + { + return null; + } + return instances.FirstOrDefault(instance => instance.Metadata.Name == name); + } + ); #endregion #region Setters @@ -127,6 +167,18 @@ public void SetWorkflowDefinitionVersion(string? workflowDefinitionVersion) WorkflowDefinitionVersion = workflowDefinitionVersion }); } + + /// + /// Sets the state's + /// + /// The new value + public void SetWorkflowInstanceName(string? instanceName) + { + this.Reduce(state => state with + { + WorkflowInstanceName = instanceName + }); + } #endregion #region Actions @@ -181,19 +233,19 @@ public async Task SetTextBasedEditorLanguageAsync() { try { - var language = monacoEditorHelper.PreferredLanguage; + var language = this.MonacoEditorHelper.PreferredLanguage; if (this.TextEditor != null) { if (this._textModel != null) { - await Global.SetModelLanguage(jsRuntime, this._textModel, language); + await Global.SetModelLanguage(this.JSRuntime, this._textModel, language); } else { var version = this.Get(state => state.WorkflowDefinitionVersion); var reference = this.Get(state => state.Namespaces) + "." + this.Get(state => state.WorkflowDefinitionName) + (!string.IsNullOrWhiteSpace(version) ? $":{version}" : ""); var resourceUri = $"inmemory://{reference.ToLower()}"; - this._textModel = await Global.CreateModel(jsRuntime, "", language, resourceUri); + this._textModel = await Global.CreateModel(this.JSRuntime, "", language, resourceUri); } await this.TextEditor!.SetModel(this._textModel); } @@ -212,21 +264,21 @@ public async Task SetTextBasedEditorLanguageAsync() async Task SetTextEditorValueAsync() { var document = this.Get(state => state.WorkflowDefinitionJson); - var language = monacoEditorHelper.PreferredLanguage; + var language = this.MonacoEditorHelper.PreferredLanguage; if (this.TextEditor != null && !string.IsNullOrWhiteSpace(document)) { try { if (language == PreferredLanguage.YAML) { - document = yamlSerializer.ConvertFromJson(document); + document = this.YamlSerializer.ConvertFromJson(document); } await this.TextEditor.SetValue(document); } catch (Exception ex) { Console.WriteLine(ex.ToString()); - await monacoEditorHelper.ChangePreferredLanguageAsync(language == PreferredLanguage.YAML ? PreferredLanguage.JSON : PreferredLanguage.YAML); + await this.MonacoEditorHelper.ChangePreferredLanguageAsync(language == PreferredLanguage.YAML ? PreferredLanguage.JSON : PreferredLanguage.YAML); } } } @@ -238,15 +290,15 @@ public override async Task InitializeAsync() this.WorkflowDefinition.Where(definition => definition != null).SubscribeAsync(async (definition) => { await Task.Delay(1); - var document = jsonSerializer.SerializeToText(definition); + var document = this.JsonSerializer.SerializeToText(definition); this.Reduce(state => state with { WorkflowDefinitionJson = document }); await this.SetTextEditorValueAsync(); - if (monacoEditorHelper.PreferredLanguage != PreferredLanguage.YAML) + if (this.MonacoEditorHelper.PreferredLanguage != PreferredLanguage.YAML) { - await monacoEditorHelper.ChangePreferredLanguageAsync(PreferredLanguage.YAML); + await this.MonacoEditorHelper.ChangePreferredLanguageAsync(PreferredLanguage.YAML); } }, cancellationToken: this.CancellationTokenSource.Token); Observable.CombineLatest( diff --git a/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/View.razor b/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/View.razor index a5b9606a6..e6d1671fe 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/View.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/Workflows/Details/View.razor @@ -16,10 +16,12 @@ @page "/workflows/details/{namespace}/{name}/latest" @page "/workflows/details/{namespace}/{name}/{version}" +@page "/workflows/details/{namespace}/{name}/{version}/{instanceName}" @using ServerlessWorkflow.Sdk.Models @using Synapse.Api.Client.Services @inherits NamespacedResourceManagementComponent @inject IBreadcrumbManager BreadcrumbManager +@inject NavigationManager NavigationManager Workflow @($"{name}.{ns}:{version}") @@ -27,12 +29,12 @@ -
- -
+
@@ -50,30 +52,43 @@ } - - - - @if (workflowDefinition == null) - { -
- -
- } - else - { -
- -
- + @if (workflowInstance == null) { + + + + @if (workflowDefinition == null) + { +
+ +
+ } + else + { +
+ +
+ +
-
- } - - + } + + + } + else + { + + + +
+ +
+
+
+ }
@code @@ -82,8 +97,10 @@ string ns = null!; string name = null!; string version = null!; + string? instanceName = null!; Workflow workflow = null!; WorkflowDefinition workflowDefinition = null!; + WorkflowInstance? workflowInstance; readonly IEnumerable columns = [ "Name", "Namespace", @@ -95,6 +112,7 @@ [Parameter] public new string? Namespace { get; set; } [Parameter] public string? Name { get; set; } [Parameter] public string? Version { get; set; } + [Parameter] public string? InstanceName { get; set; } /// protected override async Task OnInitializedAsync() @@ -104,7 +122,13 @@ Store.Namespace.Where(value => !string.IsNullOrWhiteSpace(value)).Subscribe(value => OnStateChanged(_ => ns = value!), token: CancellationTokenSource.Token); Store.WorkflowDefinitionName.Where(value => !string.IsNullOrWhiteSpace(value)).Subscribe(value => OnStateChanged(_ => name = value!), token: CancellationTokenSource.Token); Store.WorkflowDefinitionVersion.Where(value => !string.IsNullOrWhiteSpace(value)).Subscribe(value => OnStateChanged(_ => version = value!), token: CancellationTokenSource.Token); + Store.WorkflowInstanceName.Subscribe(value => OnStateChanged(_ => instanceName = value), token: CancellationTokenSource.Token); Store.WorkflowDefinition.Where(value => value != null).Subscribe(value => OnStateChanged(_ => workflowDefinition = value!), token: CancellationTokenSource.Token); + Store.WorkflowInstance.Subscribe(value => + { + OnStateChanged(_ => workflowInstance = value); + UpdateBreadcrumb(); + }, token: CancellationTokenSource.Token); Store.Workflow.Where(value => value != null).Subscribe(value => { OnStateChanged(_ => workflow = value!); @@ -127,6 +151,10 @@ { Store.SetWorkflowDefinitionVersion(Version); } + if (InstanceName != instanceName) + { + Store.SetWorkflowInstanceName(InstanceName); + } } /// @@ -135,11 +163,16 @@ protected void UpdateBreadcrumb() { BreadcrumbManager.Use(Breadcrumbs.Workflows); - BreadcrumbManager.Add(new($"{Name}.{Namespace}", $"/workflows/{Namespace}/{Name}/latest")); + BreadcrumbManager.Add(new($"{Name}.{Namespace}", $"/workflows/details/{Namespace}/{Name}/latest")); if (workflow != null) { BreadcrumbManager.Add(new(VersionSelector())); } + if (workflowInstance != null) + { + BreadcrumbManager.Add(new(workflowInstance.GetName(), $"/workflows/details/{Namespace}/{Name}/{Version}/{workflowInstance.GetName()}")); + } + StateHasChanged(); } /// @@ -148,7 +181,7 @@ /// protected RenderFragment VersionSelector() => __builder => { - @if (workflow != null) { foreach (var definitionVersion in workflow.Spec.Versions) @@ -159,4 +192,11 @@ }; + void OnViewWorkflowInstance(WorkflowInstance instance) => NavigationManager.NavigateTo($"/workflows/details/{Namespace}/{Name}/{version}/{instance.GetName()}"); + + void OnCloseWorkflowInstance() + { + NavigationManager.NavigateTo($"/workflows/details/{Namespace}/{Name}/{version}"); + StateHasChanged(); + } } diff --git a/src/dashboard/Synapse.Dashboard/Pages/Workflows/List/View.razor b/src/dashboard/Synapse.Dashboard/Pages/Workflows/List/View.razor index 884799bd4..4908ca3e5 100644 --- a/src/dashboard/Synapse.Dashboard/Pages/Workflows/List/View.razor +++ b/src/dashboard/Synapse.Dashboard/Pages/Workflows/List/View.razor @@ -31,7 +31,7 @@ -
+
diff --git a/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj b/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj index ed40cf455..6bc31da6e 100644 --- a/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj +++ b/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj @@ -37,4 +37,14 @@ + + + true + + + + + + + diff --git a/src/dashboard/Synapse.Dashboard/compilerconfig.json b/src/dashboard/Synapse.Dashboard/compilerconfig.json index eb56dcea1..6a111235d 100644 --- a/src/dashboard/Synapse.Dashboard/compilerconfig.json +++ b/src/dashboard/Synapse.Dashboard/compilerconfig.json @@ -10,5 +10,9 @@ { "outputFile": "Components/ResourceEditor/ResourceEditor.razor.css", "inputFile": "Components/ResourceEditor/ResourceEditor.razor.scss" + }, + { + "outputFile": "Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.css", + "inputFile": "Components/WorkflowInstanceDetails/WorkflowInstanceDetails.razor.scss" } ] \ No newline at end of file diff --git a/src/dashboard/Synapse.Dashboard/libman.json b/src/dashboard/Synapse.Dashboard/libman.json index 8562e3641..9e7b86cb0 100644 --- a/src/dashboard/Synapse.Dashboard/libman.json +++ b/src/dashboard/Synapse.Dashboard/libman.json @@ -2,9 +2,10 @@ "version": "1.0", "defaultProvider": "cdnjs", "libraries": [ + { "provider": "jsdelivr", - "library": "bootstrap@5.3.0-alpha1", + "library": "bootstrap@5.3.3", "destination": "wwwroot/lib/bootstrap/", "files": [ "scss/forms/_floating-labels.scss", @@ -19,6 +20,8 @@ "scss/helpers/_clearfix.scss", "scss/helpers/_color-bg.scss", "scss/helpers/_colored-links.scss", + "scss/helpers/_focus-ring.scss", + "scss/helpers/_icon-link.scss", "scss/helpers/_position.scss", "scss/helpers/_ratio.scss", "scss/helpers/_stacks.scss", @@ -97,6 +100,9 @@ "scss/_utilities.scss", "scss/_variables-dark.scss", "scss/_variables.scss", + "LICENSE", + "package.json", + "README.md", "dist/js/bootstrap.bundle.js", "dist/js/bootstrap.bundle.js.map", "dist/js/bootstrap.bundle.min.js", @@ -108,10 +114,7 @@ "dist/js/bootstrap.js", "dist/js/bootstrap.js.map", "dist/js/bootstrap.min.js", - "dist/js/bootstrap.min.js.map", - "README.md", - "LICENSE", - "package.json" + "dist/js/bootstrap.min.js.map" ] }, { diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/css/app.css b/src/dashboard/Synapse.Dashboard/wwwroot/css/app.css index 56d92d8cc..ab9a33fae 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/css/app.css +++ b/src/dashboard/Synapse.Dashboard/wwwroot/css/app.css @@ -7438,8 +7438,8 @@ } /*! - * Bootstrap v5.3.0-alpha1 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ :root, @@ -7458,6 +7458,11 @@ --bs-white: #fff; --bs-gray: #6c757d; --bs-gray-dark: #343a40; + --bs-accent: #9CEC5B; + --bs-cinereous: #837569; + --bs-verdigris: #50C5B7; + --bs-icterine: #F0F465; + --bs-mute: #6c757d; --bs-gray-100: #f8f9fa; --bs-gray-200: #e9ecef; --bs-gray-300: #dee2e6; @@ -7475,7 +7480,10 @@ --bs-danger: #dc3545; --bs-light: #f8f9fa; --bs-dark: #212529; - --bs-accent: #009696; + --bs-accent: #9CEC5B; + --bs-cinereous: #837569; + --bs-verdigris: #50C5B7; + --bs-icterine: #F0F465; --bs-mute: #6c757d; --bs-primary-rgb: 140, 104, 205; --bs-secondary-rgb: 60, 140, 214; @@ -7485,34 +7493,47 @@ --bs-danger-rgb: 220, 53, 69; --bs-light-rgb: 248, 249, 250; --bs-dark-rgb: 33, 37, 41; - --bs-primary-text: #8c68cd; - --bs-secondary-text: #6c757d; - --bs-success-text: #146c43; - --bs-info-text: #087990; - --bs-warning-text: #997404; - --bs-danger-text: #b02a37; - --bs-light-text: #6c757d; - --bs-dark-text: #495057; + --bs-accent-rgb: 156, 236, 91; + --bs-cinereous-rgb: 131, 117, 105; + --bs-verdigris-rgb: 80, 197, 183; + --bs-icterine-rgb: 240, 244, 101; + --bs-mute-rgb: 108, 117, 125; + --bs-primary-text-emphasis: #382a52; + --bs-secondary-text-emphasis: #183856; + --bs-success-text-emphasis: #0a3622; + --bs-info-text-emphasis: #055160; + --bs-warning-text-emphasis: #664d03; + --bs-danger-text-emphasis: #58151c; + --bs-light-text-emphasis: #495057; + --bs-dark-text-emphasis: #495057; --bs-primary-bg-subtle: #7d59bd; - --bs-secondary-bg-subtle: #f8f9fa; + --bs-secondary-bg-subtle: #d8e8f7; --bs-success-bg-subtle: #d1e7dd; --bs-info-bg-subtle: #cff4fc; --bs-warning-bg-subtle: #fff3cd; --bs-danger-bg-subtle: #f8d7da; --bs-light-bg-subtle: #fcfcfd; --bs-dark-bg-subtle: #ced4da; + --bs-accent-bg-subtle: #9CEC5B; + --bs-cinereous-bg-subtle: #837569; + --bs-verdigris-bg-subtle: #50C5B7; + --bs-icterine-bg-subtle: #F0F465; + --bs-mute-bg-subtle: #6c757d; --bs-primary-border-subtle: #714db1; - --bs-secondary-border-subtle: #e9ecef; + --bs-secondary-border-subtle: #b1d1ef; --bs-success-border-subtle: #a3cfbb; --bs-info-border-subtle: #9eeaf9; --bs-warning-border-subtle: #ffe69c; --bs-danger-border-subtle: #f1aeb5; --bs-light-border-subtle: #e9ecef; --bs-dark-border-subtle: #adb5bd; + --bs-accent-border-subtle: #9CEC5B; + --bs-cinereous-border-subtle: #837569; + --bs-verdigris-border-subtle: #50C5B7; + --bs-icterine-border-subtle: #F0F465; + --bs-mute-border-subtle: #6c757d; --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)); @@ -7522,6 +7543,9 @@ --bs-body-font-weight: 400; --bs-body-line-height: 1.5; --bs-body-color: #212529; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; --bs-emphasis-color: #000; --bs-emphasis-color-rgb: 0, 0, 0; --bs-secondary-color: rgba(33, 37, 41, 0.75); @@ -7532,14 +7556,14 @@ --bs-tertiary-color-rgb: 33, 37, 41; --bs-tertiary-bg: #f8f9fa; --bs-tertiary-bg-rgb: 248, 249, 250; - --bs-body-bg: #fff; - --bs-body-bg-rgb: 255, 255, 255; + --bs-heading-color: inherit; --bs-link-color: #8c68cd; --bs-link-color-rgb: 140, 104, 205; --bs-link-decoration: underline; --bs-link-hover-color: #7053a4; --bs-link-hover-color-rgb: 112, 83, 164; --bs-code-color: #d63384; + --bs-highlight-color: #212529; --bs-highlight-bg: #fff3cd; --bs-border-width: 1px; --bs-border-style: solid; @@ -7549,72 +7573,91 @@ --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-xxl: 2rem; + --bs-border-radius-2xl: var(--bs-border-radius-xxl); --bs-border-radius-pill: 50rem; - --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); - --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); - --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175); - --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); - --bs-emphasis-color: #000; - --bs-form-control-bg: var(--bs-body-bg); - --bs-form-control-disabled-bg: var(--bs-secondary-bg); - --bs-highlight-bg: #fff3cd; - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; + --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-focus-ring-width: 0.25rem; + --bs-focus-ring-opacity: 0.25; + --bs-focus-ring-color: rgba(140, 104, 205, 0.25); + --bs-form-valid-color: #198754; + --bs-form-valid-border-color: #198754; + --bs-form-invalid-color: #dc3545; + --bs-form-invalid-border-color: #dc3545; } [data-bs-theme=dark] { - --bs-body-color: #adb5bd; - --bs-body-color-rgb: 173, 181, 189; + color-scheme: dark; + --bs-body-color: #dee2e6; + --bs-body-color-rgb: 222, 226, 230; --bs-body-bg: #212529; --bs-body-bg-rgb: 33, 37, 41; - --bs-emphasis-color: #f8f9fa; - --bs-emphasis-color-rgb: 248, 249, 250; - --bs-secondary-color: rgba(173, 181, 189, 0.75); - --bs-secondary-color-rgb: 173, 181, 189; + --bs-emphasis-color: #fff; + --bs-emphasis-color-rgb: 255, 255, 255; + --bs-secondary-color: rgba(222, 226, 230, 0.75); + --bs-secondary-color-rgb: 222, 226, 230; --bs-secondary-bg: #343a40; --bs-secondary-bg-rgb: 52, 58, 64; - --bs-tertiary-color: rgba(173, 181, 189, 0.5); - --bs-tertiary-color-rgb: 173, 181, 189; + --bs-tertiary-color: rgba(222, 226, 230, 0.5); + --bs-tertiary-color-rgb: 222, 226, 230; --bs-tertiary-bg: #2b3035; --bs-tertiary-bg-rgb: 43, 48, 53; - --bs-emphasis-color: #fff; - --bs-primary-text: #8c68cd; - --bs-secondary-text: #3c8cd6; - --bs-success-text: #75b798; - --bs-info-text: #6edff6; - --bs-warning-text: #ffda6a; - --bs-danger-text: #ea868f; - --bs-light-text: #f8f9fa; - --bs-dark-text: #dee2e6; + --bs-primary-text-emphasis: #baa4e1; + --bs-secondary-text-emphasis: #8abae6; + --bs-success-text-emphasis: #75b798; + --bs-info-text-emphasis: #6edff6; + --bs-warning-text-emphasis: #ffda6a; + --bs-danger-text-emphasis: #ea868f; + --bs-light-text-emphasis: #f8f9fa; + --bs-dark-text-emphasis: #dee2e6; + --bs-accent-text-emphasis: #9CEC5B; + --bs-cinereous-text-emphasis: #837569; + --bs-verdigris-text-emphasis: #50C5B7; + --bs-icterine-text-emphasis: #F0F465; + --bs-mute-text-emphasis: #6c757d; --bs-primary-bg-subtle: #7d59bd; - --bs-secondary-bg-subtle: #212529; + --bs-secondary-bg-subtle: #0c1c2b; --bs-success-bg-subtle: #051b11; --bs-info-bg-subtle: #032830; --bs-warning-bg-subtle: #332701; --bs-danger-bg-subtle: #2c0b0e; --bs-light-bg-subtle: #343a40; --bs-dark-bg-subtle: #1a1d20; + --bs-accent-bg-subtle: #9CEC5B; + --bs-cinereous-bg-subtle: #837569; + --bs-verdigris-bg-subtle: #50C5B7; + --bs-icterine-bg-subtle: #F0F465; + --bs-mute-bg-subtle: #6c757d; --bs-primary-border-subtle: #714db1; - --bs-secondary-border-subtle: #495057; + --bs-secondary-border-subtle: #245480; --bs-success-border-subtle: #0f5132; - --bs-info-border-subtle: #055160; - --bs-warning-border-subtle: #664d03; + --bs-info-border-subtle: #087990; + --bs-warning-border-subtle: #997404; --bs-danger-border-subtle: #842029; --bs-light-border-subtle: #495057; --bs-dark-border-subtle: #343a40; - --bs-heading-color: #fff; + --bs-accent-border-subtle: #9CEC5B; + --bs-cinereous-border-subtle: #837569; + --bs-verdigris-border-subtle: #50C5B7; + --bs-icterine-border-subtle: #F0F465; + --bs-mute-border-subtle: #6c757d; + --bs-heading-color: inherit; --bs-link-color: #8c68cd; --bs-link-hover-color: #c5b3e6; --bs-link-color-rgb: 140, 104, 205; --bs-link-hover-color-rgb: 197, 179, 230; --bs-code-color: #e685b5; + --bs-highlight-color: #dee2e6; + --bs-highlight-bg: #664d03; --bs-border-color: #495057; --bs-border-color-translucent: rgba(255, 255, 255, 0.15); + --bs-form-valid-color: #75b798; + --bs-form-valid-border-color: #75b798; + --bs-form-invalid-color: #ea868f; + --bs-form-invalid-border-color: #ea868f; } *, @@ -7658,7 +7701,7 @@ h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { margin-bottom: 0.5rem; font-weight: 500; line-height: 1.2; - color: var(--bs-heading-color, inherit); + color: var(--bs-heading-color); } h1, .h1 { @@ -7765,6 +7808,7 @@ small, .small { mark, .mark { padding: 0.1875em; + color: var(--bs-highlight-color); background-color: var(--bs-highlight-bg); } @@ -7980,8 +8024,8 @@ legend + * { } [type=search] { - outline-offset: -2px; -webkit-appearance: textfield; + outline-offset: -2px; } /* rtl:raw: @@ -8206,6 +8250,15 @@ progress { max-width: 1320px; } } +:root { + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + .row { --bs-gutter-x: 1.5rem; --bs-gutter-y: 0; @@ -8245,7 +8298,7 @@ progress { .row-cols-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-4 > * { @@ -8260,7 +8313,7 @@ progress { .row-cols-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-auto { @@ -8450,7 +8503,7 @@ progress { } .row-cols-sm-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-sm-4 > * { flex: 0 0 auto; @@ -8462,7 +8515,7 @@ progress { } .row-cols-sm-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-sm-auto { flex: 0 0 auto; @@ -8619,7 +8672,7 @@ progress { } .row-cols-md-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-md-4 > * { flex: 0 0 auto; @@ -8631,7 +8684,7 @@ progress { } .row-cols-md-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-md-auto { flex: 0 0 auto; @@ -8788,7 +8841,7 @@ progress { } .row-cols-lg-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-lg-4 > * { flex: 0 0 auto; @@ -8800,7 +8853,7 @@ progress { } .row-cols-lg-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-lg-auto { flex: 0 0 auto; @@ -8957,7 +9010,7 @@ progress { } .row-cols-xl-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-xl-4 > * { flex: 0 0 auto; @@ -8969,7 +9022,7 @@ progress { } .row-cols-xl-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-xl-auto { flex: 0 0 auto; @@ -9126,7 +9179,7 @@ progress { } .row-cols-xxl-3 > * { flex: 0 0 auto; - width: 33.3333333333%; + width: 33.33333333%; } .row-cols-xxl-4 > * { flex: 0 0 auto; @@ -9138,7 +9191,7 @@ progress { } .row-cols-xxl-6 > * { flex: 0 0 auto; - width: 16.6666666667%; + width: 16.66666667%; } .col-xxl-auto { flex: 0 0 auto; @@ -9278,27 +9331,31 @@ progress { } } .table { - --bs-table-color: var(--bs-body-color); - --bs-table-bg: transparent; + --bs-table-color-type: initial; + --bs-table-bg-type: initial; + --bs-table-color-state: initial; + --bs-table-bg-state: initial; + --bs-table-color: #dee2e6; + --bs-table-bg: var(--bs-body-bg); --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); + --bs-table-striped-color: var(--bs-emphasis-color); + --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05); + --bs-table-active-color: var(--bs-emphasis-color); + --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1); + --bs-table-hover-color: var(--bs-emphasis-color); + --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 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; + color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color))); background-color: var(--bs-table-bg); border-bottom-width: var(--bs-border-width); - box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); + box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); } .table > tbody { vertical-align: inherit; @@ -9334,29 +9391,29 @@ progress { } .table-striped > tbody > tr:nth-of-type(odd) > * { - --bs-table-accent-bg: var(--bs-table-striped-bg); - color: var(--bs-table-striped-color); + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); } .table-striped-columns > :not(caption) > tr > :nth-child(even) { - --bs-table-accent-bg: var(--bs-table-striped-bg); - color: var(--bs-table-striped-color); + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); } .table-active { - --bs-table-accent-bg: var(--bs-table-active-bg); - color: var(--bs-table-active-color); + --bs-table-color-state: var(--bs-table-active-color); + --bs-table-bg-state: var(--bs-table-active-bg); } .table-hover > tbody > tr:hover > * { - --bs-table-accent-bg: var(--bs-table-hover-bg); - color: var(--bs-table-hover-color); + --bs-table-color-state: var(--bs-table-hover-color); + --bs-table-bg-state: var(--bs-table-hover-bg); } .table-primary { --bs-table-color: #000; --bs-table-bg: #e8e1f5; - --bs-table-border-color: #d1cbdd; + --bs-table-border-color: #bab4c4; --bs-table-striped-bg: #dcd6e9; --bs-table-striped-color: #000; --bs-table-active-bg: #d1cbdd; @@ -9370,7 +9427,7 @@ progress { .table-secondary { --bs-table-color: #000; --bs-table-bg: #d8e8f7; - --bs-table-border-color: #c2d1de; + --bs-table-border-color: #adbac6; --bs-table-striped-bg: #cddceb; --bs-table-striped-color: #000; --bs-table-active-bg: #c2d1de; @@ -9384,7 +9441,7 @@ progress { .table-success { --bs-table-color: #000; --bs-table-bg: #d1e7dd; - --bs-table-border-color: #bcd0c7; + --bs-table-border-color: #a7b9b1; --bs-table-striped-bg: #c7dbd2; --bs-table-striped-color: #000; --bs-table-active-bg: #bcd0c7; @@ -9398,7 +9455,7 @@ progress { .table-info { --bs-table-color: #000; --bs-table-bg: #cff4fc; - --bs-table-border-color: #badce3; + --bs-table-border-color: #a6c3ca; --bs-table-striped-bg: #c5e8ef; --bs-table-striped-color: #000; --bs-table-active-bg: #badce3; @@ -9412,7 +9469,7 @@ progress { .table-warning { --bs-table-color: #000; --bs-table-bg: #fff3cd; - --bs-table-border-color: #e6dbb9; + --bs-table-border-color: #ccc2a4; --bs-table-striped-bg: #f2e7c3; --bs-table-striped-color: #000; --bs-table-active-bg: #e6dbb9; @@ -9426,7 +9483,7 @@ progress { .table-danger { --bs-table-color: #000; --bs-table-bg: #f8d7da; - --bs-table-border-color: #dfc2c4; + --bs-table-border-color: #c6acae; --bs-table-striped-bg: #eccccf; --bs-table-striped-color: #000; --bs-table-active-bg: #dfc2c4; @@ -9440,7 +9497,7 @@ progress { .table-light { --bs-table-color: #000; --bs-table-bg: #f8f9fa; - --bs-table-border-color: #dfe0e1; + --bs-table-border-color: #c6c7c8; --bs-table-striped-bg: #ecedee; --bs-table-striped-color: #000; --bs-table-active-bg: #dfe0e1; @@ -9454,7 +9511,7 @@ progress { .table-dark { --bs-table-color: #fff; --bs-table-bg: #212529; - --bs-table-border-color: #373b3e; + --bs-table-border-color: #4d5154; --bs-table-striped-bg: #2c3034; --bs-table-striped-color: #fff; --bs-table-active-bg: #373b3e; @@ -9538,11 +9595,11 @@ progress { font-weight: 400; line-height: 1.5; color: var(--bs-body-color); - background-color: var(--bs-form-control-bg); + appearance: none; + background-color: var(--bs-body-bg); background-clip: padding-box; border: var(--bs-border-width) solid var(--bs-border-color); - appearance: none; - border-radius: 0.375rem; + border-radius: var(--bs-border-radius); transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } @media (prefers-reduced-motion: reduce) { @@ -9558,13 +9615,15 @@ progress { } .form-control:focus { color: var(--bs-body-color); - background-color: var(--bs-form-control-bg); + background-color: var(--bs-body-bg); border-color: #c6b4e6; outline: 0; box-shadow: 0 0 0 0.25rem rgba(140, 104, 205, 0.25); } .form-control::-webkit-date-and-time-value { + min-width: 85px; height: 1.5em; + margin: 0; } .form-control::-webkit-datetime-edit { display: block; @@ -9575,7 +9634,7 @@ progress { opacity: 1; } .form-control:disabled { - background-color: var(--bs-form-control-disabled-bg); + background-color: var(--bs-secondary-bg); opacity: 1; } .form-control::file-selector-button { @@ -9624,7 +9683,7 @@ progress { min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); padding: 0.25rem 0.5rem; font-size: 0.875rem; - border-radius: 0.25rem; + border-radius: var(--bs-border-radius-sm); } .form-control-sm::file-selector-button { padding: 0.25rem 0.5rem; @@ -9636,7 +9695,7 @@ progress { min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); padding: 0.5rem 1rem; font-size: 1.25rem; - border-radius: 0.5rem; + border-radius: var(--bs-border-radius-lg); } .form-control-lg::file-selector-button { padding: 0.5rem 1rem; @@ -9664,10 +9723,11 @@ textarea.form-control-lg { } .form-control-color::-moz-color-swatch { border: 0 !important; - border-radius: 0.375rem; + border-radius: var(--bs-border-radius); } .form-control-color::-webkit-color-swatch { - border-radius: 0.375rem; + border: 0 !important; + border-radius: var(--bs-border-radius); } .form-control-color.form-control-sm { height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); @@ -9681,20 +9741,19 @@ textarea.form-control-lg { 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: var(--bs-body-color); - background-color: var(--bs-form-control-bg); + appearance: none; + background-color: var(--bs-body-bg); background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 16px 12px; border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: 0.375rem; + border-radius: var(--bs-border-radius); transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } @media (prefers-reduced-motion: reduce) { .form-select { @@ -9711,7 +9770,7 @@ textarea.form-control-lg { background-image: none; } .form-select:disabled { - background-color: var(--bs-form-control-disabled-bg); + background-color: var(--bs-secondary-bg); } .form-select:-moz-focusring { color: transparent; @@ -9723,7 +9782,7 @@ textarea.form-control-lg { padding-bottom: 0.25rem; padding-left: 0.5rem; font-size: 0.875rem; - border-radius: 0.25rem; + border-radius: var(--bs-border-radius-sm); } .form-select-lg { @@ -9731,11 +9790,11 @@ textarea.form-control-lg { padding-bottom: 0.5rem; padding-left: 1rem; font-size: 1.25rem; - border-radius: 0.5rem; + border-radius: var(--bs-border-radius-lg); } [data-bs-theme=dark] .form-select { - --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23adb5bd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); } .form-check { @@ -9761,18 +9820,19 @@ textarea.form-control-lg { } .form-check-input { - --bs-form-check-bg: var(--bs-form-control-bg); + --bs-form-check-bg: var(--bs-body-bg); + flex-shrink: 0; width: 1em; height: 1em; margin-top: 0.25em; vertical-align: top; + appearance: none; background-color: var(--bs-form-check-bg); background-image: var(--bs-form-check-bg-image); background-repeat: no-repeat; background-position: center; background-size: contain; border: var(--bs-border-width) solid var(--bs-border-color); - appearance: none; print-color-adjust: exact; } .form-check-input[type=checkbox] { @@ -9871,8 +9931,8 @@ textarea.form-control-lg { width: 100%; height: 1.5rem; padding: 0; - background-color: transparent; appearance: none; + background-color: transparent; } .form-range:focus { outline: 0; @@ -9890,11 +9950,11 @@ textarea.form-control-lg { width: 1rem; height: 1rem; margin-top: -0.25rem; + appearance: none; background-color: #8c68cd; border: 0; border-radius: 1rem; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } @media (prefers-reduced-motion: reduce) { .form-range::-webkit-slider-thumb { @@ -9909,18 +9969,18 @@ textarea.form-control-lg { height: 0.5rem; color: transparent; cursor: pointer; - background-color: var(--bs-tertiary-bg); + background-color: var(--bs-secondary-bg); border-color: transparent; border-radius: 1rem; } .form-range::-moz-range-thumb { width: 1rem; height: 1rem; + appearance: none; background-color: #8c68cd; border: 0; border-radius: 1rem; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } @media (prefers-reduced-motion: reduce) { .form-range::-moz-range-thumb { @@ -9935,7 +9995,7 @@ textarea.form-control-lg { height: 0.5rem; color: transparent; cursor: pointer; - background-color: var(--bs-tertiary-bg); + background-color: var(--bs-secondary-bg); border-color: transparent; border-radius: 1rem; } @@ -9952,27 +10012,18 @@ textarea.form-control-lg { .form-floating { position: relative; } -.form-floating::before:not(.form-control:disabled) { - position: absolute; - top: var(--bs-border-width); - left: var(--bs-border-width); - width: calc(100% - (calc(calc(0.375em + 0.1875rem) + calc(0.75em + 0.375rem)))); - height: 1.875em; - content: ""; - background-color: var(--bs-form-control-bg); - border-radius: 0.375rem; -} .form-floating > .form-control, .form-floating > .form-control-plaintext, .form-floating > .form-select { height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--bs-border-width) * 2)); line-height: 1.25; } .form-floating > label { position: absolute; top: 0; left: 0; - width: 100%; + z-index: 2; height: 100%; padding: 1rem 0.75rem; overflow: hidden; @@ -10016,19 +10067,36 @@ textarea.form-control-lg { .form-floating > .form-control:not(:placeholder-shown) ~ label, .form-floating > .form-control-plaintext ~ label, .form-floating > .form-select ~ label { - opacity: 0.65; + color: rgba(var(--bs-body-color-rgb), 0.65); transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); } +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); +} .form-floating > .form-control:-webkit-autofill ~ label { - opacity: 0.65; + color: rgba(var(--bs-body-color-rgb), 0.65); transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); } .form-floating > .form-control-plaintext ~ label { border-width: var(--bs-border-width) 0; } +.form-floating > :disabled ~ label, .form-floating > .form-control:disabled ~ label { color: #6c757d; } +.form-floating > :disabled ~ label::after, +.form-floating > .form-control:disabled ~ label::after { + background-color: var(--bs-secondary-bg); +} .input-group { position: relative; @@ -10070,7 +10138,7 @@ textarea.form-control-lg { white-space: nowrap; background-color: var(--bs-tertiary-bg); border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: 0.375rem; + border-radius: var(--bs-border-radius); } .input-group-lg > .form-control, @@ -10079,7 +10147,7 @@ textarea.form-control-lg { .input-group-lg > .btn { padding: 0.5rem 1rem; font-size: 1.25rem; - border-radius: 0.5rem; + border-radius: var(--bs-border-radius-lg); } .input-group-sm > .form-control, @@ -10088,7 +10156,7 @@ textarea.form-control-lg { .input-group-sm > .btn { padding: 0.25rem 0.5rem; font-size: 0.875rem; - border-radius: 0.25rem; + border-radius: var(--bs-border-radius-sm); } .input-group-lg > .form-select, @@ -10126,7 +10194,7 @@ textarea.form-control-lg { width: 100%; margin-top: 0.25rem; font-size: 0.875em; - color: var(--bs-success-text); + color: var(--bs-form-valid-color); } .valid-tooltip { @@ -10151,7 +10219,7 @@ textarea.form-control-lg { } .was-validated .form-control:valid, .form-control.is-valid { - border-color: var(--bs-success); + border-color: var(--bs-form-valid-border-color); 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; @@ -10159,7 +10227,7 @@ textarea.form-control-lg { 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: var(--bs-success); + border-color: var(--bs-form-valid-border-color); box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } @@ -10169,7 +10237,7 @@ textarea.form-control-lg { } .was-validated .form-select:valid, .form-select.is-valid { - border-color: var(--bs-success); + border-color: var(--bs-form-valid-border-color); } .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"] { --bs-form-select-bg-icon: 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"); @@ -10178,7 +10246,7 @@ textarea.form-control-lg { 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: var(--bs-success); + border-color: var(--bs-form-valid-border-color); box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } @@ -10187,16 +10255,16 @@ textarea.form-control-lg { } .was-validated .form-check-input:valid, .form-check-input.is-valid { - border-color: var(--bs-success); + border-color: var(--bs-form-valid-border-color); } .was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { - background-color: var(--bs-success-text); + background-color: var(--bs-form-valid-color); } .was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: var(--bs-success-text); + color: var(--bs-form-valid-color); } .form-check-inline .form-check-input ~ .valid-feedback { @@ -10216,7 +10284,7 @@ textarea.form-control-lg { width: 100%; margin-top: 0.25rem; font-size: 0.875em; - color: var(--bs-danger-text); + color: var(--bs-form-invalid-color); } .invalid-tooltip { @@ -10241,7 +10309,7 @@ textarea.form-control-lg { } .was-validated .form-control:invalid, .form-control.is-invalid { - border-color: var(--bs-danger); + border-color: var(--bs-form-invalid-border-color); 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; @@ -10249,7 +10317,7 @@ textarea.form-control-lg { 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: var(--bs-danger); + border-color: var(--bs-form-invalid-border-color); box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } @@ -10259,7 +10327,7 @@ textarea.form-control-lg { } .was-validated .form-select:invalid, .form-select.is-invalid { - border-color: var(--bs-danger); + border-color: var(--bs-form-invalid-border-color); } .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"] { --bs-form-select-bg-icon: 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"); @@ -10268,7 +10336,7 @@ textarea.form-control-lg { 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: var(--bs-danger); + border-color: var(--bs-form-invalid-border-color); box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } @@ -10277,16 +10345,16 @@ textarea.form-control-lg { } .was-validated .form-check-input:invalid, .form-check-input.is-invalid { - border-color: var(--bs-danger); + border-color: var(--bs-form-invalid-border-color); } .was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { - background-color: var(--bs-danger-text); + background-color: var(--bs-form-invalid-color); } .was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: var(--bs-danger-text); + color: var(--bs-form-invalid-color); } .form-check-inline .form-check-input ~ .invalid-feedback { @@ -10308,11 +10376,11 @@ textarea.form-control-lg { --bs-btn-font-size: 1rem; --bs-btn-font-weight: 400; --bs-btn-line-height: 1.5; - --bs-btn-color: #212529; + --bs-btn-color: var(--bs-body-color); --bs-btn-bg: transparent; --bs-btn-border-width: var(--bs-border-width); --bs-btn-border-color: transparent; - --bs-btn-border-radius: 0.375rem; + --bs-btn-border-radius: var(--bs-border-radius); --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; @@ -10369,6 +10437,9 @@ textarea.form-control-lg { .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-check:checked:focus-visible + .btn { + box-shadow: var(--bs-btn-focus-box-shadow); +} .btn:disabled, .btn.disabled, fieldset:disabled .btn { color: var(--bs-btn-disabled-color); pointer-events: none; @@ -10515,19 +10586,70 @@ textarea.form-control-lg { .btn-accent { --bs-btn-color: #000; - --bs-btn-bg: #009696; - --bs-btn-border-color: #009696; + --bs-btn-bg: #9CEC5B; + --bs-btn-border-color: #9CEC5B; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #abef74; + --bs-btn-hover-border-color: #a6ee6b; + --bs-btn-focus-shadow-rgb: 133, 201, 77; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #b0f07c; + --bs-btn-active-border-color: #a6ee6b; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #9CEC5B; + --bs-btn-disabled-border-color: #9CEC5B; +} + +.btn-cinereous { + --bs-btn-color: #000; + --bs-btn-bg: #837569; + --bs-btn-border-color: #837569; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #968a80; + --bs-btn-hover-border-color: #8f8378; + --bs-btn-focus-shadow-rgb: 111, 99, 89; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #9c9187; + --bs-btn-active-border-color: #8f8378; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #837569; + --bs-btn-disabled-border-color: #837569; +} + +.btn-verdigris { + --bs-btn-color: #000; + --bs-btn-bg: #50C5B7; + --bs-btn-border-color: #50C5B7; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #6acec2; + --bs-btn-hover-border-color: #62cbbe; + --bs-btn-focus-shadow-rgb: 68, 167, 156; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #73d1c5; + --bs-btn-active-border-color: #62cbbe; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #50C5B7; + --bs-btn-disabled-border-color: #50C5B7; +} + +.btn-icterine { + --bs-btn-color: #000; + --bs-btn-bg: #F0F465; + --bs-btn-border-color: #F0F465; --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #26a6a6; - --bs-btn-hover-border-color: #1aa1a1; - --bs-btn-focus-shadow-rgb: 0, 128, 128; + --bs-btn-hover-bg: #f2f67c; + --bs-btn-hover-border-color: #f2f574; + --bs-btn-focus-shadow-rgb: 204, 207, 86; --bs-btn-active-color: #000; - --bs-btn-active-bg: #33abab; - --bs-btn-active-border-color: #1aa1a1; + --bs-btn-active-bg: #f3f684; + --bs-btn-active-border-color: #f2f574; --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); --bs-btn-disabled-color: #000; - --bs-btn-disabled-bg: #009696; - --bs-btn-disabled-border-color: #009696; + --bs-btn-disabled-bg: #F0F465; + --bs-btn-disabled-border-color: #F0F465; } .btn-mute { @@ -10684,19 +10806,70 @@ textarea.form-control-lg { } .btn-outline-accent { - --bs-btn-color: #009696; - --bs-btn-border-color: #009696; + --bs-btn-color: #9CEC5B; + --bs-btn-border-color: #9CEC5B; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #9CEC5B; + --bs-btn-hover-border-color: #9CEC5B; + --bs-btn-focus-shadow-rgb: 156, 236, 91; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #9CEC5B; + --bs-btn-active-border-color: #9CEC5B; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #9CEC5B; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #9CEC5B; + --bs-gradient: none; +} + +.btn-outline-cinereous { + --bs-btn-color: #837569; + --bs-btn-border-color: #837569; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #837569; + --bs-btn-hover-border-color: #837569; + --bs-btn-focus-shadow-rgb: 131, 117, 105; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #837569; + --bs-btn-active-border-color: #837569; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #837569; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #837569; + --bs-gradient: none; +} + +.btn-outline-verdigris { + --bs-btn-color: #50C5B7; + --bs-btn-border-color: #50C5B7; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #50C5B7; + --bs-btn-hover-border-color: #50C5B7; + --bs-btn-focus-shadow-rgb: 80, 197, 183; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #50C5B7; + --bs-btn-active-border-color: #50C5B7; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #50C5B7; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #50C5B7; + --bs-gradient: none; +} + +.btn-outline-icterine { + --bs-btn-color: #F0F465; + --bs-btn-border-color: #F0F465; --bs-btn-hover-color: #000; - --bs-btn-hover-bg: #009696; - --bs-btn-hover-border-color: #009696; - --bs-btn-focus-shadow-rgb: 0, 150, 150; + --bs-btn-hover-bg: #F0F465; + --bs-btn-hover-border-color: #F0F465; + --bs-btn-focus-shadow-rgb: 240, 244, 101; --bs-btn-active-color: #000; - --bs-btn-active-bg: #009696; - --bs-btn-active-border-color: #009696; + --bs-btn-active-bg: #F0F465; + --bs-btn-active-border-color: #F0F465; --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --bs-btn-disabled-color: #009696; + --bs-btn-disabled-color: #F0F465; --bs-btn-disabled-bg: transparent; - --bs-btn-disabled-border-color: #009696; + --bs-btn-disabled-border-color: #F0F465; --bs-gradient: none; } @@ -10728,7 +10901,7 @@ textarea.form-control-lg { --bs-btn-active-border-color: transparent; --bs-btn-disabled-color: #6c757d; --bs-btn-disabled-border-color: transparent; - --bs-btn-box-shadow: none; + --bs-btn-box-shadow: 0 0 0 #000; --bs-btn-focus-shadow-rgb: 119, 88, 174; text-decoration: underline; } @@ -10743,14 +10916,14 @@ textarea.form-control-lg { --bs-btn-padding-y: 0.5rem; --bs-btn-padding-x: 1rem; --bs-btn-font-size: 1.25rem; - --bs-btn-border-radius: 0.5rem; + --bs-btn-border-radius: var(--bs-border-radius-lg); } .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; + --bs-btn-border-radius: var(--bs-border-radius-sm); } .fade { @@ -10826,18 +10999,18 @@ textarea.form-control-lg { --bs-dropdown-color: var(--bs-body-color); --bs-dropdown-bg: var(--bs-body-bg); --bs-dropdown-border-color: var(--bs-border-color-translucent); - --bs-dropdown-border-radius: 0.375rem; + --bs-dropdown-border-radius: var(--bs-border-radius); --bs-dropdown-border-width: var(--bs-border-width); - --bs-dropdown-inner-border-radius: calc(0.375rem - var(--bs-border-width)); + --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width)); --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(var(--bs-body-color-rgb), 0.15); + --bs-dropdown-box-shadow: var(--bs-box-shadow); --bs-dropdown-link-color: var(--bs-body-color); --bs-dropdown-link-hover-color: var(--bs-body-color); --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); --bs-dropdown-link-active-color: #fff; --bs-dropdown-link-active-bg: #8c68cd; - --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); --bs-dropdown-item-padding-x: 1rem; --bs-dropdown-item-padding-y: 0.25rem; --bs-dropdown-header-color: #6c757d; @@ -11143,7 +11316,7 @@ textarea.form-control-lg { } .btn-group { - border-radius: 0.375rem; + border-radius: var(--bs-border-radius); } .btn-group > :not(.btn-check:first-child) + .btn, .btn-group > .btn-group:not(:first-child) { @@ -11228,6 +11401,8 @@ textarea.form-control-lg { font-weight: var(--bs-nav-link-font-weight); color: var(--bs-nav-link-color); text-decoration: none; + background: none; + border: 0; 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) { @@ -11238,7 +11413,11 @@ textarea.form-control-lg { .nav-link:hover, .nav-link:focus { color: var(--bs-nav-link-hover-color); } -.nav-link.disabled { +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(140, 104, 205, 0.25); +} +.nav-link.disabled, .nav-link:disabled { color: var(--bs-nav-link-disabled-color); pointer-events: none; cursor: default; @@ -11256,7 +11435,6 @@ textarea.form-control-lg { } .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); @@ -11265,11 +11443,6 @@ textarea.form-control-lg { 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); @@ -11283,26 +11456,40 @@ textarea.form-control-lg { } .nav-pills { - --bs-nav-pills-border-radius: 0.375rem; + --bs-nav-pills-border-radius: var(--bs-border-radius); --bs-nav-pills-link-active-color: #fff; --bs-nav-pills-link-active-bg: #8c68cd; } .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-underline { + --bs-nav-underline-gap: 1rem; + --bs-nav-underline-border-width: 0.125rem; + --bs-nav-underline-link-active-color: var(--bs-emphasis-color); + gap: var(--bs-nav-underline-gap); +} +.nav-underline .nav-link { + padding-right: 0; + padding-left: 0; + border-bottom: var(--bs-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 700; + color: var(--bs-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} + .nav-fill > .nav-link, .nav-fill .nav-item { flex: 1 1 auto; @@ -11346,7 +11533,7 @@ textarea.form-control-lg { --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%2833, 37, 41, 0.75%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(var(--bs-emphasis-color-rgb), 0.15); - --bs-navbar-toggler-border-radius: 0.375rem; + --bs-navbar-toggler-border-radius: var(--bs-border-radius); --bs-navbar-toggler-focus-width: 0.25rem; --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; position: relative; @@ -11394,8 +11581,7 @@ textarea.form-control-lg { margin-bottom: 0; list-style: none; } -.navbar-nav .show > .nav-link, -.navbar-nav .nav-link.active { +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { color: var(--bs-navbar-active-color); } .navbar-nav .dropdown-menu { @@ -11740,7 +11926,8 @@ textarea.form-control-lg { overflow-y: visible; } -.navbar-dark { +.navbar-dark, +.navbar[data-bs-theme=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); @@ -11751,7 +11938,7 @@ textarea.form-control-lg { --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"); } -[data-bs-theme=dark] .navbar { +[data-bs-theme=dark] .navbar-toggler-icon { --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"); } @@ -11780,6 +11967,7 @@ textarea.form-control-lg { flex-direction: column; min-width: 0; height: var(--bs-card-height); + color: var(--bs-body-color); word-wrap: break-word; background-color: var(--bs-card-bg); background-clip: border-box; @@ -11953,16 +12141,15 @@ textarea.form-control-lg { --bs-accordion-btn-padding-y: 1rem; --bs-accordion-btn-color: var(--bs-body-color); --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: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%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='%238c68cd'%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: #c6b4e6; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23382a52' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(140, 104, 205, 0.25); --bs-accordion-body-padding-x: 1.25rem; --bs-accordion-body-padding-y: 1rem; - --bs-accordion-active-color: var(--bs-primary-text-dark); + --bs-accordion-active-color: var(--bs-primary-text-emphasis); --bs-accordion-active-bg: var(--bs-primary-bg-subtle); } @@ -12016,7 +12203,6 @@ textarea.form-control-lg { } .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); } @@ -12034,7 +12220,7 @@ textarea.form-control-lg { 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 { +.accordion-item:first-of-type > .accordion-header .accordion-button { border-top-left-radius: var(--bs-accordion-inner-border-radius); border-top-right-radius: var(--bs-accordion-inner-border-radius); } @@ -12045,11 +12231,11 @@ textarea.form-control-lg { 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 { +.accordion-item:last-of-type > .accordion-header .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 { +.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); } @@ -12058,27 +12244,27 @@ textarea.form-control-lg { padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); } -.accordion-flush .accordion-collapse { - border-width: 0; -} -.accordion-flush .accordion-item { +.accordion-flush > .accordion-item { border-right: 0; border-left: 0; border-radius: 0; } -.accordion-flush .accordion-item:first-child { +.accordion-flush > .accordion-item:first-child { border-top: 0; } -.accordion-flush .accordion-item:last-child { +.accordion-flush > .accordion-item:last-child { border-bottom: 0; } -.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { +.accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed { + border-radius: 0; +} +.accordion-flush > .accordion-item > .accordion-collapse { border-radius: 0; } [data-bs-theme=dark] .accordion-button::after { - --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238c68cd'%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-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238c68cd'%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: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23baa4e1'%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-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23baa4e1'%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"); } .breadcrumb { @@ -12197,14 +12383,14 @@ textarea.form-control-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; + --bs-pagination-border-radius: var(--bs-border-radius-lg); } .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; + --bs-pagination-border-radius: var(--bs-border-radius-sm); } .badge { @@ -12213,7 +12399,7 @@ textarea.form-control-lg { --bs-badge-font-size: 0.75em; --bs-badge-font-weight: 700; --bs-badge-color: #fff; - --bs-badge-border-radius: 0.375rem; + --bs-badge-border-radius: var(--bs-border-radius); display: inline-block; padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); font-size: var(--bs-badge-font-size); @@ -12242,7 +12428,7 @@ textarea.form-control-lg { --bs-alert-color: inherit; --bs-alert-border-color: transparent; --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); - --bs-alert-border-radius: 0.375rem; + --bs-alert-border-radius: var(--bs-border-radius); --bs-alert-link-color: inherit; position: relative; padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); @@ -12274,73 +12460,94 @@ textarea.form-control-lg { } .alert-primary { - --bs-alert-color: var(--bs-primary-text); + --bs-alert-color: var(--bs-primary-text-emphasis); --bs-alert-bg: var(--bs-primary-bg-subtle); --bs-alert-border-color: var(--bs-primary-border-subtle); - --bs-alert-link-color: var(--bs-primary-text); + --bs-alert-link-color: var(--bs-primary-text-emphasis); } .alert-secondary { - --bs-alert-color: var(--bs-secondary-text); + --bs-alert-color: var(--bs-secondary-text-emphasis); --bs-alert-bg: var(--bs-secondary-bg-subtle); --bs-alert-border-color: var(--bs-secondary-border-subtle); - --bs-alert-link-color: var(--bs-secondary-text); + --bs-alert-link-color: var(--bs-secondary-text-emphasis); } .alert-success { - --bs-alert-color: var(--bs-success-text); + --bs-alert-color: var(--bs-success-text-emphasis); --bs-alert-bg: var(--bs-success-bg-subtle); --bs-alert-border-color: var(--bs-success-border-subtle); - --bs-alert-link-color: var(--bs-success-text); + --bs-alert-link-color: var(--bs-success-text-emphasis); } .alert-info { - --bs-alert-color: var(--bs-info-text); + --bs-alert-color: var(--bs-info-text-emphasis); --bs-alert-bg: var(--bs-info-bg-subtle); --bs-alert-border-color: var(--bs-info-border-subtle); - --bs-alert-link-color: var(--bs-info-text); + --bs-alert-link-color: var(--bs-info-text-emphasis); } .alert-warning { - --bs-alert-color: var(--bs-warning-text); + --bs-alert-color: var(--bs-warning-text-emphasis); --bs-alert-bg: var(--bs-warning-bg-subtle); --bs-alert-border-color: var(--bs-warning-border-subtle); - --bs-alert-link-color: var(--bs-warning-text); + --bs-alert-link-color: var(--bs-warning-text-emphasis); } .alert-danger { - --bs-alert-color: var(--bs-danger-text); + --bs-alert-color: var(--bs-danger-text-emphasis); --bs-alert-bg: var(--bs-danger-bg-subtle); --bs-alert-border-color: var(--bs-danger-border-subtle); - --bs-alert-link-color: var(--bs-danger-text); + --bs-alert-link-color: var(--bs-danger-text-emphasis); } .alert-light { - --bs-alert-color: var(--bs-light-text); + --bs-alert-color: var(--bs-light-text-emphasis); --bs-alert-bg: var(--bs-light-bg-subtle); --bs-alert-border-color: var(--bs-light-border-subtle); - --bs-alert-link-color: var(--bs-light-text); + --bs-alert-link-color: var(--bs-light-text-emphasis); } .alert-dark { - --bs-alert-color: var(--bs-dark-text); + --bs-alert-color: var(--bs-dark-text-emphasis); --bs-alert-bg: var(--bs-dark-bg-subtle); --bs-alert-border-color: var(--bs-dark-border-subtle); - --bs-alert-link-color: var(--bs-dark-text); + --bs-alert-link-color: var(--bs-dark-text-emphasis); } .alert-accent { - --bs-alert-color: var(--bs-accent-text); + --bs-alert-color: var(--bs-accent-text-emphasis); --bs-alert-bg: var(--bs-accent-bg-subtle); --bs-alert-border-color: var(--bs-accent-border-subtle); - --bs-alert-link-color: var(--bs-accent-text); + --bs-alert-link-color: var(--bs-accent-text-emphasis); +} + +.alert-cinereous { + --bs-alert-color: var(--bs-cinereous-text-emphasis); + --bs-alert-bg: var(--bs-cinereous-bg-subtle); + --bs-alert-border-color: var(--bs-cinereous-border-subtle); + --bs-alert-link-color: var(--bs-cinereous-text-emphasis); +} + +.alert-verdigris { + --bs-alert-color: var(--bs-verdigris-text-emphasis); + --bs-alert-bg: var(--bs-verdigris-bg-subtle); + --bs-alert-border-color: var(--bs-verdigris-border-subtle); + --bs-alert-link-color: var(--bs-verdigris-text-emphasis); +} + +.alert-icterine { + --bs-alert-color: var(--bs-icterine-text-emphasis); + --bs-alert-bg: var(--bs-icterine-bg-subtle); + --bs-alert-border-color: var(--bs-icterine-border-subtle); + --bs-alert-link-color: var(--bs-icterine-text-emphasis); } .alert-mute { - --bs-alert-color: var(--bs-mute-text); + --bs-alert-color: var(--bs-mute-text-emphasis); --bs-alert-bg: var(--bs-mute-bg-subtle); --bs-alert-border-color: var(--bs-mute-border-subtle); - --bs-alert-link-color: var(--bs-mute-text); + --bs-alert-link-color: var(--bs-mute-text-emphasis); } @keyframes progress-bar-stripes { @@ -12645,153 +12852,172 @@ textarea.form-control-lg { } .list-group-item-primary { - --bs-list-group-color: var(--bs-primary-text); + --bs-list-group-color: var(--bs-primary-text-emphasis); --bs-list-group-bg: var(--bs-primary-bg-subtle); --bs-list-group-border-color: var(--bs-primary-border-subtle); -} -.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); -} -.list-group-item-primary.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-primary-text); - --bs-list-group-active-border-color: var(--bs-primary-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-primary-border-subtle); + --bs-list-group-active-color: var(--bs-primary-bg-subtle); + --bs-list-group-active-bg: var(--bs-primary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-primary-text-emphasis); } .list-group-item-secondary { - --bs-list-group-color: var(--bs-secondary-text); + --bs-list-group-color: var(--bs-secondary-text-emphasis); --bs-list-group-bg: var(--bs-secondary-bg-subtle); --bs-list-group-border-color: var(--bs-secondary-border-subtle); -} -.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); -} -.list-group-item-secondary.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-secondary-text); - --bs-list-group-active-border-color: var(--bs-secondary-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle); + --bs-list-group-active-color: var(--bs-secondary-bg-subtle); + --bs-list-group-active-bg: var(--bs-secondary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis); } .list-group-item-success { - --bs-list-group-color: var(--bs-success-text); + --bs-list-group-color: var(--bs-success-text-emphasis); --bs-list-group-bg: var(--bs-success-bg-subtle); --bs-list-group-border-color: var(--bs-success-border-subtle); -} -.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); -} -.list-group-item-success.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-success-text); - --bs-list-group-active-border-color: var(--bs-success-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-success-border-subtle); + --bs-list-group-active-color: var(--bs-success-bg-subtle); + --bs-list-group-active-bg: var(--bs-success-text-emphasis); + --bs-list-group-active-border-color: var(--bs-success-text-emphasis); } .list-group-item-info { - --bs-list-group-color: var(--bs-info-text); + --bs-list-group-color: var(--bs-info-text-emphasis); --bs-list-group-bg: var(--bs-info-bg-subtle); --bs-list-group-border-color: var(--bs-info-border-subtle); -} -.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); -} -.list-group-item-info.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-info-text); - --bs-list-group-active-border-color: var(--bs-info-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-info-border-subtle); + --bs-list-group-active-color: var(--bs-info-bg-subtle); + --bs-list-group-active-bg: var(--bs-info-text-emphasis); + --bs-list-group-active-border-color: var(--bs-info-text-emphasis); } .list-group-item-warning { - --bs-list-group-color: var(--bs-warning-text); + --bs-list-group-color: var(--bs-warning-text-emphasis); --bs-list-group-bg: var(--bs-warning-bg-subtle); --bs-list-group-border-color: var(--bs-warning-border-subtle); -} -.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); -} -.list-group-item-warning.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-warning-text); - --bs-list-group-active-border-color: var(--bs-warning-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-warning-border-subtle); + --bs-list-group-active-color: var(--bs-warning-bg-subtle); + --bs-list-group-active-bg: var(--bs-warning-text-emphasis); + --bs-list-group-active-border-color: var(--bs-warning-text-emphasis); } .list-group-item-danger { - --bs-list-group-color: var(--bs-danger-text); + --bs-list-group-color: var(--bs-danger-text-emphasis); --bs-list-group-bg: var(--bs-danger-bg-subtle); --bs-list-group-border-color: var(--bs-danger-border-subtle); -} -.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); -} -.list-group-item-danger.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-danger-text); - --bs-list-group-active-border-color: var(--bs-danger-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-danger-border-subtle); + --bs-list-group-active-color: var(--bs-danger-bg-subtle); + --bs-list-group-active-bg: var(--bs-danger-text-emphasis); + --bs-list-group-active-border-color: var(--bs-danger-text-emphasis); } .list-group-item-light { - --bs-list-group-color: var(--bs-light-text); + --bs-list-group-color: var(--bs-light-text-emphasis); --bs-list-group-bg: var(--bs-light-bg-subtle); --bs-list-group-border-color: var(--bs-light-border-subtle); -} -.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); -} -.list-group-item-light.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-light-text); - --bs-list-group-active-border-color: var(--bs-light-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-light-border-subtle); + --bs-list-group-active-color: var(--bs-light-bg-subtle); + --bs-list-group-active-bg: var(--bs-light-text-emphasis); + --bs-list-group-active-border-color: var(--bs-light-text-emphasis); } .list-group-item-dark { - --bs-list-group-color: var(--bs-dark-text); + --bs-list-group-color: var(--bs-dark-text-emphasis); --bs-list-group-bg: var(--bs-dark-bg-subtle); --bs-list-group-border-color: var(--bs-dark-border-subtle); -} -.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); -} -.list-group-item-dark.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-dark-text); - --bs-list-group-active-border-color: var(--bs-dark-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-dark-border-subtle); + --bs-list-group-active-color: var(--bs-dark-bg-subtle); + --bs-list-group-active-bg: var(--bs-dark-text-emphasis); + --bs-list-group-active-border-color: var(--bs-dark-text-emphasis); } .list-group-item-accent { - --bs-list-group-color: var(--bs-accent-text); + --bs-list-group-color: var(--bs-accent-text-emphasis); --bs-list-group-bg: var(--bs-accent-bg-subtle); --bs-list-group-border-color: var(--bs-accent-border-subtle); -} -.list-group-item-accent.list-group-item-action:hover, .list-group-item-accent.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-accent-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-accent-border-subtle); + --bs-list-group-active-color: var(--bs-accent-bg-subtle); + --bs-list-group-active-bg: var(--bs-accent-text-emphasis); + --bs-list-group-active-border-color: var(--bs-accent-text-emphasis); } -.list-group-item-accent.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-accent-text); - --bs-list-group-active-border-color: var(--bs-accent-text); + +.list-group-item-cinereous { + --bs-list-group-color: var(--bs-cinereous-text-emphasis); + --bs-list-group-bg: var(--bs-cinereous-bg-subtle); + --bs-list-group-border-color: var(--bs-cinereous-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-cinereous-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-cinereous-border-subtle); + --bs-list-group-active-color: var(--bs-cinereous-bg-subtle); + --bs-list-group-active-bg: var(--bs-cinereous-text-emphasis); + --bs-list-group-active-border-color: var(--bs-cinereous-text-emphasis); +} + +.list-group-item-verdigris { + --bs-list-group-color: var(--bs-verdigris-text-emphasis); + --bs-list-group-bg: var(--bs-verdigris-bg-subtle); + --bs-list-group-border-color: var(--bs-verdigris-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-verdigris-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-verdigris-border-subtle); + --bs-list-group-active-color: var(--bs-verdigris-bg-subtle); + --bs-list-group-active-bg: var(--bs-verdigris-text-emphasis); + --bs-list-group-active-border-color: var(--bs-verdigris-text-emphasis); +} + +.list-group-item-icterine { + --bs-list-group-color: var(--bs-icterine-text-emphasis); + --bs-list-group-bg: var(--bs-icterine-bg-subtle); + --bs-list-group-border-color: var(--bs-icterine-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-icterine-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-icterine-border-subtle); + --bs-list-group-active-color: var(--bs-icterine-bg-subtle); + --bs-list-group-active-bg: var(--bs-icterine-text-emphasis); + --bs-list-group-active-border-color: var(--bs-icterine-text-emphasis); } .list-group-item-mute { - --bs-list-group-color: var(--bs-mute-text); + --bs-list-group-color: var(--bs-mute-text-emphasis); --bs-list-group-bg: var(--bs-mute-bg-subtle); --bs-list-group-border-color: var(--bs-mute-border-subtle); -} -.list-group-item-mute.list-group-item-action:hover, .list-group-item-mute.list-group-item-action:focus { --bs-list-group-action-hover-color: var(--bs-emphasis-color); --bs-list-group-action-hover-bg: var(--bs-mute-border-subtle); -} -.list-group-item-mute.list-group-item-action:active { - --bs-list-group-active-color: var(--bs-emphasis-color); - --bs-list-group-active-bg: var(--bs-mute-text); - --bs-list-group-active-border-color: var(--bs-mute-text); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-mute-border-subtle); + --bs-list-group-active-color: var(--bs-mute-bg-subtle); + --bs-list-group-active-bg: var(--bs-mute-text-emphasis); + --bs-list-group-active-border-color: var(--bs-mute-text-emphasis); } .btn-close { @@ -12914,7 +13140,7 @@ textarea.form-control-lg { --bs-modal-border-color: var(--bs-border-color-translucent); --bs-modal-border-width: var(--bs-border-width); --bs-modal-border-radius: var(--bs-border-radius-lg); - --bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); + --bs-modal-box-shadow: var(--bs-box-shadow-sm); --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width))); --bs-modal-header-padding-x: 1rem; --bs-modal-header-padding-y: 1rem; @@ -13014,7 +13240,6 @@ textarea.form-control-lg { 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); @@ -13055,7 +13280,7 @@ textarea.form-control-lg { @media (min-width: 576px) { .modal { --bs-modal-margin: 1.75rem; - --bs-modal-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); + --bs-modal-box-shadow: var(--bs-box-shadow); } .modal-dialog { max-width: var(--bs-modal-width); @@ -13211,7 +13436,6 @@ textarea.form-control-lg { --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: "Inconsolata", monospace; font-style: normal; @@ -13247,7 +13471,7 @@ textarea.form-control-lg { } .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { - bottom: 0; + bottom: calc(-1 * var(--bs-tooltip-arrow-height)); } .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { top: -1px; @@ -13257,7 +13481,7 @@ textarea.form-control-lg { /* rtl:begin:ignore */ .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { - left: 0; + left: calc(-1 * var(--bs-tooltip-arrow-height)); width: var(--bs-tooltip-arrow-height); height: var(--bs-tooltip-arrow-width); } @@ -13269,7 +13493,7 @@ textarea.form-control-lg { /* rtl:end:ignore */ .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { - top: 0; + top: calc(-1 * var(--bs-tooltip-arrow-height)); } .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { bottom: -1px; @@ -13279,7 +13503,7 @@ textarea.form-control-lg { /* rtl:begin:ignore */ .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { - right: 0; + right: calc(-1 * var(--bs-tooltip-arrow-height)); width: var(--bs-tooltip-arrow-height); height: var(--bs-tooltip-arrow-width); } @@ -13308,11 +13532,11 @@ textarea.form-control-lg { --bs-popover-border-color: var(--bs-border-color-translucent); --bs-popover-border-radius: var(--bs-border-radius-lg); --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width)); - --bs-popover-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); + --bs-popover-box-shadow: var(--bs-box-shadow); --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-color: inherit; --bs-popover-header-bg: var(--bs-secondary-bg); --bs-popover-body-padding-x: 1rem; --bs-popover-body-padding-y: 1rem; @@ -13580,20 +13804,12 @@ textarea.form-control-lg { 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"); + 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") /*rtl: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-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"); + 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") /*rtl: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-indicators { @@ -13608,7 +13824,6 @@ textarea.form-control-lg { margin-right: 15%; margin-bottom: 1rem; margin-left: 15%; - list-style: none; } .carousel-indicators [data-bs-target] { box-sizing: content-box; @@ -13660,13 +13875,14 @@ textarea.form-control-lg { } [data-bs-theme=dark] .carousel .carousel-control-prev-icon, -[data-bs-theme=dark] .carousel .carousel-control-next-icon { +[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon, +[data-bs-theme=dark].carousel .carousel-control-next-icon { filter: invert(1) grayscale(100); } -[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target] { +[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] { background-color: #000; } -[data-bs-theme=dark] .carousel .carousel-caption { +[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption { color: #000; } @@ -13742,7 +13958,7 @@ textarea.form-control-lg { --bs-offcanvas-bg: var(--bs-body-bg); --bs-offcanvas-border-width: var(--bs-border-width); --bs-offcanvas-border-color: var(--bs-border-color-translucent); - --bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); + --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm); --bs-offcanvas-transition: transform 0.3s ease-in-out; --bs-offcanvas-title-line-height: 1.5; } @@ -14263,14 +14479,11 @@ textarea.form-control-lg { .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)); + margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) calc(-0.5 * var(--bs-offcanvas-padding-x)) calc(-0.5 * var(--bs-offcanvas-padding-y)) auto; } .offcanvas-title { @@ -14337,122 +14550,223 @@ textarea.form-control-lg { .text-bg-primary { color: #000 !important; - background-color: RGBA(140, 104, 205, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-secondary { color: #000 !important; - background-color: RGBA(60, 140, 214, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-success { color: #fff !important; - background-color: RGBA(25, 135, 84, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-info { color: #000 !important; - background-color: RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-warning { color: #000 !important; - background-color: RGBA(255, 193, 7, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-danger { color: #fff !important; - background-color: RGBA(220, 53, 69, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-light { color: #000 !important; - background-color: RGBA(248, 249, 250, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-dark { color: #fff !important; - background-color: RGBA(33, 37, 41, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-accent { color: #000 !important; - background-color: RGBA(0, 150, 150, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-accent-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-cinereous { + color: #000 !important; + background-color: RGBA(var(--bs-cinereous-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-verdigris { + color: #000 !important; + background-color: RGBA(var(--bs-verdigris-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-icterine { + color: #000 !important; + background-color: RGBA(var(--bs-icterine-rgb), var(--bs-bg-opacity, 1)) !important; } .text-bg-mute { color: #fff !important; - background-color: RGBA(108, 117, 125, var(--bs-bg-opacity, 1)) !important; + background-color: RGBA(var(--bs-mute-rgb), var(--bs-bg-opacity, 1)) !important; } .link-primary { - color: #8c68cd !important; + color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-primary:hover, .link-primary:focus { - color: #a386d7 !important; + color: RGBA(163, 134, 215, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(163, 134, 215, var(--bs-link-underline-opacity, 1)) !important; } .link-secondary { - color: #3c8cd6 !important; + color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-secondary:hover, .link-secondary:focus { - color: #63a3de !important; + color: RGBA(99, 163, 222, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(99, 163, 222, var(--bs-link-underline-opacity, 1)) !important; } .link-success { - color: #198754 !important; + color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-success:hover, .link-success:focus { - color: #146c43 !important; + color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important; } .link-info { - color: #0dcaf0 !important; + color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-info:hover, .link-info:focus { - color: #3dd5f3 !important; + color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important; } .link-warning { - color: #ffc107 !important; + color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-warning:hover, .link-warning:focus { - color: #ffcd39 !important; + color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important; } .link-danger { - color: #dc3545 !important; + color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-danger:hover, .link-danger:focus { - color: #b02a37 !important; + color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important; } .link-light { - color: #f8f9fa !important; + color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-light:hover, .link-light:focus { - color: #f9fafb !important; + color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important; } .link-dark { - color: #212529 !important; + color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-dark:hover, .link-dark:focus { - color: #1a1e21 !important; + color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important; } .link-accent { - color: #009696 !important; + color: RGBA(var(--bs-accent-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-accent-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-accent:hover, .link-accent:focus { - color: #33abab !important; + color: RGBA(176, 240, 124, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(176, 240, 124, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-cinereous { + color: RGBA(var(--bs-cinereous-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-cinereous-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-cinereous:hover, .link-cinereous:focus { + color: RGBA(156, 145, 135, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(156, 145, 135, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-verdigris { + color: RGBA(var(--bs-verdigris-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-verdigris-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-verdigris:hover, .link-verdigris:focus { + color: RGBA(115, 209, 197, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(115, 209, 197, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-icterine { + color: RGBA(var(--bs-icterine-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-icterine-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-icterine:hover, .link-icterine:focus { + color: RGBA(243, 246, 132, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(243, 246, 132, var(--bs-link-underline-opacity, 1)) !important; } .link-mute { - color: #6c757d !important; + color: RGBA(var(--bs-mute-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-mute-rgb), var(--bs-link-underline-opacity, 1)) !important; } .link-mute:hover, .link-mute:focus { - color: #565e64 !important; + color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); + text-underline-offset: 0.25em; + backface-visibility: hidden; +} +.icon-link > .bi { + flex-shrink: 0; + width: 1em; + height: 1em; + fill: currentcolor; + transition: 0.2s ease-in-out transform; +} +@media (prefers-reduced-motion: reduce) { + .icon-link > .bi { + transition: none; + } +} + +.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0)); } .ratio { @@ -14592,7 +14906,6 @@ textarea.form-control-lg { .visually-hidden, .visually-hidden-focusable:not(:focus):not(:focus-within) { - position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; @@ -14602,6 +14915,10 @@ textarea.form-control-lg { white-space: nowrap !important; border: 0 !important; } +.visually-hidden:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { + position: absolute !important; +} .stretched-link::after { position: absolute; @@ -14622,7 +14939,7 @@ textarea.form-control-lg { .vr { display: inline-block; align-self: stretch; - width: 1px; + width: var(--bs-border-width); min-height: 1em; background-color: currentcolor; opacity: 0.25; @@ -14768,6 +15085,10 @@ textarea.form-control-lg { display: grid !important; } +.d-inline-grid { + display: inline-grid !important; +} + .d-table { display: table !important; } @@ -14793,21 +15114,73 @@ textarea.form-control-lg { } .shadow { - box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15) !important; + box-shadow: var(--bs-box-shadow) !important; } .shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075) !important; + box-shadow: var(--bs-box-shadow-sm) !important; } .shadow-lg { - box-shadow: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175) !important; + box-shadow: var(--bs-box-shadow-lg) !important; } .shadow-none { box-shadow: none !important; } +.focus-ring-primary { + --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-secondary { + --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-success { + --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-info { + --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-warning { + --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-danger { + --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-light { + --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-dark { + --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-accent { + --bs-focus-ring-color: rgba(var(--bs-accent-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-cinereous { + --bs-focus-ring-color: rgba(var(--bs-cinereous-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-verdigris { + --bs-focus-ring-color: rgba(var(--bs-verdigris-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-icterine { + --bs-focus-ring-color: rgba(var(--bs-icterine-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-mute { + --bs-focus-ring-color: rgba(var(--bs-mute-rgb), var(--bs-focus-ring-opacity)); +} + .position-static { position: static !important; } @@ -14968,6 +15341,11 @@ textarea.form-control-lg { border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; } +.border-black { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important; +} + .border-white { --bs-border-opacity: 1; border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; @@ -15005,24 +15383,44 @@ textarea.form-control-lg { border-color: var(--bs-dark-border-subtle) !important; } +.border-accent { + border-color: #9CEC5B !important; +} + +.border-cinereous { + border-color: #837569 !important; +} + +.border-verdigris { + border-color: #50C5B7 !important; +} + +.border-icterine { + border-color: #F0F465 !important; +} + +.border-mute { + border-color: #6c757d !important; +} + .border-1 { - --bs-border-width: 1px; + border-width: 1px !important; } .border-2 { - --bs-border-width: 2px; + border-width: 2px !important; } .border-3 { - --bs-border-width: 3px; + border-width: 3px !important; } .border-4 { - --bs-border-width: 4px; + border-width: 4px !important; } .border-5 { - --bs-border-width: 5px; + border-width: 5px !important; } .border-opacity-10 { @@ -15929,6 +16327,31 @@ textarea.form-control-lg { color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; } +.text-accent { + --bs-text-opacity: 1; + color: rgba(var(--bs-accent-rgb), var(--bs-text-opacity)) !important; +} + +.text-cinereous { + --bs-text-opacity: 1; + color: rgba(var(--bs-cinereous-rgb), var(--bs-text-opacity)) !important; +} + +.text-verdigris { + --bs-text-opacity: 1; + color: rgba(var(--bs-verdigris-rgb), var(--bs-text-opacity)) !important; +} + +.text-icterine { + --bs-text-opacity: 1; + color: rgba(var(--bs-icterine-rgb), var(--bs-text-opacity)) !important; +} + +.text-mute { + --bs-text-opacity: 1; + color: rgba(var(--bs-mute-rgb), var(--bs-text-opacity)) !important; +} + .text-muted { --bs-text-opacity: 1; color: var(--bs-secondary-color) !important; @@ -15981,35 +16404,212 @@ textarea.form-control-lg { } .text-primary-emphasis { - color: var(--bs-primary-text) !important; + color: var(--bs-primary-text-emphasis) !important; } .text-secondary-emphasis { - color: var(--bs-secondary-text) !important; + color: var(--bs-secondary-text-emphasis) !important; } .text-success-emphasis { - color: var(--bs-success-text) !important; + color: var(--bs-success-text-emphasis) !important; } .text-info-emphasis { - color: var(--bs-info-text) !important; + color: var(--bs-info-text-emphasis) !important; } .text-warning-emphasis { - color: var(--bs-warning-text) !important; + color: var(--bs-warning-text-emphasis) !important; } .text-danger-emphasis { - color: var(--bs-danger-text) !important; + color: var(--bs-danger-text-emphasis) !important; } .text-light-emphasis { - color: var(--bs-light-text) !important; + color: var(--bs-light-text-emphasis) !important; } .text-dark-emphasis { - color: var(--bs-dark-text) !important; + color: var(--bs-dark-text-emphasis) !important; +} + +.text-accent { + color: #9CEC5B !important; +} + +.text-cinereous { + color: #837569 !important; +} + +.text-verdigris { + color: #50C5B7 !important; +} + +.text-icterine { + color: #F0F465 !important; +} + +.text-mute { + color: #6c757d !important; +} + +.link-opacity-10 { + --bs-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --bs-link-opacity: 0.1; +} + +.link-opacity-25 { + --bs-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --bs-link-opacity: 0.25; +} + +.link-opacity-50 { + --bs-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --bs-link-opacity: 0.5; +} + +.link-opacity-75 { + --bs-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --bs-link-opacity: 0.75; +} + +.link-opacity-100 { + --bs-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --bs-link-opacity: 1; +} + +.link-offset-1 { + text-underline-offset: 0.125em !important; +} + +.link-offset-1-hover:hover { + text-underline-offset: 0.125em !important; +} + +.link-offset-2 { + text-underline-offset: 0.25em !important; +} + +.link-offset-2-hover:hover { + text-underline-offset: 0.25em !important; +} + +.link-offset-3 { + text-underline-offset: 0.375em !important; +} + +.link-offset-3-hover:hover { + text-underline-offset: 0.375em !important; +} + +.link-underline-primary { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-success { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-info { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-warning { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-danger { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-light { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-dark { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline { + --bs-link-underline-opacity: 1; + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --bs-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --bs-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --bs-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --bs-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --bs-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --bs-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --bs-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --bs-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --bs-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --bs-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --bs-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --bs-link-underline-opacity: 1; } .bg-primary { @@ -16052,19 +16652,29 @@ textarea.form-control-lg { background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; } -.bg-black { +.bg-accent { --bs-bg-opacity: 1; - background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; + background-color: rgba(var(--bs-accent-rgb), var(--bs-bg-opacity)) !important; } -.bg-white { +.bg-cinereous { --bs-bg-opacity: 1; - background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; + background-color: rgba(var(--bs-cinereous-rgb), var(--bs-bg-opacity)) !important; } -.bg-body { +.bg-verdigris { --bs-bg-opacity: 1; - background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; + background-color: rgba(var(--bs-verdigris-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-icterine { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-icterine-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-mute { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-mute-rgb), var(--bs-bg-opacity)) !important; } .bg-transparent { @@ -16082,11 +16692,6 @@ textarea.form-control-lg { background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important; } -.bg-body-emphasis { - --bs-bg-opacity: 1; - background-color: rgba(var(--bs-emphasis-bg-rgb), var(--bs-bg-opacity)) !important; -} - .bg-opacity-10 { --bs-bg-opacity: 0.1; } @@ -16139,6 +16744,26 @@ textarea.form-control-lg { background-color: var(--bs-dark-bg-subtle) !important; } +.bg-accent { + background-color: #9CEC5B !important; +} + +.bg-cinereous { + background-color: #837569 !important; +} + +.bg-verdigris { + background-color: #50C5B7 !important; +} + +.bg-icterine { + background-color: #F0F465 !important; +} + +.bg-mute { + background-color: #6c757d !important; +} + .bg-gradient { background-image: var(--bs-gradient) !important; } @@ -16188,7 +16813,7 @@ textarea.form-control-lg { } .rounded-5 { - border-radius: var(--bs-border-radius-2xl) !important; + border-radius: var(--bs-border-radius-xxl) !important; } .rounded-circle { @@ -16230,8 +16855,8 @@ textarea.form-control-lg { } .rounded-top-5 { - border-top-left-radius: var(--bs-border-radius-2xl) !important; - border-top-right-radius: var(--bs-border-radius-2xl) !important; + border-top-left-radius: var(--bs-border-radius-xxl) !important; + border-top-right-radius: var(--bs-border-radius-xxl) !important; } .rounded-top-circle { @@ -16275,8 +16900,8 @@ textarea.form-control-lg { } .rounded-end-5 { - border-top-right-radius: var(--bs-border-radius-2xl) !important; - border-bottom-right-radius: var(--bs-border-radius-2xl) !important; + border-top-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; } .rounded-end-circle { @@ -16320,8 +16945,8 @@ textarea.form-control-lg { } .rounded-bottom-5 { - border-bottom-right-radius: var(--bs-border-radius-2xl) !important; - border-bottom-left-radius: var(--bs-border-radius-2xl) !important; + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; } .rounded-bottom-circle { @@ -16365,8 +16990,8 @@ textarea.form-control-lg { } .rounded-start-5 { - border-bottom-left-radius: var(--bs-border-radius-2xl) !important; - border-top-left-radius: var(--bs-border-radius-2xl) !important; + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; + border-top-left-radius: var(--bs-border-radius-xxl) !important; } .rounded-start-circle { @@ -16444,6 +17069,9 @@ textarea.form-control-lg { .d-sm-grid { display: grid !important; } + .d-sm-inline-grid { + display: inline-grid !important; + } .d-sm-table { display: table !important; } @@ -16991,6 +17619,9 @@ textarea.form-control-lg { .d-md-grid { display: grid !important; } + .d-md-inline-grid { + display: inline-grid !important; + } .d-md-table { display: table !important; } @@ -17538,6 +18169,9 @@ textarea.form-control-lg { .d-lg-grid { display: grid !important; } + .d-lg-inline-grid { + display: inline-grid !important; + } .d-lg-table { display: table !important; } @@ -18085,6 +18719,9 @@ textarea.form-control-lg { .d-xl-grid { display: grid !important; } + .d-xl-inline-grid { + display: inline-grid !important; + } .d-xl-table { display: table !important; } @@ -18632,6 +19269,9 @@ textarea.form-control-lg { .d-xxl-grid { display: grid !important; } + .d-xxl-inline-grid { + display: inline-grid !important; + } .d-xxl-table { display: table !important; } @@ -19169,6 +19809,9 @@ textarea.form-control-lg { .d-print-grid { display: grid !important; } + .d-print-inline-grid { + display: inline-grid !important; + } .d-print-table { display: table !important; } @@ -19425,22 +20068,35 @@ tr.row-placeholder td::after { .horizontal-collapse { border-right: 1px solid var(--bs-dark-bg-subtle); + overflow: scroll; } .horizontal-collapse:nth-last-child(1) { border: none; } .horizontal-collapse .title { bottom: 1px solid var(--bs-dark-bg-subtle); + display: flex; + gap: 0.5rem; +} +.horizontal-collapse .title i { + margin-left: auto; +} +.horizontal-collapse.collapsed { + overflow: hidden; } .horizontal-collapse.collapsed .title { width: 22px; height: 100%; + flex-direction: column; } .horizontal-collapse.collapsed .title .label { display: block; transform: rotate(90deg) translate(3px); transform-origin: center; } +.horizontal-collapse.collapsed .title i { + margin-top: auto; +} html, body { font-family: "Inconsolata", monospace; @@ -19457,10 +20113,6 @@ h1:focus, .h1:focus { outline: none; } -.content { - padding-top: 1.1rem; -} - #blazor-error-ui { background: #2b3035; bottom: 0; diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/css/app.min.css b/src/dashboard/Synapse.Dashboard/wwwroot/css/app.min.css index 347346a85..4d086d7b7 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/css/app.min.css +++ b/src/dashboard/Synapse.Dashboard/wwwroot/css/app.min.css @@ -1,7 +1,7 @@ @charset "UTF-8";@import url("https://fonts.googleapis.com/css2?family=Inconsolata:wght@200..900&display=swap");@import url("https://fonts.googleapis.com/css2?family=Mitr:wght@200;300;400;500;600;700&family=Rajdhani:wght@300;400;500;600;700&display=swap");@font-face{font-display:block;font-family:"bootstrap-icons";src:url("../lib/bootstrap-icons/font/fonts/bootstrap-icons.woff2?8d200481aa7f02a2d63a331fc782cfaf") format("woff2"),url("../lib/bootstrap-icons/font/fonts/bootstrap-icons.woff?8d200481aa7f02a2d63a331fc782cfaf") format("woff");}.bi::before,[class^=bi-]::before,[class*=" bi-"]::before{display:inline-block;font-family:"bootstrap-icons"!important;font-style:normal;font-weight:normal!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.bi-123::before{content:"";}.bi-alarm-fill::before{content:"";}.bi-alarm::before{content:"";}.bi-align-bottom::before{content:"";}.bi-align-center::before{content:"";}.bi-align-end::before{content:"";}.bi-align-middle::before{content:"";}.bi-align-start::before{content:"";}.bi-align-top::before{content:"";}.bi-alt::before{content:"";}.bi-app-indicator::before{content:"";}.bi-app::before{content:"";}.bi-archive-fill::before{content:"";}.bi-archive::before{content:"";}.bi-arrow-90deg-down::before{content:"";}.bi-arrow-90deg-left::before{content:"";}.bi-arrow-90deg-right::before{content:"";}.bi-arrow-90deg-up::before{content:"";}.bi-arrow-bar-down::before{content:"";}.bi-arrow-bar-left::before{content:"";}.bi-arrow-bar-right::before{content:"";}.bi-arrow-bar-up::before{content:"";}.bi-arrow-clockwise::before{content:"";}.bi-arrow-counterclockwise::before{content:"";}.bi-arrow-down-circle-fill::before{content:"";}.bi-arrow-down-circle::before{content:"";}.bi-arrow-down-left-circle-fill::before{content:"";}.bi-arrow-down-left-circle::before{content:"";}.bi-arrow-down-left-square-fill::before{content:"";}.bi-arrow-down-left-square::before{content:"";}.bi-arrow-down-left::before{content:"";}.bi-arrow-down-right-circle-fill::before{content:"";}.bi-arrow-down-right-circle::before{content:"";}.bi-arrow-down-right-square-fill::before{content:"";}.bi-arrow-down-right-square::before{content:"";}.bi-arrow-down-right::before{content:"";}.bi-arrow-down-short::before{content:"";}.bi-arrow-down-square-fill::before{content:"";}.bi-arrow-down-square::before{content:"";}.bi-arrow-down-up::before{content:"";}.bi-arrow-down::before{content:"";}.bi-arrow-left-circle-fill::before{content:"";}.bi-arrow-left-circle::before{content:"";}.bi-arrow-left-right::before{content:"";}.bi-arrow-left-short::before{content:"";}.bi-arrow-left-square-fill::before{content:"";}.bi-arrow-left-square::before{content:"";}.bi-arrow-left::before{content:"";}.bi-arrow-repeat::before{content:"";}.bi-arrow-return-left::before{content:"";}.bi-arrow-return-right::before{content:"";}.bi-arrow-right-circle-fill::before{content:"";}.bi-arrow-right-circle::before{content:"";}.bi-arrow-right-short::before{content:"";}.bi-arrow-right-square-fill::before{content:"";}.bi-arrow-right-square::before{content:"";}.bi-arrow-right::before{content:"";}.bi-arrow-up-circle-fill::before{content:"";}.bi-arrow-up-circle::before{content:"";}.bi-arrow-up-left-circle-fill::before{content:"";}.bi-arrow-up-left-circle::before{content:"";}.bi-arrow-up-left-square-fill::before{content:"";}.bi-arrow-up-left-square::before{content:"";}.bi-arrow-up-left::before{content:"";}.bi-arrow-up-right-circle-fill::before{content:"";}.bi-arrow-up-right-circle::before{content:"";}.bi-arrow-up-right-square-fill::before{content:"";}.bi-arrow-up-right-square::before{content:"";}.bi-arrow-up-right::before{content:"";}.bi-arrow-up-short::before{content:"";}.bi-arrow-up-square-fill::before{content:"";}.bi-arrow-up-square::before{content:"";}.bi-arrow-up::before{content:"";}.bi-arrows-angle-contract::before{content:"";}.bi-arrows-angle-expand::before{content:"";}.bi-arrows-collapse::before{content:"";}.bi-arrows-expand::before{content:"";}.bi-arrows-fullscreen::before{content:"";}.bi-arrows-move::before{content:"";}.bi-aspect-ratio-fill::before{content:"";}.bi-aspect-ratio::before{content:"";}.bi-asterisk::before{content:"";}.bi-at::before{content:"";}.bi-award-fill::before{content:"";}.bi-award::before{content:"";}.bi-back::before{content:"";}.bi-backspace-fill::before{content:"";}.bi-backspace-reverse-fill::before{content:"";}.bi-backspace-reverse::before{content:"";}.bi-backspace::before{content:"";}.bi-badge-3d-fill::before{content:"";}.bi-badge-3d::before{content:"";}.bi-badge-4k-fill::before{content:"";}.bi-badge-4k::before{content:"";}.bi-badge-8k-fill::before{content:"";}.bi-badge-8k::before{content:"";}.bi-badge-ad-fill::before{content:"";}.bi-badge-ad::before{content:"";}.bi-badge-ar-fill::before{content:"";}.bi-badge-ar::before{content:"";}.bi-badge-cc-fill::before{content:"";}.bi-badge-cc::before{content:"";}.bi-badge-hd-fill::before{content:"";}.bi-badge-hd::before{content:"";}.bi-badge-tm-fill::before{content:"";}.bi-badge-tm::before{content:"";}.bi-badge-vo-fill::before{content:"";}.bi-badge-vo::before{content:"";}.bi-badge-vr-fill::before{content:"";}.bi-badge-vr::before{content:"";}.bi-badge-wc-fill::before{content:"";}.bi-badge-wc::before{content:"";}.bi-bag-check-fill::before{content:"";}.bi-bag-check::before{content:"";}.bi-bag-dash-fill::before{content:"";}.bi-bag-dash::before{content:"";}.bi-bag-fill::before{content:"";}.bi-bag-plus-fill::before{content:"";}.bi-bag-plus::before{content:"";}.bi-bag-x-fill::before{content:"";}.bi-bag-x::before{content:"";}.bi-bag::before{content:"";}.bi-bar-chart-fill::before{content:"";}.bi-bar-chart-line-fill::before{content:"";}.bi-bar-chart-line::before{content:"";}.bi-bar-chart-steps::before{content:"";}.bi-bar-chart::before{content:"";}.bi-basket-fill::before{content:"";}.bi-basket::before{content:"";}.bi-basket2-fill::before{content:"";}.bi-basket2::before{content:"";}.bi-basket3-fill::before{content:"";}.bi-basket3::before{content:"";}.bi-battery-charging::before{content:"";}.bi-battery-full::before{content:"";}.bi-battery-half::before{content:"";}.bi-battery::before{content:"";}.bi-bell-fill::before{content:"";}.bi-bell::before{content:"";}.bi-bezier::before{content:"";}.bi-bezier2::before{content:"";}.bi-bicycle::before{content:"";}.bi-binoculars-fill::before{content:"";}.bi-binoculars::before{content:"";}.bi-blockquote-left::before{content:"";}.bi-blockquote-right::before{content:"";}.bi-book-fill::before{content:"";}.bi-book-half::before{content:"";}.bi-book::before{content:"";}.bi-bookmark-check-fill::before{content:"";}.bi-bookmark-check::before{content:"";}.bi-bookmark-dash-fill::before{content:"";}.bi-bookmark-dash::before{content:"";}.bi-bookmark-fill::before{content:"";}.bi-bookmark-heart-fill::before{content:"";}.bi-bookmark-heart::before{content:"";}.bi-bookmark-plus-fill::before{content:"";}.bi-bookmark-plus::before{content:"";}.bi-bookmark-star-fill::before{content:"";}.bi-bookmark-star::before{content:"";}.bi-bookmark-x-fill::before{content:"";}.bi-bookmark-x::before{content:"";}.bi-bookmark::before{content:"";}.bi-bookmarks-fill::before{content:"";}.bi-bookmarks::before{content:"";}.bi-bookshelf::before{content:"";}.bi-bootstrap-fill::before{content:"";}.bi-bootstrap-reboot::before{content:"";}.bi-bootstrap::before{content:"";}.bi-border-all::before{content:"";}.bi-border-bottom::before{content:"";}.bi-border-center::before{content:"";}.bi-border-inner::before{content:"";}.bi-border-left::before{content:"";}.bi-border-middle::before{content:"";}.bi-border-outer::before{content:"";}.bi-border-right::before{content:"";}.bi-border-style::before{content:"";}.bi-border-top::before{content:"";}.bi-border-width::before{content:"";}.bi-border::before{content:"";}.bi-bounding-box-circles::before{content:"";}.bi-bounding-box::before{content:"";}.bi-box-arrow-down-left::before{content:"";}.bi-box-arrow-down-right::before{content:"";}.bi-box-arrow-down::before{content:"";}.bi-box-arrow-in-down-left::before{content:"";}.bi-box-arrow-in-down-right::before{content:"";}.bi-box-arrow-in-down::before{content:"";}.bi-box-arrow-in-left::before{content:"";}.bi-box-arrow-in-right::before{content:"";}.bi-box-arrow-in-up-left::before{content:"";}.bi-box-arrow-in-up-right::before{content:"";}.bi-box-arrow-in-up::before{content:"";}.bi-box-arrow-left::before{content:"";}.bi-box-arrow-right::before{content:"";}.bi-box-arrow-up-left::before{content:"";}.bi-box-arrow-up-right::before{content:"";}.bi-box-arrow-up::before{content:"";}.bi-box-seam::before{content:"";}.bi-box::before{content:"";}.bi-braces::before{content:"";}.bi-bricks::before{content:"";}.bi-briefcase-fill::before{content:"";}.bi-briefcase::before{content:"";}.bi-brightness-alt-high-fill::before{content:"";}.bi-brightness-alt-high::before{content:"";}.bi-brightness-alt-low-fill::before{content:"";}.bi-brightness-alt-low::before{content:"";}.bi-brightness-high-fill::before{content:"";}.bi-brightness-high::before{content:"";}.bi-brightness-low-fill::before{content:"";}.bi-brightness-low::before{content:"";}.bi-broadcast-pin::before{content:"";}.bi-broadcast::before{content:"";}.bi-brush-fill::before{content:"";}.bi-brush::before{content:"";}.bi-bucket-fill::before{content:"";}.bi-bucket::before{content:"";}.bi-bug-fill::before{content:"";}.bi-bug::before{content:"";}.bi-building::before{content:"";}.bi-bullseye::before{content:"";}.bi-calculator-fill::before{content:"";}.bi-calculator::before{content:"";}.bi-calendar-check-fill::before{content:"";}.bi-calendar-check::before{content:"";}.bi-calendar-date-fill::before{content:"";}.bi-calendar-date::before{content:"";}.bi-calendar-day-fill::before{content:"";}.bi-calendar-day::before{content:"";}.bi-calendar-event-fill::before{content:"";}.bi-calendar-event::before{content:"";}.bi-calendar-fill::before{content:"";}.bi-calendar-minus-fill::before{content:"";}.bi-calendar-minus::before{content:"";}.bi-calendar-month-fill::before{content:"";}.bi-calendar-month::before{content:"";}.bi-calendar-plus-fill::before{content:"";}.bi-calendar-plus::before{content:"";}.bi-calendar-range-fill::before{content:"";}.bi-calendar-range::before{content:"";}.bi-calendar-week-fill::before{content:"";}.bi-calendar-week::before{content:"";}.bi-calendar-x-fill::before{content:"";}.bi-calendar-x::before{content:"";}.bi-calendar::before{content:"";}.bi-calendar2-check-fill::before{content:"";}.bi-calendar2-check::before{content:"";}.bi-calendar2-date-fill::before{content:"";}.bi-calendar2-date::before{content:"";}.bi-calendar2-day-fill::before{content:"";}.bi-calendar2-day::before{content:"";}.bi-calendar2-event-fill::before{content:"";}.bi-calendar2-event::before{content:"";}.bi-calendar2-fill::before{content:"";}.bi-calendar2-minus-fill::before{content:"";}.bi-calendar2-minus::before{content:"";}.bi-calendar2-month-fill::before{content:"";}.bi-calendar2-month::before{content:"";}.bi-calendar2-plus-fill::before{content:"";}.bi-calendar2-plus::before{content:"";}.bi-calendar2-range-fill::before{content:"";}.bi-calendar2-range::before{content:"";}.bi-calendar2-week-fill::before{content:"";}.bi-calendar2-week::before{content:"";}.bi-calendar2-x-fill::before{content:"";}.bi-calendar2-x::before{content:"";}.bi-calendar2::before{content:"";}.bi-calendar3-event-fill::before{content:"";}.bi-calendar3-event::before{content:"";}.bi-calendar3-fill::before{content:"";}.bi-calendar3-range-fill::before{content:"";}.bi-calendar3-range::before{content:"";}.bi-calendar3-week-fill::before{content:"";}.bi-calendar3-week::before{content:"";}.bi-calendar3::before{content:"";}.bi-calendar4-event::before{content:"";}.bi-calendar4-range::before{content:"";}.bi-calendar4-week::before{content:"";}.bi-calendar4::before{content:"";}.bi-camera-fill::before{content:"";}.bi-camera-reels-fill::before{content:"";}.bi-camera-reels::before{content:"";}.bi-camera-video-fill::before{content:"";}.bi-camera-video-off-fill::before{content:"";}.bi-camera-video-off::before{content:"";}.bi-camera-video::before{content:"";}.bi-camera::before{content:"";}.bi-camera2::before{content:"";}.bi-capslock-fill::before{content:"";}.bi-capslock::before{content:"";}.bi-card-checklist::before{content:"";}.bi-card-heading::before{content:"";}.bi-card-image::before{content:"";}.bi-card-list::before{content:"";}.bi-card-text::before{content:"";}.bi-caret-down-fill::before{content:"";}.bi-caret-down-square-fill::before{content:"";}.bi-caret-down-square::before{content:"";}.bi-caret-down::before{content:"";}.bi-caret-left-fill::before{content:"";}.bi-caret-left-square-fill::before{content:"";}.bi-caret-left-square::before{content:"";}.bi-caret-left::before{content:"";}.bi-caret-right-fill::before{content:"";}.bi-caret-right-square-fill::before{content:"";}.bi-caret-right-square::before{content:"";}.bi-caret-right::before{content:"";}.bi-caret-up-fill::before{content:"";}.bi-caret-up-square-fill::before{content:"";}.bi-caret-up-square::before{content:"";}.bi-caret-up::before{content:"";}.bi-cart-check-fill::before{content:"";}.bi-cart-check::before{content:"";}.bi-cart-dash-fill::before{content:"";}.bi-cart-dash::before{content:"";}.bi-cart-fill::before{content:"";}.bi-cart-plus-fill::before{content:"";}.bi-cart-plus::before{content:"";}.bi-cart-x-fill::before{content:"";}.bi-cart-x::before{content:"";}.bi-cart::before{content:"";}.bi-cart2::before{content:"";}.bi-cart3::before{content:"";}.bi-cart4::before{content:"";}.bi-cash-stack::before{content:"";}.bi-cash::before{content:"";}.bi-cast::before{content:"";}.bi-chat-dots-fill::before{content:"";}.bi-chat-dots::before{content:"";}.bi-chat-fill::before{content:"";}.bi-chat-left-dots-fill::before{content:"";}.bi-chat-left-dots::before{content:"";}.bi-chat-left-fill::before{content:"";}.bi-chat-left-quote-fill::before{content:"";}.bi-chat-left-quote::before{content:"";}.bi-chat-left-text-fill::before{content:"";}.bi-chat-left-text::before{content:"";}.bi-chat-left::before{content:"";}.bi-chat-quote-fill::before{content:"";}.bi-chat-quote::before{content:"";}.bi-chat-right-dots-fill::before{content:"";}.bi-chat-right-dots::before{content:"";}.bi-chat-right-fill::before{content:"";}.bi-chat-right-quote-fill::before{content:"";}.bi-chat-right-quote::before{content:"";}.bi-chat-right-text-fill::before{content:"";}.bi-chat-right-text::before{content:"";}.bi-chat-right::before{content:"";}.bi-chat-square-dots-fill::before{content:"";}.bi-chat-square-dots::before{content:"";}.bi-chat-square-fill::before{content:"";}.bi-chat-square-quote-fill::before{content:"";}.bi-chat-square-quote::before{content:"";}.bi-chat-square-text-fill::before{content:"";}.bi-chat-square-text::before{content:"";}.bi-chat-square::before{content:"";}.bi-chat-text-fill::before{content:"";}.bi-chat-text::before{content:"";}.bi-chat::before{content:"";}.bi-check-all::before{content:"";}.bi-check-circle-fill::before{content:"";}.bi-check-circle::before{content:"";}.bi-check-square-fill::before{content:"";}.bi-check-square::before{content:"";}.bi-check::before{content:"";}.bi-check2-all::before{content:"";}.bi-check2-circle::before{content:"";}.bi-check2-square::before{content:"";}.bi-check2::before{content:"";}.bi-chevron-bar-contract::before{content:"";}.bi-chevron-bar-down::before{content:"";}.bi-chevron-bar-expand::before{content:"";}.bi-chevron-bar-left::before{content:"";}.bi-chevron-bar-right::before{content:"";}.bi-chevron-bar-up::before{content:"";}.bi-chevron-compact-down::before{content:"";}.bi-chevron-compact-left::before{content:"";}.bi-chevron-compact-right::before{content:"";}.bi-chevron-compact-up::before{content:"";}.bi-chevron-contract::before{content:"";}.bi-chevron-double-down::before{content:"";}.bi-chevron-double-left::before{content:"";}.bi-chevron-double-right::before{content:"";}.bi-chevron-double-up::before{content:"";}.bi-chevron-down::before{content:"";}.bi-chevron-expand::before{content:"";}.bi-chevron-left::before{content:"";}.bi-chevron-right::before{content:"";}.bi-chevron-up::before{content:"";}.bi-circle-fill::before{content:"";}.bi-circle-half::before{content:"";}.bi-circle-square::before{content:"";}.bi-circle::before{content:"";}.bi-clipboard-check::before{content:"";}.bi-clipboard-data::before{content:"";}.bi-clipboard-minus::before{content:"";}.bi-clipboard-plus::before{content:"";}.bi-clipboard-x::before{content:"";}.bi-clipboard::before{content:"";}.bi-clock-fill::before{content:"";}.bi-clock-history::before{content:"";}.bi-clock::before{content:"";}.bi-cloud-arrow-down-fill::before{content:"";}.bi-cloud-arrow-down::before{content:"";}.bi-cloud-arrow-up-fill::before{content:"";}.bi-cloud-arrow-up::before{content:"";}.bi-cloud-check-fill::before{content:"";}.bi-cloud-check::before{content:"";}.bi-cloud-download-fill::before{content:"";}.bi-cloud-download::before{content:"";}.bi-cloud-drizzle-fill::before{content:"";}.bi-cloud-drizzle::before{content:"";}.bi-cloud-fill::before{content:"";}.bi-cloud-fog-fill::before{content:"";}.bi-cloud-fog::before{content:"";}.bi-cloud-fog2-fill::before{content:"";}.bi-cloud-fog2::before{content:"";}.bi-cloud-hail-fill::before{content:"";}.bi-cloud-hail::before{content:"";}.bi-cloud-haze-1::before{content:"";}.bi-cloud-haze-fill::before{content:"";}.bi-cloud-haze::before{content:"";}.bi-cloud-haze2-fill::before{content:"";}.bi-cloud-lightning-fill::before{content:"";}.bi-cloud-lightning-rain-fill::before{content:"";}.bi-cloud-lightning-rain::before{content:"";}.bi-cloud-lightning::before{content:"";}.bi-cloud-minus-fill::before{content:"";}.bi-cloud-minus::before{content:"";}.bi-cloud-moon-fill::before{content:"";}.bi-cloud-moon::before{content:"";}.bi-cloud-plus-fill::before{content:"";}.bi-cloud-plus::before{content:"";}.bi-cloud-rain-fill::before{content:"";}.bi-cloud-rain-heavy-fill::before{content:"";}.bi-cloud-rain-heavy::before{content:"";}.bi-cloud-rain::before{content:"";}.bi-cloud-slash-fill::before{content:"";}.bi-cloud-slash::before{content:"";}.bi-cloud-sleet-fill::before{content:"";}.bi-cloud-sleet::before{content:"";}.bi-cloud-snow-fill::before{content:"";}.bi-cloud-snow::before{content:"";}.bi-cloud-sun-fill::before{content:"";}.bi-cloud-sun::before{content:"";}.bi-cloud-upload-fill::before{content:"";}.bi-cloud-upload::before{content:"";}.bi-cloud::before{content:"";}.bi-clouds-fill::before{content:"";}.bi-clouds::before{content:"";}.bi-cloudy-fill::before{content:"";}.bi-cloudy::before{content:"";}.bi-code-slash::before{content:"";}.bi-code-square::before{content:"";}.bi-code::before{content:"";}.bi-collection-fill::before{content:"";}.bi-collection-play-fill::before{content:"";}.bi-collection-play::before{content:"";}.bi-collection::before{content:"";}.bi-columns-gap::before{content:"";}.bi-columns::before{content:"";}.bi-command::before{content:"";}.bi-compass-fill::before{content:"";}.bi-compass::before{content:"";}.bi-cone-striped::before{content:"";}.bi-cone::before{content:"";}.bi-controller::before{content:"";}.bi-cpu-fill::before{content:"";}.bi-cpu::before{content:"";}.bi-credit-card-2-back-fill::before{content:"";}.bi-credit-card-2-back::before{content:"";}.bi-credit-card-2-front-fill::before{content:"";}.bi-credit-card-2-front::before{content:"";}.bi-credit-card-fill::before{content:"";}.bi-credit-card::before{content:"";}.bi-crop::before{content:"";}.bi-cup-fill::before{content:"";}.bi-cup-straw::before{content:"";}.bi-cup::before{content:"";}.bi-cursor-fill::before{content:"";}.bi-cursor-text::before{content:"";}.bi-cursor::before{content:"";}.bi-dash-circle-dotted::before{content:"";}.bi-dash-circle-fill::before{content:"";}.bi-dash-circle::before{content:"";}.bi-dash-square-dotted::before{content:"";}.bi-dash-square-fill::before{content:"";}.bi-dash-square::before{content:"";}.bi-dash::before{content:"";}.bi-diagram-2-fill::before{content:"";}.bi-diagram-2::before{content:"";}.bi-diagram-3-fill::before{content:"";}.bi-diagram-3::before{content:"";}.bi-diamond-fill::before{content:"";}.bi-diamond-half::before{content:"";}.bi-diamond::before{content:"";}.bi-dice-1-fill::before{content:"";}.bi-dice-1::before{content:"";}.bi-dice-2-fill::before{content:"";}.bi-dice-2::before{content:"";}.bi-dice-3-fill::before{content:"";}.bi-dice-3::before{content:"";}.bi-dice-4-fill::before{content:"";}.bi-dice-4::before{content:"";}.bi-dice-5-fill::before{content:"";}.bi-dice-5::before{content:"";}.bi-dice-6-fill::before{content:"";}.bi-dice-6::before{content:"";}.bi-disc-fill::before{content:"";}.bi-disc::before{content:"";}.bi-discord::before{content:"";}.bi-display-fill::before{content:"";}.bi-display::before{content:"";}.bi-distribute-horizontal::before{content:"";}.bi-distribute-vertical::before{content:"";}.bi-door-closed-fill::before{content:"";}.bi-door-closed::before{content:"";}.bi-door-open-fill::before{content:"";}.bi-door-open::before{content:"";}.bi-dot::before{content:"";}.bi-download::before{content:"";}.bi-droplet-fill::before{content:"";}.bi-droplet-half::before{content:"";}.bi-droplet::before{content:"";}.bi-earbuds::before{content:"";}.bi-easel-fill::before{content:"";}.bi-easel::before{content:"";}.bi-egg-fill::before{content:"";}.bi-egg-fried::before{content:"";}.bi-egg::before{content:"";}.bi-eject-fill::before{content:"";}.bi-eject::before{content:"";}.bi-emoji-angry-fill::before{content:"";}.bi-emoji-angry::before{content:"";}.bi-emoji-dizzy-fill::before{content:"";}.bi-emoji-dizzy::before{content:"";}.bi-emoji-expressionless-fill::before{content:"";}.bi-emoji-expressionless::before{content:"";}.bi-emoji-frown-fill::before{content:"";}.bi-emoji-frown::before{content:"";}.bi-emoji-heart-eyes-fill::before{content:"";}.bi-emoji-heart-eyes::before{content:"";}.bi-emoji-laughing-fill::before{content:"";}.bi-emoji-laughing::before{content:"";}.bi-emoji-neutral-fill::before{content:"";}.bi-emoji-neutral::before{content:"";}.bi-emoji-smile-fill::before{content:"";}.bi-emoji-smile-upside-down-fill::before{content:"";}.bi-emoji-smile-upside-down::before{content:"";}.bi-emoji-smile::before{content:"";}.bi-emoji-sunglasses-fill::before{content:"";}.bi-emoji-sunglasses::before{content:"";}.bi-emoji-wink-fill::before{content:"";}.bi-emoji-wink::before{content:"";}.bi-envelope-fill::before{content:"";}.bi-envelope-open-fill::before{content:"";}.bi-envelope-open::before{content:"";}.bi-envelope::before{content:"";}.bi-eraser-fill::before{content:"";}.bi-eraser::before{content:"";}.bi-exclamation-circle-fill::before{content:"";}.bi-exclamation-circle::before{content:"";}.bi-exclamation-diamond-fill::before{content:"";}.bi-exclamation-diamond::before{content:"";}.bi-exclamation-octagon-fill::before{content:"";}.bi-exclamation-octagon::before{content:"";}.bi-exclamation-square-fill::before{content:"";}.bi-exclamation-square::before{content:"";}.bi-exclamation-triangle-fill::before{content:"";}.bi-exclamation-triangle::before{content:"";}.bi-exclamation::before{content:"";}.bi-exclude::before{content:"";}.bi-eye-fill::before{content:"";}.bi-eye-slash-fill::before{content:"";}.bi-eye-slash::before{content:"";}.bi-eye::before{content:"";}.bi-eyedropper::before{content:"";}.bi-eyeglasses::before{content:"";}.bi-facebook::before{content:"";}.bi-file-arrow-down-fill::before{content:"";}.bi-file-arrow-down::before{content:"";}.bi-file-arrow-up-fill::before{content:"";}.bi-file-arrow-up::before{content:"";}.bi-file-bar-graph-fill::before{content:"";}.bi-file-bar-graph::before{content:"";}.bi-file-binary-fill::before{content:"";}.bi-file-binary::before{content:"";}.bi-file-break-fill::before{content:"";}.bi-file-break::before{content:"";}.bi-file-check-fill::before{content:"";}.bi-file-check::before{content:"";}.bi-file-code-fill::before{content:"";}.bi-file-code::before{content:"";}.bi-file-diff-fill::before{content:"";}.bi-file-diff::before{content:"";}.bi-file-earmark-arrow-down-fill::before{content:"";}.bi-file-earmark-arrow-down::before{content:"";}.bi-file-earmark-arrow-up-fill::before{content:"";}.bi-file-earmark-arrow-up::before{content:"";}.bi-file-earmark-bar-graph-fill::before{content:"";}.bi-file-earmark-bar-graph::before{content:"";}.bi-file-earmark-binary-fill::before{content:"";}.bi-file-earmark-binary::before{content:"";}.bi-file-earmark-break-fill::before{content:"";}.bi-file-earmark-break::before{content:"";}.bi-file-earmark-check-fill::before{content:"";}.bi-file-earmark-check::before{content:"";}.bi-file-earmark-code-fill::before{content:"";}.bi-file-earmark-code::before{content:"";}.bi-file-earmark-diff-fill::before{content:"";}.bi-file-earmark-diff::before{content:"";}.bi-file-earmark-easel-fill::before{content:"";}.bi-file-earmark-easel::before{content:"";}.bi-file-earmark-excel-fill::before{content:"";}.bi-file-earmark-excel::before{content:"";}.bi-file-earmark-fill::before{content:"";}.bi-file-earmark-font-fill::before{content:"";}.bi-file-earmark-font::before{content:"";}.bi-file-earmark-image-fill::before{content:"";}.bi-file-earmark-image::before{content:"";}.bi-file-earmark-lock-fill::before{content:"";}.bi-file-earmark-lock::before{content:"";}.bi-file-earmark-lock2-fill::before{content:"";}.bi-file-earmark-lock2::before{content:"";}.bi-file-earmark-medical-fill::before{content:"";}.bi-file-earmark-medical::before{content:"";}.bi-file-earmark-minus-fill::before{content:"";}.bi-file-earmark-minus::before{content:"";}.bi-file-earmark-music-fill::before{content:"";}.bi-file-earmark-music::before{content:"";}.bi-file-earmark-person-fill::before{content:"";}.bi-file-earmark-person::before{content:"";}.bi-file-earmark-play-fill::before{content:"";}.bi-file-earmark-play::before{content:"";}.bi-file-earmark-plus-fill::before{content:"";}.bi-file-earmark-plus::before{content:"";}.bi-file-earmark-post-fill::before{content:"";}.bi-file-earmark-post::before{content:"";}.bi-file-earmark-ppt-fill::before{content:"";}.bi-file-earmark-ppt::before{content:"";}.bi-file-earmark-richtext-fill::before{content:"";}.bi-file-earmark-richtext::before{content:"";}.bi-file-earmark-ruled-fill::before{content:"";}.bi-file-earmark-ruled::before{content:"";}.bi-file-earmark-slides-fill::before{content:"";}.bi-file-earmark-slides::before{content:"";}.bi-file-earmark-spreadsheet-fill::before{content:"";}.bi-file-earmark-spreadsheet::before{content:"";}.bi-file-earmark-text-fill::before{content:"";}.bi-file-earmark-text::before{content:"";}.bi-file-earmark-word-fill::before{content:"";}.bi-file-earmark-word::before{content:"";}.bi-file-earmark-x-fill::before{content:"";}.bi-file-earmark-x::before{content:"";}.bi-file-earmark-zip-fill::before{content:"";}.bi-file-earmark-zip::before{content:"";}.bi-file-earmark::before{content:"";}.bi-file-easel-fill::before{content:"";}.bi-file-easel::before{content:"";}.bi-file-excel-fill::before{content:"";}.bi-file-excel::before{content:"";}.bi-file-fill::before{content:"";}.bi-file-font-fill::before{content:"";}.bi-file-font::before{content:"";}.bi-file-image-fill::before{content:"";}.bi-file-image::before{content:"";}.bi-file-lock-fill::before{content:"";}.bi-file-lock::before{content:"";}.bi-file-lock2-fill::before{content:"";}.bi-file-lock2::before{content:"";}.bi-file-medical-fill::before{content:"";}.bi-file-medical::before{content:"";}.bi-file-minus-fill::before{content:"";}.bi-file-minus::before{content:"";}.bi-file-music-fill::before{content:"";}.bi-file-music::before{content:"";}.bi-file-person-fill::before{content:"";}.bi-file-person::before{content:"";}.bi-file-play-fill::before{content:"";}.bi-file-play::before{content:"";}.bi-file-plus-fill::before{content:"";}.bi-file-plus::before{content:"";}.bi-file-post-fill::before{content:"";}.bi-file-post::before{content:"";}.bi-file-ppt-fill::before{content:"";}.bi-file-ppt::before{content:"";}.bi-file-richtext-fill::before{content:"";}.bi-file-richtext::before{content:"";}.bi-file-ruled-fill::before{content:"";}.bi-file-ruled::before{content:"";}.bi-file-slides-fill::before{content:"";}.bi-file-slides::before{content:"";}.bi-file-spreadsheet-fill::before{content:"";}.bi-file-spreadsheet::before{content:"";}.bi-file-text-fill::before{content:"";}.bi-file-text::before{content:"";}.bi-file-word-fill::before{content:"";}.bi-file-word::before{content:"";}.bi-file-x-fill::before{content:"";}.bi-file-x::before{content:"";}.bi-file-zip-fill::before{content:"";}.bi-file-zip::before{content:"";}.bi-file::before{content:"";}.bi-files-alt::before{content:"";}.bi-files::before{content:"";}.bi-film::before{content:"";}.bi-filter-circle-fill::before{content:"";}.bi-filter-circle::before{content:"";}.bi-filter-left::before{content:"";}.bi-filter-right::before{content:"";}.bi-filter-square-fill::before{content:"";}.bi-filter-square::before{content:"";}.bi-filter::before{content:"";}.bi-flag-fill::before{content:"";}.bi-flag::before{content:"";}.bi-flower1::before{content:"";}.bi-flower2::before{content:"";}.bi-flower3::before{content:"";}.bi-folder-check::before{content:"";}.bi-folder-fill::before{content:"";}.bi-folder-minus::before{content:"";}.bi-folder-plus::before{content:"";}.bi-folder-symlink-fill::before{content:"";}.bi-folder-symlink::before{content:"";}.bi-folder-x::before{content:"";}.bi-folder::before{content:"";}.bi-folder2-open::before{content:"";}.bi-folder2::before{content:"";}.bi-fonts::before{content:"";}.bi-forward-fill::before{content:"";}.bi-forward::before{content:"";}.bi-front::before{content:"";}.bi-fullscreen-exit::before{content:"";}.bi-fullscreen::before{content:"";}.bi-funnel-fill::before{content:"";}.bi-funnel::before{content:"";}.bi-gear-fill::before{content:"";}.bi-gear-wide-connected::before{content:"";}.bi-gear-wide::before{content:"";}.bi-gear::before{content:"";}.bi-gem::before{content:"";}.bi-geo-alt-fill::before{content:"";}.bi-geo-alt::before{content:"";}.bi-geo-fill::before{content:"";}.bi-geo::before{content:"";}.bi-gift-fill::before{content:"";}.bi-gift::before{content:"";}.bi-github::before{content:"";}.bi-globe::before{content:"";}.bi-globe2::before{content:"";}.bi-google::before{content:"";}.bi-graph-down::before{content:"";}.bi-graph-up::before{content:"";}.bi-grid-1x2-fill::before{content:"";}.bi-grid-1x2::before{content:"";}.bi-grid-3x2-gap-fill::before{content:"";}.bi-grid-3x2-gap::before{content:"";}.bi-grid-3x2::before{content:"";}.bi-grid-3x3-gap-fill::before{content:"";}.bi-grid-3x3-gap::before{content:"";}.bi-grid-3x3::before{content:"";}.bi-grid-fill::before{content:"";}.bi-grid::before{content:"";}.bi-grip-horizontal::before{content:"";}.bi-grip-vertical::before{content:"";}.bi-hammer::before{content:"";}.bi-hand-index-fill::before{content:"";}.bi-hand-index-thumb-fill::before{content:"";}.bi-hand-index-thumb::before{content:"";}.bi-hand-index::before{content:"";}.bi-hand-thumbs-down-fill::before{content:"";}.bi-hand-thumbs-down::before{content:"";}.bi-hand-thumbs-up-fill::before{content:"";}.bi-hand-thumbs-up::before{content:"";}.bi-handbag-fill::before{content:"";}.bi-handbag::before{content:"";}.bi-hash::before{content:"";}.bi-hdd-fill::before{content:"";}.bi-hdd-network-fill::before{content:"";}.bi-hdd-network::before{content:"";}.bi-hdd-rack-fill::before{content:"";}.bi-hdd-rack::before{content:"";}.bi-hdd-stack-fill::before{content:"";}.bi-hdd-stack::before{content:"";}.bi-hdd::before{content:"";}.bi-headphones::before{content:"";}.bi-headset::before{content:"";}.bi-heart-fill::before{content:"";}.bi-heart-half::before{content:"";}.bi-heart::before{content:"";}.bi-heptagon-fill::before{content:"";}.bi-heptagon-half::before{content:"";}.bi-heptagon::before{content:"";}.bi-hexagon-fill::before{content:"";}.bi-hexagon-half::before{content:"";}.bi-hexagon::before{content:"";}.bi-hourglass-bottom::before{content:"";}.bi-hourglass-split::before{content:"";}.bi-hourglass-top::before{content:"";}.bi-hourglass::before{content:"";}.bi-house-door-fill::before{content:"";}.bi-house-door::before{content:"";}.bi-house-fill::before{content:"";}.bi-house::before{content:"";}.bi-hr::before{content:"";}.bi-hurricane::before{content:"";}.bi-image-alt::before{content:"";}.bi-image-fill::before{content:"";}.bi-image::before{content:"";}.bi-images::before{content:"";}.bi-inbox-fill::before{content:"";}.bi-inbox::before{content:"";}.bi-inboxes-fill::before{content:"";}.bi-inboxes::before{content:"";}.bi-info-circle-fill::before{content:"";}.bi-info-circle::before{content:"";}.bi-info-square-fill::before{content:"";}.bi-info-square::before{content:"";}.bi-info::before{content:"";}.bi-input-cursor-text::before{content:"";}.bi-input-cursor::before{content:"";}.bi-instagram::before{content:"";}.bi-intersect::before{content:"";}.bi-journal-album::before{content:"";}.bi-journal-arrow-down::before{content:"";}.bi-journal-arrow-up::before{content:"";}.bi-journal-bookmark-fill::before{content:"";}.bi-journal-bookmark::before{content:"";}.bi-journal-check::before{content:"";}.bi-journal-code::before{content:"";}.bi-journal-medical::before{content:"";}.bi-journal-minus::before{content:"";}.bi-journal-plus::before{content:"";}.bi-journal-richtext::before{content:"";}.bi-journal-text::before{content:"";}.bi-journal-x::before{content:"";}.bi-journal::before{content:"";}.bi-journals::before{content:"";}.bi-joystick::before{content:"";}.bi-justify-left::before{content:"";}.bi-justify-right::before{content:"";}.bi-justify::before{content:"";}.bi-kanban-fill::before{content:"";}.bi-kanban::before{content:"";}.bi-key-fill::before{content:"";}.bi-key::before{content:"";}.bi-keyboard-fill::before{content:"";}.bi-keyboard::before{content:"";}.bi-ladder::before{content:"";}.bi-lamp-fill::before{content:"";}.bi-lamp::before{content:"";}.bi-laptop-fill::before{content:"";}.bi-laptop::before{content:"";}.bi-layer-backward::before{content:"";}.bi-layer-forward::before{content:"";}.bi-layers-fill::before{content:"";}.bi-layers-half::before{content:"";}.bi-layers::before{content:"";}.bi-layout-sidebar-inset-reverse::before{content:"";}.bi-layout-sidebar-inset::before{content:"";}.bi-layout-sidebar-reverse::before{content:"";}.bi-layout-sidebar::before{content:"";}.bi-layout-split::before{content:"";}.bi-layout-text-sidebar-reverse::before{content:"";}.bi-layout-text-sidebar::before{content:"";}.bi-layout-text-window-reverse::before{content:"";}.bi-layout-text-window::before{content:"";}.bi-layout-three-columns::before{content:"";}.bi-layout-wtf::before{content:"";}.bi-life-preserver::before{content:"";}.bi-lightbulb-fill::before{content:"";}.bi-lightbulb-off-fill::before{content:"";}.bi-lightbulb-off::before{content:"";}.bi-lightbulb::before{content:"";}.bi-lightning-charge-fill::before{content:"";}.bi-lightning-charge::before{content:"";}.bi-lightning-fill::before{content:"";}.bi-lightning::before{content:"";}.bi-link-45deg::before{content:"";}.bi-link::before{content:"";}.bi-linkedin::before{content:"";}.bi-list-check::before{content:"";}.bi-list-nested::before{content:"";}.bi-list-ol::before{content:"";}.bi-list-stars::before{content:"";}.bi-list-task::before{content:"";}.bi-list-ul::before{content:"";}.bi-list::before{content:"";}.bi-lock-fill::before{content:"";}.bi-lock::before{content:"";}.bi-mailbox::before{content:"";}.bi-mailbox2::before{content:"";}.bi-map-fill::before{content:"";}.bi-map::before{content:"";}.bi-markdown-fill::before{content:"";}.bi-markdown::before{content:"";}.bi-mask::before{content:"";}.bi-megaphone-fill::before{content:"";}.bi-megaphone::before{content:"";}.bi-menu-app-fill::before{content:"";}.bi-menu-app::before{content:"";}.bi-menu-button-fill::before{content:"";}.bi-menu-button-wide-fill::before{content:"";}.bi-menu-button-wide::before{content:"";}.bi-menu-button::before{content:"";}.bi-menu-down::before{content:"";}.bi-menu-up::before{content:"";}.bi-mic-fill::before{content:"";}.bi-mic-mute-fill::before{content:"";}.bi-mic-mute::before{content:"";}.bi-mic::before{content:"";}.bi-minecart-loaded::before{content:"";}.bi-minecart::before{content:"";}.bi-moisture::before{content:"";}.bi-moon-fill::before{content:"";}.bi-moon-stars-fill::before{content:"";}.bi-moon-stars::before{content:"";}.bi-moon::before{content:"";}.bi-mouse-fill::before{content:"";}.bi-mouse::before{content:"";}.bi-mouse2-fill::before{content:"";}.bi-mouse2::before{content:"";}.bi-mouse3-fill::before{content:"";}.bi-mouse3::before{content:"";}.bi-music-note-beamed::before{content:"";}.bi-music-note-list::before{content:"";}.bi-music-note::before{content:"";}.bi-music-player-fill::before{content:"";}.bi-music-player::before{content:"";}.bi-newspaper::before{content:"";}.bi-node-minus-fill::before{content:"";}.bi-node-minus::before{content:"";}.bi-node-plus-fill::before{content:"";}.bi-node-plus::before{content:"";}.bi-nut-fill::before{content:"";}.bi-nut::before{content:"";}.bi-octagon-fill::before{content:"";}.bi-octagon-half::before{content:"";}.bi-octagon::before{content:"";}.bi-option::before{content:"";}.bi-outlet::before{content:"";}.bi-paint-bucket::before{content:"";}.bi-palette-fill::before{content:"";}.bi-palette::before{content:"";}.bi-palette2::before{content:"";}.bi-paperclip::before{content:"";}.bi-paragraph::before{content:"";}.bi-patch-check-fill::before{content:"";}.bi-patch-check::before{content:"";}.bi-patch-exclamation-fill::before{content:"";}.bi-patch-exclamation::before{content:"";}.bi-patch-minus-fill::before{content:"";}.bi-patch-minus::before{content:"";}.bi-patch-plus-fill::before{content:"";}.bi-patch-plus::before{content:"";}.bi-patch-question-fill::before{content:"";}.bi-patch-question::before{content:"";}.bi-pause-btn-fill::before{content:"";}.bi-pause-btn::before{content:"";}.bi-pause-circle-fill::before{content:"";}.bi-pause-circle::before{content:"";}.bi-pause-fill::before{content:"";}.bi-pause::before{content:"";}.bi-peace-fill::before{content:"";}.bi-peace::before{content:"";}.bi-pen-fill::before{content:"";}.bi-pen::before{content:"";}.bi-pencil-fill::before{content:"";}.bi-pencil-square::before{content:"";}.bi-pencil::before{content:"";}.bi-pentagon-fill::before{content:"";}.bi-pentagon-half::before{content:"";}.bi-pentagon::before{content:"";}.bi-people-fill::before{content:"";}.bi-people::before{content:"";}.bi-percent::before{content:"";}.bi-person-badge-fill::before{content:"";}.bi-person-badge::before{content:"";}.bi-person-bounding-box::before{content:"";}.bi-person-check-fill::before{content:"";}.bi-person-check::before{content:"";}.bi-person-circle::before{content:"";}.bi-person-dash-fill::before{content:"";}.bi-person-dash::before{content:"";}.bi-person-fill::before{content:"";}.bi-person-lines-fill::before{content:"";}.bi-person-plus-fill::before{content:"";}.bi-person-plus::before{content:"";}.bi-person-square::before{content:"";}.bi-person-x-fill::before{content:"";}.bi-person-x::before{content:"";}.bi-person::before{content:"";}.bi-phone-fill::before{content:"";}.bi-phone-landscape-fill::before{content:"";}.bi-phone-landscape::before{content:"";}.bi-phone-vibrate-fill::before{content:"";}.bi-phone-vibrate::before{content:"";}.bi-phone::before{content:"";}.bi-pie-chart-fill::before{content:"";}.bi-pie-chart::before{content:"";}.bi-pin-angle-fill::before{content:"";}.bi-pin-angle::before{content:"";}.bi-pin-fill::before{content:"";}.bi-pin::before{content:"";}.bi-pip-fill::before{content:"";}.bi-pip::before{content:"";}.bi-play-btn-fill::before{content:"";}.bi-play-btn::before{content:"";}.bi-play-circle-fill::before{content:"";}.bi-play-circle::before{content:"";}.bi-play-fill::before{content:"";}.bi-play::before{content:"";}.bi-plug-fill::before{content:"";}.bi-plug::before{content:"";}.bi-plus-circle-dotted::before{content:"";}.bi-plus-circle-fill::before{content:"";}.bi-plus-circle::before{content:"";}.bi-plus-square-dotted::before{content:"";}.bi-plus-square-fill::before{content:"";}.bi-plus-square::before{content:"";}.bi-plus::before{content:"";}.bi-power::before{content:"";}.bi-printer-fill::before{content:"";}.bi-printer::before{content:"";}.bi-puzzle-fill::before{content:"";}.bi-puzzle::before{content:"";}.bi-question-circle-fill::before{content:"";}.bi-question-circle::before{content:"";}.bi-question-diamond-fill::before{content:"";}.bi-question-diamond::before{content:"";}.bi-question-octagon-fill::before{content:"";}.bi-question-octagon::before{content:"";}.bi-question-square-fill::before{content:"";}.bi-question-square::before{content:"";}.bi-question::before{content:"";}.bi-rainbow::before{content:"";}.bi-receipt-cutoff::before{content:"";}.bi-receipt::before{content:"";}.bi-reception-0::before{content:"";}.bi-reception-1::before{content:"";}.bi-reception-2::before{content:"";}.bi-reception-3::before{content:"";}.bi-reception-4::before{content:"";}.bi-record-btn-fill::before{content:"";}.bi-record-btn::before{content:"";}.bi-record-circle-fill::before{content:"";}.bi-record-circle::before{content:"";}.bi-record-fill::before{content:"";}.bi-record::before{content:"";}.bi-record2-fill::before{content:"";}.bi-record2::before{content:"";}.bi-reply-all-fill::before{content:"";}.bi-reply-all::before{content:"";}.bi-reply-fill::before{content:"";}.bi-reply::before{content:"";}.bi-rss-fill::before{content:"";}.bi-rss::before{content:"";}.bi-rulers::before{content:"";}.bi-save-fill::before{content:"";}.bi-save::before{content:"";}.bi-save2-fill::before{content:"";}.bi-save2::before{content:"";}.bi-scissors::before{content:"";}.bi-screwdriver::before{content:"";}.bi-search::before{content:"";}.bi-segmented-nav::before{content:"";}.bi-server::before{content:"";}.bi-share-fill::before{content:"";}.bi-share::before{content:"";}.bi-shield-check::before{content:"";}.bi-shield-exclamation::before{content:"";}.bi-shield-fill-check::before{content:"";}.bi-shield-fill-exclamation::before{content:"";}.bi-shield-fill-minus::before{content:"";}.bi-shield-fill-plus::before{content:"";}.bi-shield-fill-x::before{content:"";}.bi-shield-fill::before{content:"";}.bi-shield-lock-fill::before{content:"";}.bi-shield-lock::before{content:"";}.bi-shield-minus::before{content:"";}.bi-shield-plus::before{content:"";}.bi-shield-shaded::before{content:"";}.bi-shield-slash-fill::before{content:"";}.bi-shield-slash::before{content:"";}.bi-shield-x::before{content:"";}.bi-shield::before{content:"";}.bi-shift-fill::before{content:"";}.bi-shift::before{content:"";}.bi-shop-window::before{content:"";}.bi-shop::before{content:"";}.bi-shuffle::before{content:"";}.bi-signpost-2-fill::before{content:"";}.bi-signpost-2::before{content:"";}.bi-signpost-fill::before{content:"";}.bi-signpost-split-fill::before{content:"";}.bi-signpost-split::before{content:"";}.bi-signpost::before{content:"";}.bi-sim-fill::before{content:"";}.bi-sim::before{content:"";}.bi-skip-backward-btn-fill::before{content:"";}.bi-skip-backward-btn::before{content:"";}.bi-skip-backward-circle-fill::before{content:"";}.bi-skip-backward-circle::before{content:"";}.bi-skip-backward-fill::before{content:"";}.bi-skip-backward::before{content:"";}.bi-skip-end-btn-fill::before{content:"";}.bi-skip-end-btn::before{content:"";}.bi-skip-end-circle-fill::before{content:"";}.bi-skip-end-circle::before{content:"";}.bi-skip-end-fill::before{content:"";}.bi-skip-end::before{content:"";}.bi-skip-forward-btn-fill::before{content:"";}.bi-skip-forward-btn::before{content:"";}.bi-skip-forward-circle-fill::before{content:"";}.bi-skip-forward-circle::before{content:"";}.bi-skip-forward-fill::before{content:"";}.bi-skip-forward::before{content:"";}.bi-skip-start-btn-fill::before{content:"";}.bi-skip-start-btn::before{content:"";}.bi-skip-start-circle-fill::before{content:"";}.bi-skip-start-circle::before{content:"";}.bi-skip-start-fill::before{content:"";}.bi-skip-start::before{content:"";}.bi-slack::before{content:"";}.bi-slash-circle-fill::before{content:"";}.bi-slash-circle::before{content:"";}.bi-slash-square-fill::before{content:"";}.bi-slash-square::before{content:"";}.bi-slash::before{content:"";}.bi-sliders::before{content:"";}.bi-smartwatch::before{content:"";}.bi-snow::before{content:"";}.bi-snow2::before{content:"";}.bi-snow3::before{content:"";}.bi-sort-alpha-down-alt::before{content:"";}.bi-sort-alpha-down::before{content:"";}.bi-sort-alpha-up-alt::before{content:"";}.bi-sort-alpha-up::before{content:"";}.bi-sort-down-alt::before{content:"";}.bi-sort-down::before{content:"";}.bi-sort-numeric-down-alt::before{content:"";}.bi-sort-numeric-down::before{content:"";}.bi-sort-numeric-up-alt::before{content:"";}.bi-sort-numeric-up::before{content:"";}.bi-sort-up-alt::before{content:"";}.bi-sort-up::before{content:"";}.bi-soundwave::before{content:"";}.bi-speaker-fill::before{content:"";}.bi-speaker::before{content:"";}.bi-speedometer::before{content:"";}.bi-speedometer2::before{content:"";}.bi-spellcheck::before{content:"";}.bi-square-fill::before{content:"";}.bi-square-half::before{content:"";}.bi-square::before{content:"";}.bi-stack::before{content:"";}.bi-star-fill::before{content:"";}.bi-star-half::before{content:"";}.bi-star::before{content:"";}.bi-stars::before{content:"";}.bi-stickies-fill::before{content:"";}.bi-stickies::before{content:"";}.bi-sticky-fill::before{content:"";}.bi-sticky::before{content:"";}.bi-stop-btn-fill::before{content:"";}.bi-stop-btn::before{content:"";}.bi-stop-circle-fill::before{content:"";}.bi-stop-circle::before{content:"";}.bi-stop-fill::before{content:"";}.bi-stop::before{content:"";}.bi-stoplights-fill::before{content:"";}.bi-stoplights::before{content:"";}.bi-stopwatch-fill::before{content:"";}.bi-stopwatch::before{content:"";}.bi-subtract::before{content:"";}.bi-suit-club-fill::before{content:"";}.bi-suit-club::before{content:"";}.bi-suit-diamond-fill::before{content:"";}.bi-suit-diamond::before{content:"";}.bi-suit-heart-fill::before{content:"";}.bi-suit-heart::before{content:"";}.bi-suit-spade-fill::before{content:"";}.bi-suit-spade::before{content:"";}.bi-sun-fill::before{content:"";}.bi-sun::before{content:"";}.bi-sunglasses::before{content:"";}.bi-sunrise-fill::before{content:"";}.bi-sunrise::before{content:"";}.bi-sunset-fill::before{content:"";}.bi-sunset::before{content:"";}.bi-symmetry-horizontal::before{content:"";}.bi-symmetry-vertical::before{content:"";}.bi-table::before{content:"";}.bi-tablet-fill::before{content:"";}.bi-tablet-landscape-fill::before{content:"";}.bi-tablet-landscape::before{content:"";}.bi-tablet::before{content:"";}.bi-tag-fill::before{content:"";}.bi-tag::before{content:"";}.bi-tags-fill::before{content:"";}.bi-tags::before{content:"";}.bi-telegram::before{content:"";}.bi-telephone-fill::before{content:"";}.bi-telephone-forward-fill::before{content:"";}.bi-telephone-forward::before{content:"";}.bi-telephone-inbound-fill::before{content:"";}.bi-telephone-inbound::before{content:"";}.bi-telephone-minus-fill::before{content:"";}.bi-telephone-minus::before{content:"";}.bi-telephone-outbound-fill::before{content:"";}.bi-telephone-outbound::before{content:"";}.bi-telephone-plus-fill::before{content:"";}.bi-telephone-plus::before{content:"";}.bi-telephone-x-fill::before{content:"";}.bi-telephone-x::before{content:"";}.bi-telephone::before{content:"";}.bi-terminal-fill::before{content:"";}.bi-terminal::before{content:"";}.bi-text-center::before{content:"";}.bi-text-indent-left::before{content:"";}.bi-text-indent-right::before{content:"";}.bi-text-left::before{content:"";}.bi-text-paragraph::before{content:"";}.bi-text-right::before{content:"";}.bi-textarea-resize::before{content:"";}.bi-textarea-t::before{content:"";}.bi-textarea::before{content:"";}.bi-thermometer-half::before{content:"";}.bi-thermometer-high::before{content:"";}.bi-thermometer-low::before{content:"";}.bi-thermometer-snow::before{content:"";}.bi-thermometer-sun::before{content:"";}.bi-thermometer::before{content:"";}.bi-three-dots-vertical::before{content:"";}.bi-three-dots::before{content:"";}.bi-toggle-off::before{content:"";}.bi-toggle-on::before{content:"";}.bi-toggle2-off::before{content:"";}.bi-toggle2-on::before{content:"";}.bi-toggles::before{content:"";}.bi-toggles2::before{content:"";}.bi-tools::before{content:"";}.bi-tornado::before{content:"";}.bi-trash-fill::before{content:"";}.bi-trash::before{content:"";}.bi-trash2-fill::before{content:"";}.bi-trash2::before{content:"";}.bi-tree-fill::before{content:"";}.bi-tree::before{content:"";}.bi-triangle-fill::before{content:"";}.bi-triangle-half::before{content:"";}.bi-triangle::before{content:"";}.bi-trophy-fill::before{content:"";}.bi-trophy::before{content:"";}.bi-tropical-storm::before{content:"";}.bi-truck-flatbed::before{content:"";}.bi-truck::before{content:"";}.bi-tsunami::before{content:"";}.bi-tv-fill::before{content:"";}.bi-tv::before{content:"";}.bi-twitch::before{content:"";}.bi-twitter::before{content:"";}.bi-type-bold::before{content:"";}.bi-type-h1::before{content:"";}.bi-type-h2::before{content:"";}.bi-type-h3::before{content:"";}.bi-type-italic::before{content:"";}.bi-type-strikethrough::before{content:"";}.bi-type-underline::before{content:"";}.bi-type::before{content:"";}.bi-ui-checks-grid::before{content:"";}.bi-ui-checks::before{content:"";}.bi-ui-radios-grid::before{content:"";}.bi-ui-radios::before{content:"";}.bi-umbrella-fill::before{content:"";}.bi-umbrella::before{content:"";}.bi-union::before{content:"";}.bi-unlock-fill::before{content:"";}.bi-unlock::before{content:"";}.bi-upc-scan::before{content:"";}.bi-upc::before{content:"";}.bi-upload::before{content:"";}.bi-vector-pen::before{content:"";}.bi-view-list::before{content:"";}.bi-view-stacked::before{content:"";}.bi-vinyl-fill::before{content:"";}.bi-vinyl::before{content:"";}.bi-voicemail::before{content:"";}.bi-volume-down-fill::before{content:"";}.bi-volume-down::before{content:"";}.bi-volume-mute-fill::before{content:"";}.bi-volume-mute::before{content:"";}.bi-volume-off-fill::before{content:"";}.bi-volume-off::before{content:"";}.bi-volume-up-fill::before{content:"";}.bi-volume-up::before{content:"";}.bi-vr::before{content:"";}.bi-wallet-fill::before{content:"";}.bi-wallet::before{content:"";}.bi-wallet2::before{content:"";}.bi-watch::before{content:"";}.bi-water::before{content:"";}.bi-whatsapp::before{content:"";}.bi-wifi-1::before{content:"";}.bi-wifi-2::before{content:"";}.bi-wifi-off::before{content:"";}.bi-wifi::before{content:"";}.bi-wind::before{content:"";}.bi-window-dock::before{content:"";}.bi-window-sidebar::before{content:"";}.bi-window::before{content:"";}.bi-wrench::before{content:"";}.bi-x-circle-fill::before{content:"";}.bi-x-circle::before{content:"";}.bi-x-diamond-fill::before{content:"";}.bi-x-diamond::before{content:"";}.bi-x-octagon-fill::before{content:"";}.bi-x-octagon::before{content:"";}.bi-x-square-fill::before{content:"";}.bi-x-square::before{content:"";}.bi-x::before{content:"";}.bi-youtube::before{content:"";}.bi-zoom-in::before{content:"";}.bi-zoom-out::before{content:"";}.bi-bank::before{content:"";}.bi-bank2::before{content:"";}.bi-bell-slash-fill::before{content:"";}.bi-bell-slash::before{content:"";}.bi-cash-coin::before{content:"";}.bi-check-lg::before{content:"";}.bi-coin::before{content:"";}.bi-currency-bitcoin::before{content:"";}.bi-currency-dollar::before{content:"";}.bi-currency-euro::before{content:"";}.bi-currency-exchange::before{content:"";}.bi-currency-pound::before{content:"";}.bi-currency-yen::before{content:"";}.bi-dash-lg::before{content:"";}.bi-exclamation-lg::before{content:"";}.bi-file-earmark-pdf-fill::before{content:"";}.bi-file-earmark-pdf::before{content:"";}.bi-file-pdf-fill::before{content:"";}.bi-file-pdf::before{content:"";}.bi-gender-ambiguous::before{content:"";}.bi-gender-female::before{content:"";}.bi-gender-male::before{content:"";}.bi-gender-trans::before{content:"";}.bi-headset-vr::before{content:"";}.bi-info-lg::before{content:"";}.bi-mastodon::before{content:"";}.bi-messenger::before{content:"";}.bi-piggy-bank-fill::before{content:"";}.bi-piggy-bank::before{content:"";}.bi-pin-map-fill::before{content:"";}.bi-pin-map::before{content:"";}.bi-plus-lg::before{content:"";}.bi-question-lg::before{content:"";}.bi-recycle::before{content:"";}.bi-reddit::before{content:"";}.bi-safe-fill::before{content:"";}.bi-safe2-fill::before{content:"";}.bi-safe2::before{content:"";}.bi-sd-card-fill::before{content:"";}.bi-sd-card::before{content:"";}.bi-skype::before{content:"";}.bi-slash-lg::before{content:"";}.bi-translate::before{content:"";}.bi-x-lg::before{content:"";}.bi-safe::before{content:"";}.bi-apple::before{content:"";}.bi-microsoft::before{content:"";}.bi-windows::before{content:"";}.bi-behance::before{content:"";}.bi-dribbble::before{content:"";}.bi-line::before{content:"";}.bi-medium::before{content:"";}.bi-paypal::before{content:"";}.bi-pinterest::before{content:"";}.bi-signal::before{content:"";}.bi-snapchat::before{content:"";}.bi-spotify::before{content:"";}.bi-stack-overflow::before{content:"";}.bi-strava::before{content:"";}.bi-wordpress::before{content:"";}.bi-vimeo::before{content:"";}.bi-activity::before{content:"";}.bi-easel2-fill::before{content:"";}.bi-easel2::before{content:"";}.bi-easel3-fill::before{content:"";}.bi-easel3::before{content:"";}.bi-fan::before{content:"";}.bi-fingerprint::before{content:"";}.bi-graph-down-arrow::before{content:"";}.bi-graph-up-arrow::before{content:"";}.bi-hypnotize::before{content:"";}.bi-magic::before{content:"";}.bi-person-rolodex::before{content:"";}.bi-person-video::before{content:"";}.bi-person-video2::before{content:"";}.bi-person-video3::before{content:"";}.bi-person-workspace::before{content:"";}.bi-radioactive::before{content:"";}.bi-webcam-fill::before{content:"";}.bi-webcam::before{content:"";}.bi-yin-yang::before{content:"";}.bi-bandaid-fill::before{content:"";}.bi-bandaid::before{content:"";}.bi-bluetooth::before{content:"";}.bi-body-text::before{content:"";}.bi-boombox::before{content:"";}.bi-boxes::before{content:"";}.bi-dpad-fill::before{content:"";}.bi-dpad::before{content:"";}.bi-ear-fill::before{content:"";}.bi-ear::before{content:"";}.bi-envelope-check-1::before{content:"";}.bi-envelope-check-fill::before{content:"";}.bi-envelope-check::before{content:"";}.bi-envelope-dash-1::before{content:"";}.bi-envelope-dash-fill::before{content:"";}.bi-envelope-dash::before{content:"";}.bi-envelope-exclamation-1::before{content:"";}.bi-envelope-exclamation-fill::before{content:"";}.bi-envelope-exclamation::before{content:"";}.bi-envelope-plus-fill::before{content:"";}.bi-envelope-plus::before{content:"";}.bi-envelope-slash-1::before{content:"";}.bi-envelope-slash-fill::before{content:"";}.bi-envelope-slash::before{content:"";}.bi-envelope-x-1::before{content:"";}.bi-envelope-x-fill::before{content:"";}.bi-envelope-x::before{content:"";}.bi-explicit-fill::before{content:"";}.bi-explicit::before{content:"";}.bi-git::before{content:"";}.bi-infinity::before{content:"";}.bi-list-columns-reverse::before{content:"";}.bi-list-columns::before{content:"";}.bi-meta::before{content:"";}.bi-mortorboard-fill::before{content:"";}.bi-mortorboard::before{content:"";}.bi-nintendo-switch::before{content:"";}.bi-pc-display-horizontal::before{content:"";}.bi-pc-display::before{content:"";}.bi-pc-horizontal::before{content:"";}.bi-pc::before{content:"";}.bi-playstation::before{content:"";}.bi-plus-slash-minus::before{content:"";}.bi-projector-fill::before{content:"";}.bi-projector::before{content:"";}.bi-qr-code-scan::before{content:"";}.bi-qr-code::before{content:"";}.bi-quora::before{content:"";}.bi-quote::before{content:"";}.bi-robot::before{content:"";}.bi-send-check-fill::before{content:"";}.bi-send-check::before{content:"";}.bi-send-dash-fill::before{content:"";}.bi-send-dash::before{content:"";}.bi-send-exclamation-1::before{content:"";}.bi-send-exclamation-fill::before{content:"";}.bi-send-exclamation::before{content:"";}.bi-send-fill::before{content:"";}.bi-send-plus-fill::before{content:"";}.bi-send-plus::before{content:"";}.bi-send-slash-fill::before{content:"";}.bi-send-slash::before{content:"";}.bi-send-x-fill::before{content:"";}.bi-send-x::before{content:"";}.bi-send::before{content:"";}.bi-steam::before{content:"";}.bi-terminal-dash-1::before{content:"";}.bi-terminal-dash::before{content:"";}.bi-terminal-plus::before{content:"";}.bi-terminal-split::before{content:"";}.bi-ticket-detailed-fill::before{content:"";}.bi-ticket-detailed::before{content:"";}.bi-ticket-fill::before{content:"";}.bi-ticket-perforated-fill::before{content:"";}.bi-ticket-perforated::before{content:"";}.bi-ticket::before{content:"";}.bi-tiktok::before{content:"";}.bi-window-dash::before{content:"";}.bi-window-desktop::before{content:"";}.bi-window-fullscreen::before{content:"";}.bi-window-plus::before{content:"";}.bi-window-split::before{content:"";}.bi-window-stack::before{content:"";}.bi-window-x::before{content:"";}.bi-xbox::before{content:"";}.bi-ethernet::before{content:"";}.bi-hdmi-fill::before{content:"";}.bi-hdmi::before{content:"";}.bi-usb-c-fill::before{content:"";}.bi-usb-c::before{content:"";}.bi-usb-fill::before{content:"";}.bi-usb-plug-fill::before{content:"";}.bi-usb-plug::before{content:"";}.bi-usb-symbol::before{content:"";}.bi-usb::before{content:"";}.bi-boombox-fill::before{content:"";}.bi-displayport-1::before{content:"";}.bi-displayport::before{content:"";}.bi-gpu-card::before{content:"";}.bi-memory::before{content:"";}.bi-modem-fill::before{content:"";}.bi-modem::before{content:"";}.bi-motherboard-fill::before{content:"";}.bi-motherboard::before{content:"";}.bi-optical-audio-fill::before{content:"";}.bi-optical-audio::before{content:"";}.bi-pci-card::before{content:"";}.bi-router-fill::before{content:"";}.bi-router::before{content:"";}.bi-ssd-fill::before{content:"";}.bi-ssd::before{content:"";}.bi-thunderbolt-fill::before{content:"";}.bi-thunderbolt::before{content:"";}.bi-usb-drive-fill::before{content:"";}.bi-usb-drive::before{content:"";}.bi-usb-micro-fill::before{content:"";}.bi-usb-micro::before{content:"";}.bi-usb-mini-fill::before{content:"";}.bi-usb-mini::before{content:"";}.bi-cloud-haze2::before{content:"";}.bi-device-hdd-fill::before{content:"";}.bi-device-hdd::before{content:"";}.bi-device-ssd-fill::before{content:"";}.bi-device-ssd::before{content:"";}.bi-displayport-fill::before{content:"";}.bi-mortarboard-fill::before{content:"";}.bi-mortarboard::before{content:"";}.bi-terminal-x::before{content:"";}.bi-arrow-through-heart-fill::before{content:"";}.bi-arrow-through-heart::before{content:"";}.bi-badge-sd-fill::before{content:"";}.bi-badge-sd::before{content:"";}.bi-bag-heart-fill::before{content:"";}.bi-bag-heart::before{content:"";}.bi-balloon-fill::before{content:"";}.bi-balloon-heart-fill::before{content:"";}.bi-balloon-heart::before{content:"";}.bi-balloon::before{content:"";}.bi-box2-fill::before{content:"";}.bi-box2-heart-fill::before{content:"";}.bi-box2-heart::before{content:"";}.bi-box2::before{content:"";}.bi-braces-asterisk::before{content:"";}.bi-calendar-heart-fill::before{content:"";}.bi-calendar-heart::before{content:"";}.bi-calendar2-heart-fill::before{content:"";}.bi-calendar2-heart::before{content:"";}.bi-chat-heart-fill::before{content:"";}.bi-chat-heart::before{content:"";}.bi-chat-left-heart-fill::before{content:"";}.bi-chat-left-heart::before{content:"";}.bi-chat-right-heart-fill::before{content:"";}.bi-chat-right-heart::before{content:"";}.bi-chat-square-heart-fill::before{content:"";}.bi-chat-square-heart::before{content:"";}.bi-clipboard-check-fill::before{content:"";}.bi-clipboard-data-fill::before{content:"";}.bi-clipboard-fill::before{content:"";}.bi-clipboard-heart-fill::before{content:"";}.bi-clipboard-heart::before{content:"";}.bi-clipboard-minus-fill::before{content:"";}.bi-clipboard-plus-fill::before{content:"";}.bi-clipboard-pulse::before{content:"";}.bi-clipboard-x-fill::before{content:"";}.bi-clipboard2-check-fill::before{content:"";}.bi-clipboard2-check::before{content:"";}.bi-clipboard2-data-fill::before{content:"";}.bi-clipboard2-data::before{content:"";}.bi-clipboard2-fill::before{content:"";}.bi-clipboard2-heart-fill::before{content:"";}.bi-clipboard2-heart::before{content:"";}.bi-clipboard2-minus-fill::before{content:"";}.bi-clipboard2-minus::before{content:"";}.bi-clipboard2-plus-fill::before{content:"";}.bi-clipboard2-plus::before{content:"";}.bi-clipboard2-pulse-fill::before{content:"";}.bi-clipboard2-pulse::before{content:"";}.bi-clipboard2-x-fill::before{content:"";}.bi-clipboard2-x::before{content:"";}.bi-clipboard2::before{content:"";}.bi-emoji-kiss-fill::before{content:"";}.bi-emoji-kiss::before{content:"";}.bi-envelope-heart-fill::before{content:"";}.bi-envelope-heart::before{content:"";}.bi-envelope-open-heart-fill::before{content:"";}.bi-envelope-open-heart::before{content:"";}.bi-envelope-paper-fill::before{content:"";}.bi-envelope-paper-heart-fill::before{content:"";}.bi-envelope-paper-heart::before{content:"";}.bi-envelope-paper::before{content:"";}.bi-filetype-aac::before{content:"";}.bi-filetype-ai::before{content:"";}.bi-filetype-bmp::before{content:"";}.bi-filetype-cs::before{content:"";}.bi-filetype-css::before{content:"";}.bi-filetype-csv::before{content:"";}.bi-filetype-doc::before{content:"";}.bi-filetype-docx::before{content:"";}.bi-filetype-exe::before{content:"";}.bi-filetype-gif::before{content:"";}.bi-filetype-heic::before{content:"";}.bi-filetype-html::before{content:"";}.bi-filetype-java::before{content:"";}.bi-filetype-jpg::before{content:"";}.bi-filetype-js::before{content:"";}.bi-filetype-jsx::before{content:"";}.bi-filetype-key::before{content:"";}.bi-filetype-m4p::before{content:"";}.bi-filetype-md::before{content:"";}.bi-filetype-mdx::before{content:"";}.bi-filetype-mov::before{content:"";}.bi-filetype-mp3::before{content:"";}.bi-filetype-mp4::before{content:"";}.bi-filetype-otf::before{content:"";}.bi-filetype-pdf::before{content:"";}.bi-filetype-php::before{content:"";}.bi-filetype-png::before{content:"";}.bi-filetype-ppt-1::before{content:"";}.bi-filetype-ppt::before{content:"";}.bi-filetype-psd::before{content:"";}.bi-filetype-py::before{content:"";}.bi-filetype-raw::before{content:"";}.bi-filetype-rb::before{content:"";}.bi-filetype-sass::before{content:"";}.bi-filetype-scss::before{content:"";}.bi-filetype-sh::before{content:"";}.bi-filetype-svg::before{content:"";}.bi-filetype-tiff::before{content:"";}.bi-filetype-tsx::before{content:"";}.bi-filetype-ttf::before{content:"";}.bi-filetype-txt::before{content:"";}.bi-filetype-wav::before{content:"";}.bi-filetype-woff::before{content:"";}.bi-filetype-xls-1::before{content:"";}.bi-filetype-xls::before{content:"";}.bi-filetype-xml::before{content:"";}.bi-filetype-yml::before{content:"";}.bi-heart-arrow::before{content:"";}.bi-heart-pulse-fill::before{content:"";}.bi-heart-pulse::before{content:"";}.bi-heartbreak-fill::before{content:"";}.bi-heartbreak::before{content:"";}.bi-hearts::before{content:"";}.bi-hospital-fill::before{content:"";}.bi-hospital::before{content:"";}.bi-house-heart-fill::before{content:"";}.bi-house-heart::before{content:"";}.bi-incognito::before{content:"";}.bi-magnet-fill::before{content:"";}.bi-magnet::before{content:"";}.bi-person-heart::before{content:"";}.bi-person-hearts::before{content:"";}.bi-phone-flip::before{content:"";}.bi-plugin::before{content:"";}.bi-postage-fill::before{content:"";}.bi-postage-heart-fill::before{content:"";}.bi-postage-heart::before{content:"";}.bi-postage::before{content:"";}.bi-postcard-fill::before{content:"";}.bi-postcard-heart-fill::before{content:"";}.bi-postcard-heart::before{content:"";}.bi-postcard::before{content:"";}.bi-search-heart-fill::before{content:"";}.bi-search-heart::before{content:"";}.bi-sliders2-vertical::before{content:"";}.bi-sliders2::before{content:"";}.bi-trash3-fill::before{content:"";}.bi-trash3::before{content:"";}.bi-valentine::before{content:"";}.bi-valentine2::before{content:"";}.bi-wrench-adjustable-circle-fill::before{content:"";}.bi-wrench-adjustable-circle::before{content:"";}.bi-wrench-adjustable::before{content:"";}.bi-filetype-json::before{content:"";}.bi-filetype-pptx::before{content:"";}.bi-filetype-xlsx::before{content:"";}.bi-1-circle-1::before{content:"";}.bi-1-circle-fill-1::before{content:"";}.bi-1-circle-fill::before{content:"";}.bi-1-circle::before{content:"";}.bi-1-square-fill::before{content:"";}.bi-1-square::before{content:"";}.bi-2-circle-1::before{content:"";}.bi-2-circle-fill-1::before{content:"";}.bi-2-circle-fill::before{content:"";}.bi-2-circle::before{content:"";}.bi-2-square-fill::before{content:"";}.bi-2-square::before{content:"";}.bi-3-circle-1::before{content:"";}.bi-3-circle-fill-1::before{content:"";}.bi-3-circle-fill::before{content:"";}.bi-3-circle::before{content:"";}.bi-3-square-fill::before{content:"";}.bi-3-square::before{content:"";}.bi-4-circle-1::before{content:"";}.bi-4-circle-fill-1::before{content:"";}.bi-4-circle-fill::before{content:"";}.bi-4-circle::before{content:"";}.bi-4-square-fill::before{content:"";}.bi-4-square::before{content:"";}.bi-5-circle-1::before{content:"";}.bi-5-circle-fill-1::before{content:"";}.bi-5-circle-fill::before{content:"";}.bi-5-circle::before{content:"";}.bi-5-square-fill::before{content:"";}.bi-5-square::before{content:"";}.bi-6-circle-1::before{content:"";}.bi-6-circle-fill-1::before{content:"";}.bi-6-circle-fill::before{content:"";}.bi-6-circle::before{content:"";}.bi-6-square-fill::before{content:"";}.bi-6-square::before{content:"";}.bi-7-circle-1::before{content:"";}.bi-7-circle-fill-1::before{content:"";}.bi-7-circle-fill::before{content:"";}.bi-7-circle::before{content:"";}.bi-7-square-fill::before{content:"";}.bi-7-square::before{content:"";}.bi-8-circle-1::before{content:"";}.bi-8-circle-fill-1::before{content:"";}.bi-8-circle-fill::before{content:"";}.bi-8-circle::before{content:"";}.bi-8-square-fill::before{content:"";}.bi-8-square::before{content:"";}.bi-9-circle-1::before{content:"";}.bi-9-circle-fill-1::before{content:"";}.bi-9-circle-fill::before{content:"";}.bi-9-circle::before{content:"";}.bi-9-square-fill::before{content:"";}.bi-9-square::before{content:"";}.bi-airplane-engines-fill::before{content:"";}.bi-airplane-engines::before{content:"";}.bi-airplane-fill::before{content:"";}.bi-airplane::before{content:"";}.bi-alexa::before{content:"";}.bi-alipay::before{content:"";}.bi-android::before{content:"";}.bi-android2::before{content:"";}.bi-box-fill::before{content:"";}.bi-box-seam-fill::before{content:"";}.bi-browser-chrome::before{content:"";}.bi-browser-edge::before{content:"";}.bi-browser-firefox::before{content:"";}.bi-browser-safari::before{content:"";}.bi-c-circle-1::before{content:"";}.bi-c-circle-fill-1::before{content:"";}.bi-c-circle-fill::before{content:"";}.bi-c-circle::before{content:"";}.bi-c-square-fill::before{content:"";}.bi-c-square::before{content:"";}.bi-capsule-pill::before{content:"";}.bi-capsule::before{content:"";}.bi-car-front-fill::before{content:"";}.bi-car-front::before{content:"";}.bi-cassette-fill::before{content:"";}.bi-cassette::before{content:"";}.bi-cc-circle-1::before{content:"";}.bi-cc-circle-fill-1::before{content:"";}.bi-cc-circle-fill::before{content:"";}.bi-cc-circle::before{content:"";}.bi-cc-square-fill::before{content:"";}.bi-cc-square::before{content:"";}.bi-cup-hot-fill::before{content:"";}.bi-cup-hot::before{content:"";}.bi-currency-rupee::before{content:"";}.bi-dropbox::before{content:"";}.bi-escape::before{content:"";}.bi-fast-forward-btn-fill::before{content:"";}.bi-fast-forward-btn::before{content:"";}.bi-fast-forward-circle-fill::before{content:"";}.bi-fast-forward-circle::before{content:"";}.bi-fast-forward-fill::before{content:"";}.bi-fast-forward::before{content:"";}.bi-filetype-sql::before{content:"";}.bi-fire::before{content:"";}.bi-google-play::before{content:"";}.bi-h-circle-1::before{content:"";}.bi-h-circle-fill-1::before{content:"";}.bi-h-circle-fill::before{content:"";}.bi-h-circle::before{content:"";}.bi-h-square-fill::before{content:"";}.bi-h-square::before{content:"";}.bi-indent::before{content:"";}.bi-lungs-fill::before{content:"";}.bi-lungs::before{content:"";}.bi-microsoft-teams::before{content:"";}.bi-p-circle-1::before{content:"";}.bi-p-circle-fill-1::before{content:"";}.bi-p-circle-fill::before{content:"";}.bi-p-circle::before{content:"";}.bi-p-square-fill::before{content:"";}.bi-p-square::before{content:"";}.bi-pass-fill::before{content:"";}.bi-pass::before{content:"";}.bi-prescription::before{content:"";}.bi-prescription2::before{content:"";}.bi-r-circle-1::before{content:"";}.bi-r-circle-fill-1::before{content:"";}.bi-r-circle-fill::before{content:"";}.bi-r-circle::before{content:"";}.bi-r-square-fill::before{content:"";}.bi-r-square::before{content:"";}.bi-repeat-1::before{content:"";}.bi-repeat::before{content:"";}.bi-rewind-btn-fill::before{content:"";}.bi-rewind-btn::before{content:"";}.bi-rewind-circle-fill::before{content:"";}.bi-rewind-circle::before{content:"";}.bi-rewind-fill::before{content:"";}.bi-rewind::before{content:"";}.bi-train-freight-front-fill::before{content:"";}.bi-train-freight-front::before{content:"";}.bi-train-front-fill::before{content:"";}.bi-train-front::before{content:"";}.bi-train-lightrail-front-fill::before{content:"";}.bi-train-lightrail-front::before{content:"";}.bi-truck-front-fill::before{content:"";}.bi-truck-front::before{content:"";}.bi-ubuntu::before{content:"";}.bi-unindent::before{content:"";}.bi-unity::before{content:"";}.bi-universal-access-circle::before{content:"";}.bi-universal-access::before{content:"";}.bi-virus::before{content:"";}.bi-virus2::before{content:"";}.bi-wechat::before{content:"";}.bi-yelp::before{content:"";}.bi-sign-stop-fill::before{content:"";}.bi-sign-stop-lights-fill::before{content:"";}.bi-sign-stop-lights::before{content:"";}.bi-sign-stop::before{content:"";}.bi-sign-turn-left-fill::before{content:"";}.bi-sign-turn-left::before{content:"";}.bi-sign-turn-right-fill::before{content:"";}.bi-sign-turn-right::before{content:"";}.bi-sign-turn-slight-left-fill::before{content:"";}.bi-sign-turn-slight-left::before{content:"";}.bi-sign-turn-slight-right-fill::before{content:"";}.bi-sign-turn-slight-right::before{content:"";}.bi-sign-yield-fill::before{content:"";}.bi-sign-yield::before{content:"";}.bi-ev-station-fill::before{content:"";}.bi-ev-station::before{content:"";}.bi-fuel-pump-diesel-fill::before{content:"";}.bi-fuel-pump-diesel::before{content:"";}.bi-fuel-pump-fill::before{content:"";}.bi-fuel-pump::before{content:"";} /*! - * Bootstrap v5.3.0-alpha1 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ -:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#8c68cd;--bs-secondary:#3c8cd6;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-accent:#009696;--bs-mute:#6c757d;--bs-primary-rgb:140,104,205;--bs-secondary-rgb:60,140,214;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text:#8c68cd;--bs-secondary-text:#6c757d;--bs-success-text:#146c43;--bs-info-text:#087990;--bs-warning-text:#997404;--bs-danger-text:#b02a37;--bs-light-text:#6c757d;--bs-dark-text:#495057;--bs-primary-bg-subtle:#7d59bd;--bs-secondary-bg-subtle:#f8f9fa;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#714db1;--bs-secondary-border-subtle:#e9ecef;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-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,.15),rgba(255,255,255,0));--bs-root-font-size:15px;--bs-body-font-family:"Inconsolata",monospace;--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33,37,41,.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33,37,41,.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-link-color:#8c68cd;--bs-link-color-rgb:140,104,205;--bs-link-decoration:underline;--bs-link-hover-color:#7053a4;--bs-link-hover-color-rgb:112,83,164;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0,0,0,.175);--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem rgba(var(--bs-body-color-rgb),.15);--bs-box-shadow-sm:0 .125rem .25rem rgba(var(--bs-body-color-rgb),.075);--bs-box-shadow-lg:0 1rem 3rem rgba(var(--bs-body-color-rgb),.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(var(--bs-body-color-rgb),.075);--bs-emphasis-color:#000;--bs-form-control-bg:var(--bs-body-bg);--bs-form-control-disabled-bg:var(--bs-secondary-bg);--bs-highlight-bg:#fff3cd;--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px;}[data-bs-theme=dark]{--bs-body-color:#adb5bd;--bs-body-color-rgb:173,181,189;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#f8f9fa;--bs-emphasis-color-rgb:248,249,250;--bs-secondary-color:rgba(173,181,189,.75);--bs-secondary-color-rgb:173,181,189;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(173,181,189,.5);--bs-tertiary-color-rgb:173,181,189;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-emphasis-color:#fff;--bs-primary-text:#8c68cd;--bs-secondary-text:#3c8cd6;--bs-success-text:#75b798;--bs-info-text:#6edff6;--bs-warning-text:#ffda6a;--bs-danger-text:#ea868f;--bs-light-text:#f8f9fa;--bs-dark-text:#dee2e6;--bs-primary-bg-subtle:#7d59bd;--bs-secondary-bg-subtle:#212529;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#714db1;--bs-secondary-border-subtle:#495057;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#055160;--bs-warning-border-subtle:#664d03;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:#fff;--bs-link-color:#8c68cd;--bs-link-hover-color:#c5b3e6;--bs-link-color-rgb:140,104,205;--bs-link-hover-color-rgb:197,179,230;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255,255,255,.15);}*,*::before,*::after{box-sizing:border-box;}:root{font-size:var(--bs-root-font-size);}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth;}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25;}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color,inherit);}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 + .9vw);}@media(min-width:1200px){h2,.h2{font-size:2rem;}}h3,.h3{font-size:calc(1.3rem + .6vw);}@media(min-width:1200px){h3,.h3{font-size:1.75rem;}}h4,.h4{font-size:calc(1.275rem + .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]{text-decoration:underline dotted;cursor:help;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:.5rem;margin-left:0;}blockquote{margin:0 0 1rem;}b,strong{font-weight:bolder;}small,.small{font-size:.875em;}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg);}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline;}sub{bottom:-.25em;}sup{top:-.5em;}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline;}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb);}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none;}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em;}pre code{font-size:inherit;color:inherit;word-break:normal;}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word;}a>code{color:inherit;}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.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:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left;}th{text-align:inherit;text-align:-webkit-match-parent;}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0;}label{display:inline-block;}button{border-radius:0;}button:focus:not(:focus-visible){outline:0;}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit;}button,select{text-transform:none;}[role=button]{cursor:pointer;}select{word-wrap:normal;}select:disabled{opacity:1;}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important;}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer;}::-moz-focus-inner{padding:0;border-style:none;}textarea{resize:vertical;}fieldset{min-width:0;padding:0;margin:0;border:0;}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .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;}::-webkit-search-decoration{-webkit-appearance:none;}::-webkit-color-swatch-wrapper{padding:0;}::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:.5rem;}.initialism{font-size:.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:.875em;color:#6c757d;}.blockquote-footer::before{content:"— ";}.img-fluid{max-width:100%;height:auto;}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto;}.figure{display:inline-block;}.figure-img{margin-bottom:.5rem;line-height:1;}.figure-caption{font-size:.875em;color:var(--bs-secondary-color);}.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)*.5);padding-left:calc(var(--bs-gutter-x)*.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(-.5*var(--bs-gutter-x));margin-left:calc(-.5*var(--bs-gutter-x));}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y);}.col{flex:1 0 0%;}.row-cols-auto>*{flex:0 0 auto;width:auto;}.row-cols-1>*{flex:0 0 auto;width:100%;}.row-cols-2>*{flex:0 0 auto;width:50%;}.row-cols-3>*{flex:0 0 auto;width:33.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:.25rem;}.g-1,.gy-1{--bs-gutter-y:.25rem;}.g-2,.gx-2{--bs-gutter-x:.5rem;}.g-2,.gy-2{--bs-gutter-y:.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:.25rem;}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem;}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem;}.g-sm-2,.gy-sm-2{--bs-gutter-y:.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:.25rem;}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem;}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem;}.g-md-2,.gy-md-2{--bs-gutter-y:.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:.25rem;}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem;}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem;}.g-lg-2,.gy-lg-2{--bs-gutter-y:.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:.25rem;}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem;}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem;}.g-xl-2,.gy-xl-2{--bs-gutter-y:.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:.25rem;}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem;}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem;}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.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,.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0,0,0,.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(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:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);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:calc(var(--bs-border-width)*2) solid currentcolor;}.caption-top{caption-side:top;}.table-sm>:not(caption)>*>*{padding:.25rem .25rem;}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0;}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width);}.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:#e8e1f5;--bs-table-border-color:#d1cbdd;--bs-table-striped-bg:#dcd6e9;--bs-table-striped-color:#000;--bs-table-active-bg:#d1cbdd;--bs-table-active-color:#000;--bs-table-hover-bg:#d7d0e3;--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:#d8e8f7;--bs-table-border-color:#c2d1de;--bs-table-striped-bg:#cddceb;--bs-table-striped-color:#000;--bs-table-active-bg:#c2d1de;--bs-table-active-color:#000;--bs-table-hover-bg:#c8d7e4;--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:.5rem;}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5;}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem;}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem;}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color);}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-form-control-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .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:var(--bs-body-color);background-color:var(--bs-form-control-bg);border-color:#c6b4e6;outline:0;box-shadow:0 0 0 .25rem rgba(140,104,205,.25);}.form-control::-webkit-date-and-time-value{height:1.5em;}.form-control::-webkit-datetime-edit{display:block;padding:0;}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1;}.form-control:disabled{background-color:var(--bs-form-control-disabled-bg);opacity:1;}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;}@media(prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none;}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg);}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 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 + .5rem + calc(var(--bs-border-width)*2));padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem;}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem;}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2));padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem;}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem;}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width)*2));}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2));}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2));}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width)*2));padding:.375rem;}.form-control-color:not(:disabled):not([readonly]){cursor:pointer;}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem;}.form-control-color::-webkit-color-swatch{border-radius:.375rem;}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2));}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2));}.form-select{--bs-form-select-bg-img: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");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-form-control-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;}@media(prefers-reduced-motion:reduce){.form-select{transition:none;}}.form-select:focus{border-color:#c6b4e6;outline:0;box-shadow:0 0 0 .25rem rgba(140,104,205,.25);}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none;}.form-select:disabled{background-color:var(--bs-form-control-disabled-bg);}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color);}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem;}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem;}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23adb5bd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.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{--bs-form-check-bg:var(--bs-form-control-bg);width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);appearance:none;print-color-adjust:exact;}.form-check-input[type=checkbox]{border-radius:.25em;}.form-check-input[type=radio]{border-radius:50%;}.form-check-input:active{filter:brightness(90%);}.form-check-input:focus{border-color:#c6b4e6;outline:0;box-shadow:0 0 0 .25rem rgba(140,104,205,.25);}.form-check-input:checked{background-color:#8c68cd;border-color:#8c68cd;}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-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]{--bs-form-check-bg-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:#8c68cd;border-color:#8c68cd;--bs-form-check-bg-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:.5;}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5;}.form-switch{padding-left:2.5em;}.form-switch .form-check-input{--bs-form-switch-bg: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");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out;}@media(prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none;}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23c6b4e6'/%3e%3c/svg%3e");}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: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:.65;}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none;}.form-range:focus{outline:0;}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(140,104,205,.25);}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(140,104,205,.25);}.form-range::-moz-focus-outer{border:0;}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#8c68cd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;}@media(prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none;}}.form-range::-webkit-slider-thumb:active{background-color:#ddd2f0;}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem;}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#8c68cd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;}@media(prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none;}}.form-range::-moz-range-thumb:active{background-color:#ddd2f0;}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem;}.form-range:disabled{pointer-events:none;}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color);}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color);}.form-floating{position:relative;}.form-floating::before:not(.form-control:disabled){position:absolute;top:var(--bs-border-width);left:var(--bs-border-width);width:calc(100% - (calc(calc(.375em + .1875rem) + calc(.75em + .375rem))));height:1.875em;content:"";background-color:var(--bs-form-control-bg);border-radius:.375rem;}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width)*2));line-height:1.25;}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .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 .75rem;}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent;}.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:.625rem;}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem;}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem;}.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:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem);}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem);}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0;}.form-floating>.form-control:disabled~label{color:#6c757d;}.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:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:.375rem;}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem;}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.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:calc(var(--bs-border-width)*-1);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:.25rem;font-size:.875em;color:var(--bs-success-text);}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius);}.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:var(--bs-success);padding-right:calc(1.5em + .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(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem);}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-success);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25);}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-success);}.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"]{--bs-form-select-bg-icon: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");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-success);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25);}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + .75rem));}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-success);}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-success-text);}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25);}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-success-text);}.form-check-inline .form-check-input~.valid-feedback{margin-left:.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:.25rem;font-size:.875em;color:var(--bs-danger-text);}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius);}.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:var(--bs-danger);padding-right:calc(1.5em + .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(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem);}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-danger);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25);}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-danger);}.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"]{--bs-form-select-bg-icon: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");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-danger);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25);}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + .75rem));}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-danger);}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-danger-text);}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25);}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-danger-text);}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.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:.75rem;--bs-btn-padding-y:.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:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:.375rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:.65;--bs-btn-focus-box-shadow: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;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 .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .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:#000;--bs-btn-bg:#8c68cd;--bs-btn-border-color:#8c68cd;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#9d7fd5;--bs-btn-hover-border-color:#9877d2;--bs-btn-focus-shadow-rgb:119,88,174;--bs-btn-active-color:#000;--bs-btn-active-bg:#a386d7;--bs-btn-active-border-color:#9877d2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#8c68cd;--bs-btn-disabled-border-color:#8c68cd;}.btn-secondary{--bs-btn-color:#000;--bs-btn-bg:#3c8cd6;--bs-btn-border-color:#3c8cd6;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#599ddc;--bs-btn-hover-border-color:#5098da;--bs-btn-focus-shadow-rgb:51,119,182;--bs-btn-active-color:#000;--bs-btn-active-bg:#63a3de;--bs-btn-active-border-color:#5098da;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#3c8cd6;--bs-btn-disabled-border-color:#3c8cd6;}.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,.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,.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,.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,.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,.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,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529;}.btn-accent{--bs-btn-color:#000;--bs-btn-bg:#009696;--bs-btn-border-color:#009696;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#26a6a6;--bs-btn-hover-border-color:#1aa1a1;--bs-btn-focus-shadow-rgb:0,128,128;--bs-btn-active-color:#000;--bs-btn-active-bg:#33abab;--bs-btn-active-border-color:#1aa1a1;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#009696;--bs-btn-disabled-border-color:#009696;}.btn-mute{--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,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d;}.btn-outline-primary{--bs-btn-color:#8c68cd;--bs-btn-border-color:#8c68cd;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#8c68cd;--bs-btn-hover-border-color:#8c68cd;--bs-btn-focus-shadow-rgb:140,104,205;--bs-btn-active-color:#000;--bs-btn-active-bg:#8c68cd;--bs-btn-active-border-color:#8c68cd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#8c68cd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#8c68cd;--bs-gradient:none;}.btn-outline-secondary{--bs-btn-color:#3c8cd6;--bs-btn-border-color:#3c8cd6;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#3c8cd6;--bs-btn-hover-border-color:#3c8cd6;--bs-btn-focus-shadow-rgb:60,140,214;--bs-btn-active-color:#000;--bs-btn-active-bg:#3c8cd6;--bs-btn-active-border-color:#3c8cd6;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#3c8cd6;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#3c8cd6;--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,.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,.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,.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,.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,.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,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none;}.btn-outline-accent{--bs-btn-color:#009696;--bs-btn-border-color:#009696;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#009696;--bs-btn-hover-border-color:#009696;--bs-btn-focus-shadow-rgb:0,150,150;--bs-btn-active-color:#000;--bs-btn-active-bg:#009696;--bs-btn-active-border-color:#009696;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#009696;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#009696;--bs-gradient:none;}.btn-outline-mute{--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,.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--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:119,88,174;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:.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:.5rem;}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y:.25rem;--bs-btn-padding-x:.5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius:.25rem;}.fade{transition:opacity .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 .35s ease;}@media(prefers-reduced-motion:reduce){.collapsing{transition:none;}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .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:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.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:.5rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:.375rem;--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(.375rem - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.5rem;--bs-dropdown-box-shadow:0 .5rem 1rem rgba(var(--bs-body-color-rgb),.15);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#8c68cd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:.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:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.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:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.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:.255em;vertical-align:.255em;content:"";}.dropstart .dropdown-toggle::after{display:none;}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.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;border-radius:var(--bs-dropdown-item-border-radius,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:.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,.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#8c68cd;--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:.375rem;}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width)*-1);}.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:.5625rem;padding-left:.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:.375rem;padding-left:.375rem;}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.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:calc(var(--bs-border-width)*-1);}.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:.5rem;--bs-nav-link-font-weight:;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);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:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .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:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);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:.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#8c68cd;}.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:.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb),.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb),.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:.5rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.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%2833, 37, 41, 0.75%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(var(--bs-emphasis-color-rgb),.15);--bs-navbar-toggler-border-radius:.375rem;--bs-navbar-toggler-focus-width:.25rem;--bs-navbar-toggler-transition:box-shadow .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:.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:.5rem;padding-bottom:.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,.55);--bs-navbar-hover-color:rgba(255,255,255,.75);--bs-navbar-disabled-color:rgba(255,255,255,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255,255,255,.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");}[data-bs-theme=dark] .navbar{--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:.5rem;--bs-card-title-color:;--bs-card-subtitle-color:;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow:;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb),.03);--bs-card-cap-color:;--bs-card-height:;--bs-card-color:;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.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);color:var(--bs-card-title-color);}.card-subtitle{margin-top:calc(-.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color);}.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(-.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-.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(-.5*var(--bs-card-cap-padding-x));margin-left:calc(-.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:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--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 .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='%238c68cd'%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:#c6b4e6;--bs-accordion-btn-focus-box-shadow:0 0 0 .25rem rgba(140,104,205,.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-dark);--bs-accordion-active-bg:var(--bs-primary-bg-subtle);}.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;}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238c68cd'%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-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238c68cd'%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");}.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:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);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,"/");}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color);}.pagination{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 .25rem rgba(140,104,205,.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#8c68cd;--bs-pagination-active-border-color:#8c68cd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);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 .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .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:calc(var(--bs-border-width)*-1);}.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:.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:.5rem;}.pagination-sm{--bs-pagination-padding-x:.5rem;--bs-pagination-padding-y:.25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius:.25rem;}.badge{--bs-badge-padding-x:.65em;--bs-badge-padding-y:.35em;--bs-badge-font-size:.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:.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:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:.375rem;--bs-alert-link-color:inherit;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;color:var(--bs-alert-link-color);}.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:var(--bs-primary-text);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text);}.alert-secondary{--bs-alert-color:var(--bs-secondary-text);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text);}.alert-success{--bs-alert-color:var(--bs-success-text);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text);}.alert-info{--bs-alert-color:var(--bs-info-text);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text);}.alert-warning{--bs-alert-color:var(--bs-warning-text);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text);}.alert-danger{--bs-alert-color:var(--bs-danger-text);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text);}.alert-light{--bs-alert-color:var(--bs-light-text);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text);}.alert-dark{--bs-alert-color:var(--bs-dark-text);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text);}.alert-accent{--bs-alert-color:var(--bs-accent-text);--bs-alert-bg:var(--bs-accent-bg-subtle);--bs-alert-border-color:var(--bs-accent-border-subtle);--bs-alert-link-color:var(--bs-accent-text);}.alert-mute{--bs-alert-color:var(--bs-mute-text);--bs-alert-bg:var(--bs-mute-bg-subtle);--bs-alert-border-color:var(--bs-mute-border-subtle);--bs-alert-link-color:var(--bs-mute-text);}@keyframes progress-bar-stripes{0%{background-position-x:1rem;}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#8c68cd;--bs-progress-bar-transition:width .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,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height);}.progress-stacked>.progress{overflow:visible;}.progress-stacked>.progress>.progress-bar{width:100%;}.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:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#8c68cd;--bs-list-group-active-border-color:#8c68cd;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{--bs-list-group-color:var(--bs-primary-text);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);}.list-group-item-primary.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-primary-text);--bs-list-group-active-border-color:var(--bs-primary-text);}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);}.list-group-item-secondary.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-secondary-text);--bs-list-group-active-border-color:var(--bs-secondary-text);}.list-group-item-success{--bs-list-group-color:var(--bs-success-text);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);}.list-group-item-success.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-success-text);--bs-list-group-active-border-color:var(--bs-success-text);}.list-group-item-info{--bs-list-group-color:var(--bs-info-text);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);}.list-group-item-info.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-info-text);--bs-list-group-active-border-color:var(--bs-info-text);}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);}.list-group-item-warning.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-warning-text);--bs-list-group-active-border-color:var(--bs-warning-text);}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);}.list-group-item-danger.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-danger-text);--bs-list-group-active-border-color:var(--bs-danger-text);}.list-group-item-light{--bs-list-group-color:var(--bs-light-text);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);}.list-group-item-light.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-text);--bs-list-group-active-border-color:var(--bs-light-text);}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);}.list-group-item-dark.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-dark-text);--bs-list-group-active-border-color:var(--bs-dark-text);}.list-group-item-accent{--bs-list-group-color:var(--bs-accent-text);--bs-list-group-bg:var(--bs-accent-bg-subtle);--bs-list-group-border-color:var(--bs-accent-border-subtle);}.list-group-item-accent.list-group-item-action:hover,.list-group-item-accent.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-accent-border-subtle);}.list-group-item-accent.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-accent-text);--bs-list-group-active-border-color:var(--bs-accent-text);}.list-group-item-mute{--bs-list-group-color:var(--bs-mute-text);--bs-list-group-bg:var(--bs-mute-bg-subtle);--bs-list-group-border-color:var(--bs-mute-border-subtle);}.list-group-item-mute.list-group-item-action:hover,.list-group-item-mute.list-group-item-action:focus{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-mute-border-subtle);}.list-group-item-mute.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-mute-text);--bs-list-group-active-border-color:var(--bs-mute-text);}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg: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");--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-shadow:0 0 0 .25rem rgba(140,104,205,.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity);}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity);}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity);}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity);}.btn-close-white{filter:var(--bs-btn-close-white-filter);}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter);}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-color:;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);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: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(-.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:.5rem;--bs-modal-color:;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:0 .125rem .25rem rgba(var(--bs-body-color-rgb),.075);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--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:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:.5rem;--bs-modal-footer-bg:;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);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 .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:.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)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-.5*var(--bs-modal-header-padding-y)) calc(-.5*var(--bs-modal-header-padding-x)) calc(-.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)*.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)*.5);}@media(min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 .5rem 1rem rgba(var(--bs-body-color-rgb),.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:.5rem;--bs-tooltip-padding-y:.25rem;--bs-tooltip-margin:;--bs-tooltip-font-size:.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:.9;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:"Inconsolata",monospace;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)*.5) 0;border-top-color:var(--bs-tooltip-bg);}.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)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg);}.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)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg);}.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)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg);}.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:.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:0 .5rem 1rem rgba(var(--bs-body-color-rgb),.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.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:"Inconsolata",monospace;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)*.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);}.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)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.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);}.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)*.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(-.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg);}.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)*.5) 0 calc(var(--bs-popover-arrow-width)*.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);}.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%;backface-visibility:hidden;transition:transform .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 .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:.5;transition:opacity .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:.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%;}.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:.5;transition:opacity .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;}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon{filter:invert(1) grayscale(100);}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target]{background-color:#000;}[data-bs-theme=dark] .carousel .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);}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.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:.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:-.125em;--bs-spinner-animation-speed:.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:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 .125rem .25rem rgba(var(--bs-body-color-rgb),.075);--bs-offcanvas-transition:transform .3s ease-in-out;--bs-offcanvas-title-line-height:1.5;}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}@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:.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)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-.5*var(--bs-offcanvas-padding-y));margin-right:calc(-.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5*var(--bs-offcanvas-padding-y));}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height);}.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:.5;}.placeholder.btn::before{display:inline-block;content:"";}.placeholder-xs{min-height:.6em;}.placeholder-sm{min-height:.8em;}.placeholder-lg{min-height:1.2em;}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite;}@keyframes placeholder-glow{50%{opacity:.2;}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite;}@keyframes placeholder-wave{100%{mask-position:-200% 0%;}}.clearfix::after{display:block;clear:both;content:"";}.text-bg-primary{color:#000!important;background-color:RGBA(140,104,205,var(--bs-bg-opacity,1))!important;}.text-bg-secondary{color:#000!important;background-color:RGBA(60,140,214,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;}.text-bg-accent{color:#000!important;background-color:RGBA(0,150,150,var(--bs-bg-opacity,1))!important;}.text-bg-mute{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important;}.link-primary{color:#8c68cd!important;}.link-primary:hover,.link-primary:focus{color:#a386d7!important;}.link-secondary{color:#3c8cd6!important;}.link-secondary:hover,.link-secondary:focus{color:#63a3de!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;}.link-accent{color:#009696!important;}.link-accent:hover,.link-accent:focus{color:#33abab!important;}.link-mute{color:#6c757d!important;}.link-mute:hover,.link-mute:focus{color:#565e64!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:sticky;top:0;z-index:1020;}.sticky-bottom{position:sticky;bottom:0;z-index:1020;}@media(min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020;}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020;}}@media(min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020;}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020;}}@media(min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020;}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020;}}@media(min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020;}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020;}}@media(min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020;}.sticky-xxl-bottom{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:.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;}.object-fit-contain{object-fit:contain!important;}.object-fit-cover{object-fit:cover!important;}.object-fit-fill{object-fit:fill!important;}.object-fit-scale{object-fit:scale-down!important;}.object-fit-none{object-fit:none!important;}.opacity-0{opacity:0!important;}.opacity-25{opacity:.25!important;}.opacity-50{opacity:.5!important;}.opacity-75{opacity:.75!important;}.opacity-100{opacity:1!important;}.overflow-auto{overflow:auto!important;}.overflow-hidden{overflow:hidden!important;}.overflow-visible{overflow:visible!important;}.overflow-scroll{overflow:scroll!important;}.overflow-x-auto{overflow-x:auto!important;}.overflow-x-hidden{overflow-x:hidden!important;}.overflow-x-visible{overflow-x:visible!important;}.overflow-x-scroll{overflow-x:scroll!important;}.overflow-y-auto{overflow-y:auto!important;}.overflow-y-hidden{overflow-y:hidden!important;}.overflow-y-visible{overflow-y:visible!important;}.overflow-y-scroll{overflow-y: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 .5rem 1rem rgba(var(--bs-body-color-rgb),.15)!important;}.shadow-sm{box-shadow:0 .125rem .25rem rgba(var(--bs-body-color-rgb),.075)!important;}.shadow-lg{box-shadow:0 1rem 3rem rgba(var(--bs-body-color-rgb),.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: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-primary-subtle{border-color:var(--bs-primary-border-subtle)!important;}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important;}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important;}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important;}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important;}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important;}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important;}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!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:.1;}.border-opacity-25{--bs-border-opacity:.25;}.border-opacity-50{--bs-border-opacity:.5;}.border-opacity-75{--bs-border-opacity:.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:.25rem!important;}.m-2{margin:.5rem!important;}.m-3{margin:1rem!important;}.m-4{margin:1.5rem!important;}.m-5{margin:3rem!important;}.m-auto{margin:auto!important;}.mx-0{margin-right:0!important;margin-left:0!important;}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-auto{margin-right:auto!important;margin-left:auto!important;}.my-0{margin-top:0!important;margin-bottom:0!important;}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-0{margin-top:0!important;}.mt-1{margin-top:.25rem!important;}.mt-2{margin-top:.5rem!important;}.mt-3{margin-top:1rem!important;}.mt-4{margin-top:1.5rem!important;}.mt-5{margin-top:3rem!important;}.mt-auto{margin-top:auto!important;}.me-0{margin-right:0!important;}.me-1{margin-right:.25rem!important;}.me-2{margin-right:.5rem!important;}.me-3{margin-right:1rem!important;}.me-4{margin-right:1.5rem!important;}.me-5{margin-right:3rem!important;}.me-auto{margin-right:auto!important;}.mb-0{margin-bottom:0!important;}.mb-1{margin-bottom:.25rem!important;}.mb-2{margin-bottom:.5rem!important;}.mb-3{margin-bottom:1rem!important;}.mb-4{margin-bottom:1.5rem!important;}.mb-5{margin-bottom:3rem!important;}.mb-auto{margin-bottom:auto!important;}.ms-0{margin-left:0!important;}.ms-1{margin-left:.25rem!important;}.ms-2{margin-left:.5rem!important;}.ms-3{margin-left:1rem!important;}.ms-4{margin-left:1.5rem!important;}.ms-5{margin-left:3rem!important;}.ms-auto{margin-left:auto!important;}.p-0{padding:0!important;}.p-1{padding:.25rem!important;}.p-2{padding:.5rem!important;}.p-3{padding:1rem!important;}.p-4{padding:1.5rem!important;}.p-5{padding:3rem!important;}.px-0{padding-right:0!important;padding-left:0!important;}.px-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-3{padding-right:1rem!important;padding-left:1rem!important;}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-5{padding-right:3rem!important;padding-left:3rem!important;}.py-0{padding-top:0!important;padding-bottom:0!important;}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-0{padding-top:0!important;}.pt-1{padding-top:.25rem!important;}.pt-2{padding-top:.5rem!important;}.pt-3{padding-top:1rem!important;}.pt-4{padding-top:1.5rem!important;}.pt-5{padding-top:3rem!important;}.pe-0{padding-right:0!important;}.pe-1{padding-right:.25rem!important;}.pe-2{padding-right:.5rem!important;}.pe-3{padding-right:1rem!important;}.pe-4{padding-right:1.5rem!important;}.pe-5{padding-right:3rem!important;}.pb-0{padding-bottom:0!important;}.pb-1{padding-bottom:.25rem!important;}.pb-2{padding-bottom:.5rem!important;}.pb-3{padding-bottom:1rem!important;}.pb-4{padding-bottom:1.5rem!important;}.pb-5{padding-bottom:3rem!important;}.ps-0{padding-left:0!important;}.ps-1{padding-left:.25rem!important;}.ps-2{padding-left:.5rem!important;}.ps-3{padding-left:1rem!important;}.ps-4{padding-left:1.5rem!important;}.ps-5{padding-left:3rem!important;}.gap-0{gap:0!important;}.gap-1{gap:.25rem!important;}.gap-2{gap:.5rem!important;}.gap-3{gap:1rem!important;}.gap-4{gap:1.5rem!important;}.gap-5{gap:3rem!important;}.row-gap-0{row-gap:0!important;}.row-gap-1{row-gap:.25rem!important;}.row-gap-2{row-gap:.5rem!important;}.row-gap-3{row-gap:1rem!important;}.row-gap-4{row-gap:1.5rem!important;}.row-gap-5{row-gap:3rem!important;}.column-gap-0{column-gap:0!important;}.column-gap-1{column-gap:.25rem!important;}.column-gap-2{column-gap:.5rem!important;}.column-gap-3{column-gap:1rem!important;}.column-gap-4{column-gap:1.5rem!important;}.column-gap-5{column-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 + .9vw)!important;}.fs-3{font-size:calc(1.3rem + .6vw)!important;}.fs-4{font-size:calc(1.275rem + .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-lighter{font-weight:lighter!important;}.fw-light{font-weight:300!important;}.fw-normal{font-weight:400!important;}.fw-medium{font-weight:500!important;}.fw-semibold{font-weight:600!important;}.fw-bold{font-weight:700!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;}.text-break{word-wrap:break-word!important;word-break:break-word!important;}.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:var(--bs-secondary-color)!important;}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important;}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important;}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important;}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important;}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important;}.text-reset{--bs-text-opacity:1;color:inherit!important;}.text-opacity-25{--bs-text-opacity:.25;}.text-opacity-50{--bs-text-opacity:.5;}.text-opacity-75{--bs-text-opacity:.75;}.text-opacity-100{--bs-text-opacity:1;}.text-primary-emphasis{color:var(--bs-primary-text)!important;}.text-secondary-emphasis{color:var(--bs-secondary-text)!important;}.text-success-emphasis{color:var(--bs-success-text)!important;}.text-info-emphasis{color:var(--bs-info-text)!important;}.text-warning-emphasis{color:var(--bs-warning-text)!important;}.text-danger-emphasis{color:var(--bs-danger-text)!important;}.text-light-emphasis{color:var(--bs-light-text)!important;}.text-dark-emphasis{color:var(--bs-dark-text)!important;}.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-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important;}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important;}.bg-body-emphasis{--bs-bg-opacity:1;background-color:rgba(var(--bs-emphasis-bg-rgb),var(--bs-bg-opacity))!important;}.bg-opacity-10{--bs-bg-opacity:.1;}.bg-opacity-25{--bs-bg-opacity:.25;}.bg-opacity-50{--bs-bg-opacity:.5;}.bg-opacity-75{--bs-bg-opacity:.75;}.bg-opacity-100{--bs-bg-opacity:1;}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important;}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important;}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important;}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important;}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important;}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important;}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important;}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important;}.bg-gradient{background-image:var(--bs-gradient)!important;}.user-select-all{user-select:all!important;}.user-select-auto{user-select:auto!important;}.user-select-none{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-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important;}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important;}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important;}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important;}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important;}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-2xl)!important;border-top-right-radius:var(--bs-border-radius-2xl)!important;}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important;}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important;}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important;}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important;}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important;}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important;}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important;}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important;}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-2xl)!important;border-bottom-right-radius:var(--bs-border-radius-2xl)!important;}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important;}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important;}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important;}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important;}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important;}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important;}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important;}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-2xl)!important;border-bottom-left-radius:var(--bs-border-radius-2xl)!important;}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important;}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important;}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important;}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important;}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important;}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important;}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important;}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important;}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-2xl)!important;border-top-left-radius:var(--bs-border-radius-2xl)!important;}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important;}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important;}.visible{visibility:visible!important;}.invisible{visibility:hidden!important;}.z-n1{z-index:-1!important;}.z-0{z-index:0!important;}.z-1{z-index:1!important;}.z-2{z-index:2!important;}.z-3{z-index:3!important;}@media(min-width:576px){.float-sm-start{float:left!important;}.float-sm-end{float:right!important;}.float-sm-none{float:none!important;}.object-fit-sm-contain{object-fit:contain!important;}.object-fit-sm-cover{object-fit:cover!important;}.object-fit-sm-fill{object-fit:fill!important;}.object-fit-sm-scale{object-fit:scale-down!important;}.object-fit-sm-none{object-fit: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:.25rem!important;}.m-sm-2{margin:.5rem!important;}.m-sm-3{margin:1rem!important;}.m-sm-4{margin:1.5rem!important;}.m-sm-5{margin:3rem!important;}.m-sm-auto{margin:auto!important;}.mx-sm-0{margin-right:0!important;margin-left:0!important;}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important;}.my-sm-0{margin-top:0!important;margin-bottom:0!important;}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-sm-0{margin-top:0!important;}.mt-sm-1{margin-top:.25rem!important;}.mt-sm-2{margin-top:.5rem!important;}.mt-sm-3{margin-top:1rem!important;}.mt-sm-4{margin-top:1.5rem!important;}.mt-sm-5{margin-top:3rem!important;}.mt-sm-auto{margin-top:auto!important;}.me-sm-0{margin-right:0!important;}.me-sm-1{margin-right:.25rem!important;}.me-sm-2{margin-right:.5rem!important;}.me-sm-3{margin-right:1rem!important;}.me-sm-4{margin-right:1.5rem!important;}.me-sm-5{margin-right:3rem!important;}.me-sm-auto{margin-right:auto!important;}.mb-sm-0{margin-bottom:0!important;}.mb-sm-1{margin-bottom:.25rem!important;}.mb-sm-2{margin-bottom:.5rem!important;}.mb-sm-3{margin-bottom:1rem!important;}.mb-sm-4{margin-bottom:1.5rem!important;}.mb-sm-5{margin-bottom:3rem!important;}.mb-sm-auto{margin-bottom:auto!important;}.ms-sm-0{margin-left:0!important;}.ms-sm-1{margin-left:.25rem!important;}.ms-sm-2{margin-left:.5rem!important;}.ms-sm-3{margin-left:1rem!important;}.ms-sm-4{margin-left:1.5rem!important;}.ms-sm-5{margin-left:3rem!important;}.ms-sm-auto{margin-left:auto!important;}.p-sm-0{padding:0!important;}.p-sm-1{padding:.25rem!important;}.p-sm-2{padding:.5rem!important;}.p-sm-3{padding:1rem!important;}.p-sm-4{padding:1.5rem!important;}.p-sm-5{padding:3rem!important;}.px-sm-0{padding-right:0!important;padding-left:0!important;}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important;}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important;}.py-sm-0{padding-top:0!important;padding-bottom:0!important;}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-sm-0{padding-top:0!important;}.pt-sm-1{padding-top:.25rem!important;}.pt-sm-2{padding-top:.5rem!important;}.pt-sm-3{padding-top:1rem!important;}.pt-sm-4{padding-top:1.5rem!important;}.pt-sm-5{padding-top:3rem!important;}.pe-sm-0{padding-right:0!important;}.pe-sm-1{padding-right:.25rem!important;}.pe-sm-2{padding-right:.5rem!important;}.pe-sm-3{padding-right:1rem!important;}.pe-sm-4{padding-right:1.5rem!important;}.pe-sm-5{padding-right:3rem!important;}.pb-sm-0{padding-bottom:0!important;}.pb-sm-1{padding-bottom:.25rem!important;}.pb-sm-2{padding-bottom:.5rem!important;}.pb-sm-3{padding-bottom:1rem!important;}.pb-sm-4{padding-bottom:1.5rem!important;}.pb-sm-5{padding-bottom:3rem!important;}.ps-sm-0{padding-left:0!important;}.ps-sm-1{padding-left:.25rem!important;}.ps-sm-2{padding-left:.5rem!important;}.ps-sm-3{padding-left:1rem!important;}.ps-sm-4{padding-left:1.5rem!important;}.ps-sm-5{padding-left:3rem!important;}.gap-sm-0{gap:0!important;}.gap-sm-1{gap:.25rem!important;}.gap-sm-2{gap:.5rem!important;}.gap-sm-3{gap:1rem!important;}.gap-sm-4{gap:1.5rem!important;}.gap-sm-5{gap:3rem!important;}.row-gap-sm-0{row-gap:0!important;}.row-gap-sm-1{row-gap:.25rem!important;}.row-gap-sm-2{row-gap:.5rem!important;}.row-gap-sm-3{row-gap:1rem!important;}.row-gap-sm-4{row-gap:1.5rem!important;}.row-gap-sm-5{row-gap:3rem!important;}.column-gap-sm-0{column-gap:0!important;}.column-gap-sm-1{column-gap:.25rem!important;}.column-gap-sm-2{column-gap:.5rem!important;}.column-gap-sm-3{column-gap:1rem!important;}.column-gap-sm-4{column-gap:1.5rem!important;}.column-gap-sm-5{column-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;}.object-fit-md-contain{object-fit:contain!important;}.object-fit-md-cover{object-fit:cover!important;}.object-fit-md-fill{object-fit:fill!important;}.object-fit-md-scale{object-fit:scale-down!important;}.object-fit-md-none{object-fit: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:.25rem!important;}.m-md-2{margin:.5rem!important;}.m-md-3{margin:1rem!important;}.m-md-4{margin:1.5rem!important;}.m-md-5{margin:3rem!important;}.m-md-auto{margin:auto!important;}.mx-md-0{margin-right:0!important;margin-left:0!important;}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-md-auto{margin-right:auto!important;margin-left:auto!important;}.my-md-0{margin-top:0!important;margin-bottom:0!important;}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-md-0{margin-top:0!important;}.mt-md-1{margin-top:.25rem!important;}.mt-md-2{margin-top:.5rem!important;}.mt-md-3{margin-top:1rem!important;}.mt-md-4{margin-top:1.5rem!important;}.mt-md-5{margin-top:3rem!important;}.mt-md-auto{margin-top:auto!important;}.me-md-0{margin-right:0!important;}.me-md-1{margin-right:.25rem!important;}.me-md-2{margin-right:.5rem!important;}.me-md-3{margin-right:1rem!important;}.me-md-4{margin-right:1.5rem!important;}.me-md-5{margin-right:3rem!important;}.me-md-auto{margin-right:auto!important;}.mb-md-0{margin-bottom:0!important;}.mb-md-1{margin-bottom:.25rem!important;}.mb-md-2{margin-bottom:.5rem!important;}.mb-md-3{margin-bottom:1rem!important;}.mb-md-4{margin-bottom:1.5rem!important;}.mb-md-5{margin-bottom:3rem!important;}.mb-md-auto{margin-bottom:auto!important;}.ms-md-0{margin-left:0!important;}.ms-md-1{margin-left:.25rem!important;}.ms-md-2{margin-left:.5rem!important;}.ms-md-3{margin-left:1rem!important;}.ms-md-4{margin-left:1.5rem!important;}.ms-md-5{margin-left:3rem!important;}.ms-md-auto{margin-left:auto!important;}.p-md-0{padding:0!important;}.p-md-1{padding:.25rem!important;}.p-md-2{padding:.5rem!important;}.p-md-3{padding:1rem!important;}.p-md-4{padding:1.5rem!important;}.p-md-5{padding:3rem!important;}.px-md-0{padding-right:0!important;padding-left:0!important;}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-md-3{padding-right:1rem!important;padding-left:1rem!important;}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-md-5{padding-right:3rem!important;padding-left:3rem!important;}.py-md-0{padding-top:0!important;padding-bottom:0!important;}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-md-0{padding-top:0!important;}.pt-md-1{padding-top:.25rem!important;}.pt-md-2{padding-top:.5rem!important;}.pt-md-3{padding-top:1rem!important;}.pt-md-4{padding-top:1.5rem!important;}.pt-md-5{padding-top:3rem!important;}.pe-md-0{padding-right:0!important;}.pe-md-1{padding-right:.25rem!important;}.pe-md-2{padding-right:.5rem!important;}.pe-md-3{padding-right:1rem!important;}.pe-md-4{padding-right:1.5rem!important;}.pe-md-5{padding-right:3rem!important;}.pb-md-0{padding-bottom:0!important;}.pb-md-1{padding-bottom:.25rem!important;}.pb-md-2{padding-bottom:.5rem!important;}.pb-md-3{padding-bottom:1rem!important;}.pb-md-4{padding-bottom:1.5rem!important;}.pb-md-5{padding-bottom:3rem!important;}.ps-md-0{padding-left:0!important;}.ps-md-1{padding-left:.25rem!important;}.ps-md-2{padding-left:.5rem!important;}.ps-md-3{padding-left:1rem!important;}.ps-md-4{padding-left:1.5rem!important;}.ps-md-5{padding-left:3rem!important;}.gap-md-0{gap:0!important;}.gap-md-1{gap:.25rem!important;}.gap-md-2{gap:.5rem!important;}.gap-md-3{gap:1rem!important;}.gap-md-4{gap:1.5rem!important;}.gap-md-5{gap:3rem!important;}.row-gap-md-0{row-gap:0!important;}.row-gap-md-1{row-gap:.25rem!important;}.row-gap-md-2{row-gap:.5rem!important;}.row-gap-md-3{row-gap:1rem!important;}.row-gap-md-4{row-gap:1.5rem!important;}.row-gap-md-5{row-gap:3rem!important;}.column-gap-md-0{column-gap:0!important;}.column-gap-md-1{column-gap:.25rem!important;}.column-gap-md-2{column-gap:.5rem!important;}.column-gap-md-3{column-gap:1rem!important;}.column-gap-md-4{column-gap:1.5rem!important;}.column-gap-md-5{column-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;}.object-fit-lg-contain{object-fit:contain!important;}.object-fit-lg-cover{object-fit:cover!important;}.object-fit-lg-fill{object-fit:fill!important;}.object-fit-lg-scale{object-fit:scale-down!important;}.object-fit-lg-none{object-fit: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:.25rem!important;}.m-lg-2{margin:.5rem!important;}.m-lg-3{margin:1rem!important;}.m-lg-4{margin:1.5rem!important;}.m-lg-5{margin:3rem!important;}.m-lg-auto{margin:auto!important;}.mx-lg-0{margin-right:0!important;margin-left:0!important;}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important;}.my-lg-0{margin-top:0!important;margin-bottom:0!important;}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-lg-0{margin-top:0!important;}.mt-lg-1{margin-top:.25rem!important;}.mt-lg-2{margin-top:.5rem!important;}.mt-lg-3{margin-top:1rem!important;}.mt-lg-4{margin-top:1.5rem!important;}.mt-lg-5{margin-top:3rem!important;}.mt-lg-auto{margin-top:auto!important;}.me-lg-0{margin-right:0!important;}.me-lg-1{margin-right:.25rem!important;}.me-lg-2{margin-right:.5rem!important;}.me-lg-3{margin-right:1rem!important;}.me-lg-4{margin-right:1.5rem!important;}.me-lg-5{margin-right:3rem!important;}.me-lg-auto{margin-right:auto!important;}.mb-lg-0{margin-bottom:0!important;}.mb-lg-1{margin-bottom:.25rem!important;}.mb-lg-2{margin-bottom:.5rem!important;}.mb-lg-3{margin-bottom:1rem!important;}.mb-lg-4{margin-bottom:1.5rem!important;}.mb-lg-5{margin-bottom:3rem!important;}.mb-lg-auto{margin-bottom:auto!important;}.ms-lg-0{margin-left:0!important;}.ms-lg-1{margin-left:.25rem!important;}.ms-lg-2{margin-left:.5rem!important;}.ms-lg-3{margin-left:1rem!important;}.ms-lg-4{margin-left:1.5rem!important;}.ms-lg-5{margin-left:3rem!important;}.ms-lg-auto{margin-left:auto!important;}.p-lg-0{padding:0!important;}.p-lg-1{padding:.25rem!important;}.p-lg-2{padding:.5rem!important;}.p-lg-3{padding:1rem!important;}.p-lg-4{padding:1.5rem!important;}.p-lg-5{padding:3rem!important;}.px-lg-0{padding-right:0!important;padding-left:0!important;}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important;}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important;}.py-lg-0{padding-top:0!important;padding-bottom:0!important;}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-lg-0{padding-top:0!important;}.pt-lg-1{padding-top:.25rem!important;}.pt-lg-2{padding-top:.5rem!important;}.pt-lg-3{padding-top:1rem!important;}.pt-lg-4{padding-top:1.5rem!important;}.pt-lg-5{padding-top:3rem!important;}.pe-lg-0{padding-right:0!important;}.pe-lg-1{padding-right:.25rem!important;}.pe-lg-2{padding-right:.5rem!important;}.pe-lg-3{padding-right:1rem!important;}.pe-lg-4{padding-right:1.5rem!important;}.pe-lg-5{padding-right:3rem!important;}.pb-lg-0{padding-bottom:0!important;}.pb-lg-1{padding-bottom:.25rem!important;}.pb-lg-2{padding-bottom:.5rem!important;}.pb-lg-3{padding-bottom:1rem!important;}.pb-lg-4{padding-bottom:1.5rem!important;}.pb-lg-5{padding-bottom:3rem!important;}.ps-lg-0{padding-left:0!important;}.ps-lg-1{padding-left:.25rem!important;}.ps-lg-2{padding-left:.5rem!important;}.ps-lg-3{padding-left:1rem!important;}.ps-lg-4{padding-left:1.5rem!important;}.ps-lg-5{padding-left:3rem!important;}.gap-lg-0{gap:0!important;}.gap-lg-1{gap:.25rem!important;}.gap-lg-2{gap:.5rem!important;}.gap-lg-3{gap:1rem!important;}.gap-lg-4{gap:1.5rem!important;}.gap-lg-5{gap:3rem!important;}.row-gap-lg-0{row-gap:0!important;}.row-gap-lg-1{row-gap:.25rem!important;}.row-gap-lg-2{row-gap:.5rem!important;}.row-gap-lg-3{row-gap:1rem!important;}.row-gap-lg-4{row-gap:1.5rem!important;}.row-gap-lg-5{row-gap:3rem!important;}.column-gap-lg-0{column-gap:0!important;}.column-gap-lg-1{column-gap:.25rem!important;}.column-gap-lg-2{column-gap:.5rem!important;}.column-gap-lg-3{column-gap:1rem!important;}.column-gap-lg-4{column-gap:1.5rem!important;}.column-gap-lg-5{column-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;}.object-fit-xl-contain{object-fit:contain!important;}.object-fit-xl-cover{object-fit:cover!important;}.object-fit-xl-fill{object-fit:fill!important;}.object-fit-xl-scale{object-fit:scale-down!important;}.object-fit-xl-none{object-fit: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:.25rem!important;}.m-xl-2{margin:.5rem!important;}.m-xl-3{margin:1rem!important;}.m-xl-4{margin:1.5rem!important;}.m-xl-5{margin:3rem!important;}.m-xl-auto{margin:auto!important;}.mx-xl-0{margin-right:0!important;margin-left:0!important;}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important;}.my-xl-0{margin-top:0!important;margin-bottom:0!important;}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-xl-0{margin-top:0!important;}.mt-xl-1{margin-top:.25rem!important;}.mt-xl-2{margin-top:.5rem!important;}.mt-xl-3{margin-top:1rem!important;}.mt-xl-4{margin-top:1.5rem!important;}.mt-xl-5{margin-top:3rem!important;}.mt-xl-auto{margin-top:auto!important;}.me-xl-0{margin-right:0!important;}.me-xl-1{margin-right:.25rem!important;}.me-xl-2{margin-right:.5rem!important;}.me-xl-3{margin-right:1rem!important;}.me-xl-4{margin-right:1.5rem!important;}.me-xl-5{margin-right:3rem!important;}.me-xl-auto{margin-right:auto!important;}.mb-xl-0{margin-bottom:0!important;}.mb-xl-1{margin-bottom:.25rem!important;}.mb-xl-2{margin-bottom:.5rem!important;}.mb-xl-3{margin-bottom:1rem!important;}.mb-xl-4{margin-bottom:1.5rem!important;}.mb-xl-5{margin-bottom:3rem!important;}.mb-xl-auto{margin-bottom:auto!important;}.ms-xl-0{margin-left:0!important;}.ms-xl-1{margin-left:.25rem!important;}.ms-xl-2{margin-left:.5rem!important;}.ms-xl-3{margin-left:1rem!important;}.ms-xl-4{margin-left:1.5rem!important;}.ms-xl-5{margin-left:3rem!important;}.ms-xl-auto{margin-left:auto!important;}.p-xl-0{padding:0!important;}.p-xl-1{padding:.25rem!important;}.p-xl-2{padding:.5rem!important;}.p-xl-3{padding:1rem!important;}.p-xl-4{padding:1.5rem!important;}.p-xl-5{padding:3rem!important;}.px-xl-0{padding-right:0!important;padding-left:0!important;}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important;}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important;}.py-xl-0{padding-top:0!important;padding-bottom:0!important;}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-xl-0{padding-top:0!important;}.pt-xl-1{padding-top:.25rem!important;}.pt-xl-2{padding-top:.5rem!important;}.pt-xl-3{padding-top:1rem!important;}.pt-xl-4{padding-top:1.5rem!important;}.pt-xl-5{padding-top:3rem!important;}.pe-xl-0{padding-right:0!important;}.pe-xl-1{padding-right:.25rem!important;}.pe-xl-2{padding-right:.5rem!important;}.pe-xl-3{padding-right:1rem!important;}.pe-xl-4{padding-right:1.5rem!important;}.pe-xl-5{padding-right:3rem!important;}.pb-xl-0{padding-bottom:0!important;}.pb-xl-1{padding-bottom:.25rem!important;}.pb-xl-2{padding-bottom:.5rem!important;}.pb-xl-3{padding-bottom:1rem!important;}.pb-xl-4{padding-bottom:1.5rem!important;}.pb-xl-5{padding-bottom:3rem!important;}.ps-xl-0{padding-left:0!important;}.ps-xl-1{padding-left:.25rem!important;}.ps-xl-2{padding-left:.5rem!important;}.ps-xl-3{padding-left:1rem!important;}.ps-xl-4{padding-left:1.5rem!important;}.ps-xl-5{padding-left:3rem!important;}.gap-xl-0{gap:0!important;}.gap-xl-1{gap:.25rem!important;}.gap-xl-2{gap:.5rem!important;}.gap-xl-3{gap:1rem!important;}.gap-xl-4{gap:1.5rem!important;}.gap-xl-5{gap:3rem!important;}.row-gap-xl-0{row-gap:0!important;}.row-gap-xl-1{row-gap:.25rem!important;}.row-gap-xl-2{row-gap:.5rem!important;}.row-gap-xl-3{row-gap:1rem!important;}.row-gap-xl-4{row-gap:1.5rem!important;}.row-gap-xl-5{row-gap:3rem!important;}.column-gap-xl-0{column-gap:0!important;}.column-gap-xl-1{column-gap:.25rem!important;}.column-gap-xl-2{column-gap:.5rem!important;}.column-gap-xl-3{column-gap:1rem!important;}.column-gap-xl-4{column-gap:1.5rem!important;}.column-gap-xl-5{column-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;}.object-fit-xxl-contain{object-fit:contain!important;}.object-fit-xxl-cover{object-fit:cover!important;}.object-fit-xxl-fill{object-fit:fill!important;}.object-fit-xxl-scale{object-fit:scale-down!important;}.object-fit-xxl-none{object-fit: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:.25rem!important;}.m-xxl-2{margin:.5rem!important;}.m-xxl-3{margin:1rem!important;}.m-xxl-4{margin:1.5rem!important;}.m-xxl-5{margin:3rem!important;}.m-xxl-auto{margin:auto!important;}.mx-xxl-0{margin-right:0!important;margin-left:0!important;}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important;}.my-xxl-0{margin-top:0!important;margin-bottom:0!important;}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-xxl-0{margin-top:0!important;}.mt-xxl-1{margin-top:.25rem!important;}.mt-xxl-2{margin-top:.5rem!important;}.mt-xxl-3{margin-top:1rem!important;}.mt-xxl-4{margin-top:1.5rem!important;}.mt-xxl-5{margin-top:3rem!important;}.mt-xxl-auto{margin-top:auto!important;}.me-xxl-0{margin-right:0!important;}.me-xxl-1{margin-right:.25rem!important;}.me-xxl-2{margin-right:.5rem!important;}.me-xxl-3{margin-right:1rem!important;}.me-xxl-4{margin-right:1.5rem!important;}.me-xxl-5{margin-right:3rem!important;}.me-xxl-auto{margin-right:auto!important;}.mb-xxl-0{margin-bottom:0!important;}.mb-xxl-1{margin-bottom:.25rem!important;}.mb-xxl-2{margin-bottom:.5rem!important;}.mb-xxl-3{margin-bottom:1rem!important;}.mb-xxl-4{margin-bottom:1.5rem!important;}.mb-xxl-5{margin-bottom:3rem!important;}.mb-xxl-auto{margin-bottom:auto!important;}.ms-xxl-0{margin-left:0!important;}.ms-xxl-1{margin-left:.25rem!important;}.ms-xxl-2{margin-left:.5rem!important;}.ms-xxl-3{margin-left:1rem!important;}.ms-xxl-4{margin-left:1.5rem!important;}.ms-xxl-5{margin-left:3rem!important;}.ms-xxl-auto{margin-left:auto!important;}.p-xxl-0{padding:0!important;}.p-xxl-1{padding:.25rem!important;}.p-xxl-2{padding:.5rem!important;}.p-xxl-3{padding:1rem!important;}.p-xxl-4{padding:1.5rem!important;}.p-xxl-5{padding:3rem!important;}.px-xxl-0{padding-right:0!important;padding-left:0!important;}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important;}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important;}.py-xxl-0{padding-top:0!important;padding-bottom:0!important;}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-xxl-0{padding-top:0!important;}.pt-xxl-1{padding-top:.25rem!important;}.pt-xxl-2{padding-top:.5rem!important;}.pt-xxl-3{padding-top:1rem!important;}.pt-xxl-4{padding-top:1.5rem!important;}.pt-xxl-5{padding-top:3rem!important;}.pe-xxl-0{padding-right:0!important;}.pe-xxl-1{padding-right:.25rem!important;}.pe-xxl-2{padding-right:.5rem!important;}.pe-xxl-3{padding-right:1rem!important;}.pe-xxl-4{padding-right:1.5rem!important;}.pe-xxl-5{padding-right:3rem!important;}.pb-xxl-0{padding-bottom:0!important;}.pb-xxl-1{padding-bottom:.25rem!important;}.pb-xxl-2{padding-bottom:.5rem!important;}.pb-xxl-3{padding-bottom:1rem!important;}.pb-xxl-4{padding-bottom:1.5rem!important;}.pb-xxl-5{padding-bottom:3rem!important;}.ps-xxl-0{padding-left:0!important;}.ps-xxl-1{padding-left:.25rem!important;}.ps-xxl-2{padding-left:.5rem!important;}.ps-xxl-3{padding-left:1rem!important;}.ps-xxl-4{padding-left:1.5rem!important;}.ps-xxl-5{padding-left:3rem!important;}.gap-xxl-0{gap:0!important;}.gap-xxl-1{gap:.25rem!important;}.gap-xxl-2{gap:.5rem!important;}.gap-xxl-3{gap:1rem!important;}.gap-xxl-4{gap:1.5rem!important;}.gap-xxl-5{gap:3rem!important;}.row-gap-xxl-0{row-gap:0!important;}.row-gap-xxl-1{row-gap:.25rem!important;}.row-gap-xxl-2{row-gap:.5rem!important;}.row-gap-xxl-3{row-gap:1rem!important;}.row-gap-xxl-4{row-gap:1.5rem!important;}.row-gap-xxl-5{row-gap:3rem!important;}.column-gap-xxl-0{column-gap:0!important;}.column-gap-xxl-1{column-gap:.25rem!important;}.column-gap-xxl-2{column-gap:.5rem!important;}.column-gap-xxl-3{column-gap:1rem!important;}.column-gap-xxl-4{column-gap:1.5rem!important;}.column-gap-xxl-5{column-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;}}:root{--bs-gray-100-rgb:248,249,250;--bs-gray-200-rgb:233,236,239;--bs-gray-300-rgb:222,226,230;--bs-gray-400-rgb:206,212,218;--bs-gray-500-rgb:173,181,189;--bs-gray-600-rgb:108,117,125;--bs-gray-700-rgb:73,80,87;--bs-gray-800-rgb:52,58,64;--bs-gray-900-rgb:33,37,41;--scroll-size:8px;--scroll-radius:0px;--scroll-track:var(--bs-light);--scroll-thumb-color:var(--bs-primary);--bb-offcanvas-horizontal-width-lg:768px!important;}.btn-xsm,.btn-group-xsm>.btn{--bs-btn-padding-y:.2rem;--bs-btn-padding-x:.3rem;--bs-btn-font-size:.7rem;--bs-btn-border-radius:.25rem;}.loading-container{width:100%;height:100%;display:flex;align-content:center;justify-content:center;align-items:center;flex-direction:column;}.loading-container .svg-container{width:8rem;height:8rem;display:flex;align-content:center;justify-content:center;align-items:center;}.loading-container .loading-progress{position:absolute;display:block;width:8rem;height:8rem;}.loading-container .loading-progress circle{fill:none;stroke:#6f42c1;stroke-width:.2rem;transform-origin:50% 50%;transform:rotate(-90deg);}.loading-container .loading-progress circle:last-child{stroke:#8c68cd;stroke-dasharray:calc(3.141*var(--blazor-load-percentage,0%)*.8),500%;transition:stroke-dasharray .05s ease-in-out;}.loading-container .loading-logo{position:absolute;fill:#8c68cd;height:70px;}.loading-container .loading-progress-text{font-weight:bold;}.loading-container .loading-progress-text:after{content:var(--blazor-load-percentage-text,"Loading");}::-webkit-scrollbar{width:4px;height:4px;}::-webkit-scrollbar-button{width:0;height:0;}::-webkit-scrollbar-thumb{background:#7d59bd;border:0 none #fff;border-radius:.375rem;}::-webkit-scrollbar-thumb:hover{background:#8c68cd;}::-webkit-scrollbar-thumb:active{background:#8c68cd;}::-webkit-scrollbar-track{background:#212529;border:0 none #fff;border-radius:.375rem;}::-webkit-scrollbar-track:hover{background:#1a1d20;}::-webkit-scrollbar-track:active{background:#1a1d20;}::-webkit-scrollbar-corner{background:transparent;}.table-container{max-height:100%;overflow-y:scroll;flex-grow:1;position:relative;}.table-container .loading{position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;background:rgba(var(--bs-gray-900-rgb),.3);display:flex;align-items:center;justify-content:center;}.sticky-header{position:sticky;top:0;background-color:var(--bs-body-bg)!important;}tr{height:61px;max-height:61px;}td{vertical-align:middle;}.contained{display:-webkit-box;max-height:calc(61px - 1rem);-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;}@-webkit-keyframes moving-gradient{0%{background-position:-250px 0;}100%{background-position:250px 0;}}tr.row-placeholder td::after{content:" ";display:block;height:12px;background:linear-gradient(to right,rgba(var(--bs-body-color-rgb),.3) 20%,rgba(var(--bs-secondary-bg-rgb),.7) 50%,rgba(var(--bs-body-color-rgb),.3) 80%);background-size:500px 100px;animation-name:moving-gradient;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear;animation-fill-mode:forwards;}.monaco-normal{height:500px!important;}.monaco-small{height:300px!important;}.monaco-extra-small{height:100px!important;}.graph-container{display:flex;flex-direction:column;}.graph-container .graph-controls{display:flex;justify-content:flex-end;gap:1rem;padding-right:1rem;}.graph-container .graph-controls .btn{--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,.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none;color:var(--bs-btn-color);fill:var(--bs-btn-color);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);}.graph-container .graph-controls .btn:hover{color:var(--bs-btn-hover-color);fill:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);}.node rect,.node circle,.node ellipse{stroke:#6c757d;fill:#1a1d20;stroke-width:1px;}.end-node circle{stroke-width:3px;}.horizontal-collapse{border-right:1px solid var(--bs-dark-bg-subtle);}.horizontal-collapse:nth-last-child(1){border:0;}.horizontal-collapse .title{bottom:1px solid var(--bs-dark-bg-subtle);}.horizontal-collapse.collapsed .title{width:22px;height:100%;}.horizontal-collapse.collapsed .title .label{display:block;transform:rotate(90deg) translate(3px);transform-origin:center;}html,body{font-family:"Inconsolata",monospace;width:100%;height:100%;}#app{width:100%;height:100%;}h1:focus,.h1:focus{outline:0;}.content{padding-top:1.1rem;}#blazor-error-ui{background:#2b3035;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}.blazor-error-boundary{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem,#b32121;padding:1rem 1rem 1rem 3.7rem;color:#fff;}.blazor-error-boundary::after{content:"An error has occurred.";}.flex-grow{flex-grow:1;}#svg-definitions{display:none;}.logo{fill:#8c68cd;height:75px;}.logo-large{height:300px;}.logo-typing{font-family:Rajdhani;color:#8c68cd;}.logo-typing-large{font-size:8rem;margin-right:0;}.vh-30{height:30vh!important;}.offcanvas{margin-top:1px;}.cursor-pointer{cursor:pointer;}.modal-confirmation .modal-footer{border-top:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color)!important;}.h-100-px{height:100px;}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;height:16px;width:16px;margin-left:.4em;mask-image:url("data:image/svg+xml;utf8,");cursor:pointer;background-color:#c6b4e6;}.breadcrumb{margin-bottom:0;} \ No newline at end of file +:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-accent:#9cec5b;--bs-cinereous:#837569;--bs-verdigris:#50c5b7;--bs-icterine:#f0f465;--bs-mute:#6c757d;--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:#8c68cd;--bs-secondary:#3c8cd6;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-accent:#9cec5b;--bs-cinereous:#837569;--bs-verdigris:#50c5b7;--bs-icterine:#f0f465;--bs-mute:#6c757d;--bs-primary-rgb:140,104,205;--bs-secondary-rgb:60,140,214;--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-accent-rgb:156,236,91;--bs-cinereous-rgb:131,117,105;--bs-verdigris-rgb:80,197,183;--bs-icterine-rgb:240,244,101;--bs-mute-rgb:108,117,125;--bs-primary-text-emphasis:#382a52;--bs-secondary-text-emphasis:#183856;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#7d59bd;--bs-secondary-bg-subtle:#d8e8f7;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-accent-bg-subtle:#9cec5b;--bs-cinereous-bg-subtle:#837569;--bs-verdigris-bg-subtle:#50c5b7;--bs-icterine-bg-subtle:#f0f465;--bs-mute-bg-subtle:#6c757d;--bs-primary-border-subtle:#714db1;--bs-secondary-border-subtle:#b1d1ef;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-accent-border-subtle:#9cec5b;--bs-cinereous-border-subtle:#837569;--bs-verdigris-border-subtle:#50c5b7;--bs-icterine-border-subtle:#f0f465;--bs-mute-border-subtle:#6c757d;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,rgba(255,255,255,.15),rgba(255,255,255,0));--bs-root-font-size:15px;--bs-body-font-family:"Inconsolata",monospace;--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33,37,41,.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33,37,41,.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#8c68cd;--bs-link-color-rgb:140,104,205;--bs-link-decoration:underline;--bs-link-hover-color:#7053a4;--bs-link-hover-color-rgb:112,83,164;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0,0,0,.175);--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem rgba(0,0,0,.15);--bs-box-shadow-sm:0 .125rem .25rem rgba(0,0,0,.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0,0,0,.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0,0,0,.075);--bs-focus-ring-width:.25rem;--bs-focus-ring-opacity:.25;--bs-focus-ring-color:rgba(140,104,205,.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545;}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222,226,230,.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222,226,230,.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#baa4e1;--bs-secondary-text-emphasis:#8abae6;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-accent-text-emphasis:#9cec5b;--bs-cinereous-text-emphasis:#837569;--bs-verdigris-text-emphasis:#50c5b7;--bs-icterine-text-emphasis:#f0f465;--bs-mute-text-emphasis:#6c757d;--bs-primary-bg-subtle:#7d59bd;--bs-secondary-bg-subtle:#0c1c2b;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-accent-bg-subtle:#9cec5b;--bs-cinereous-bg-subtle:#837569;--bs-verdigris-bg-subtle:#50c5b7;--bs-icterine-bg-subtle:#f0f465;--bs-mute-bg-subtle:#6c757d;--bs-primary-border-subtle:#714db1;--bs-secondary-border-subtle:#245480;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-accent-border-subtle:#9cec5b;--bs-cinereous-border-subtle:#837569;--bs-verdigris-border-subtle:#50c5b7;--bs-icterine-border-subtle:#f0f465;--bs-mute-border-subtle:#6c757d;--bs-heading-color:inherit;--bs-link-color:#8c68cd;--bs-link-hover-color:#c5b3e6;--bs-link-color-rgb:140,104,205;--bs-link-hover-color-rgb:197,179,230;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255,255,255,.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f;}*,*::before,*::after{box-sizing:border-box;}:root{font-size:var(--bs-root-font-size);}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth;}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25;}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color);}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 + .9vw);}@media(min-width:1200px){h2,.h2{font-size:2rem;}}h3,.h3{font-size:calc(1.3rem + .6vw);}@media(min-width:1200px){h3,.h3{font-size:1.75rem;}}h4,.h4{font-size:calc(1.275rem + .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]{text-decoration:underline dotted;cursor:help;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:.5rem;margin-left:0;}blockquote{margin:0 0 1rem;}b,strong{font-weight:bolder;}small,.small{font-size:.875em;}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg);}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline;}sub{bottom:-.25em;}sup{top:-.5em;}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline;}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb);}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none;}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em;}pre code{font-size:inherit;color:inherit;word-break:normal;}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word;}a>code{color:inherit;}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.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:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left;}th{text-align:inherit;text-align:-webkit-match-parent;}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0;}label{display:inline-block;}button{border-radius:0;}button:focus:not(:focus-visible){outline:0;}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit;}button,select{text-transform:none;}[role=button]{cursor:pointer;}select{word-wrap:normal;}select:disabled{opacity:1;}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important;}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer;}::-moz-focus-inner{padding:0;border-style:none;}textarea{resize:vertical;}fieldset{min-width:0;padding:0;margin:0;border:0;}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit;}@media(min-width:1200px){legend{font-size:1.5rem;}}legend+*{clear:left;}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0;}::-webkit-inner-spin-button{height:auto;}[type=search]{-webkit-appearance:textfield;outline-offset:-2px;}::-webkit-search-decoration{-webkit-appearance:none;}::-webkit-color-swatch-wrapper{padding:0;}::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:.5rem;}.initialism{font-size:.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:.875em;color:#6c757d;}.blockquote-footer::before{content:"— ";}.img-fluid{max-width:100%;height:auto;}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto;}.figure{display:inline-block;}.figure-img{margin-bottom:.5rem;line-height:1;}.figure-caption{font-size:.875em;color:var(--bs-secondary-color);}.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)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto;}@media(min-width:576px){.container-sm,.container{max-width:540px;}}@media(min-width:768px){.container-md,.container-sm,.container{max-width:720px;}}@media(min-width:992px){.container-lg,.container-md,.container-sm,.container{max-width:960px;}}@media(min-width:1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px;}}@media(min-width:1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px;}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px;}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-.5*var(--bs-gutter-x));margin-left:calc(-.5*var(--bs-gutter-x));}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y);}.col{flex:1 0 0%;}.row-cols-auto>*{flex:0 0 auto;width:auto;}.row-cols-1>*{flex:0 0 auto;width:100%;}.row-cols-2>*{flex:0 0 auto;width:50%;}.row-cols-3>*{flex:0 0 auto;width:33.33333333%;}.row-cols-4>*{flex:0 0 auto;width:25%;}.row-cols-5>*{flex:0 0 auto;width:20%;}.row-cols-6>*{flex:0 0 auto;width:16.66666667%;}.col-auto{flex:0 0 auto;width:auto;}.col-1{flex:0 0 auto;width:8.33333333%;}.col-2{flex:0 0 auto;width:16.66666667%;}.col-3{flex:0 0 auto;width:25%;}.col-4{flex:0 0 auto;width:33.33333333%;}.col-5{flex:0 0 auto;width:41.66666667%;}.col-6{flex:0 0 auto;width:50%;}.col-7{flex:0 0 auto;width:58.33333333%;}.col-8{flex:0 0 auto;width:66.66666667%;}.col-9{flex:0 0 auto;width:75%;}.col-10{flex:0 0 auto;width:83.33333333%;}.col-11{flex:0 0 auto;width:91.66666667%;}.col-12{flex:0 0 auto;width:100%;}.offset-1{margin-left:8.33333333%;}.offset-2{margin-left:16.66666667%;}.offset-3{margin-left:25%;}.offset-4{margin-left:33.33333333%;}.offset-5{margin-left:41.66666667%;}.offset-6{margin-left:50%;}.offset-7{margin-left:58.33333333%;}.offset-8{margin-left:66.66666667%;}.offset-9{margin-left:75%;}.offset-10{margin-left:83.33333333%;}.offset-11{margin-left:91.66666667%;}.g-0,.gx-0{--bs-gutter-x:0;}.g-0,.gy-0{--bs-gutter-y:0;}.g-1,.gx-1{--bs-gutter-x:.25rem;}.g-1,.gy-1{--bs-gutter-y:.25rem;}.g-2,.gx-2{--bs-gutter-x:.5rem;}.g-2,.gy-2{--bs-gutter-y:.5rem;}.g-3,.gx-3{--bs-gutter-x:1rem;}.g-3,.gy-3{--bs-gutter-y:1rem;}.g-4,.gx-4{--bs-gutter-x:1.5rem;}.g-4,.gy-4{--bs-gutter-y:1.5rem;}.g-5,.gx-5{--bs-gutter-x:3rem;}.g-5,.gy-5{--bs-gutter-y:3rem;}@media(min-width:576px){.col-sm{flex:1 0 0%;}.row-cols-sm-auto>*{flex:0 0 auto;width:auto;}.row-cols-sm-1>*{flex:0 0 auto;width:100%;}.row-cols-sm-2>*{flex:0 0 auto;width:50%;}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%;}.row-cols-sm-4>*{flex:0 0 auto;width:25%;}.row-cols-sm-5>*{flex:0 0 auto;width:20%;}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%;}.col-sm-auto{flex:0 0 auto;width:auto;}.col-sm-1{flex:0 0 auto;width:8.33333333%;}.col-sm-2{flex:0 0 auto;width:16.66666667%;}.col-sm-3{flex:0 0 auto;width:25%;}.col-sm-4{flex:0 0 auto;width:33.33333333%;}.col-sm-5{flex:0 0 auto;width:41.66666667%;}.col-sm-6{flex:0 0 auto;width:50%;}.col-sm-7{flex:0 0 auto;width:58.33333333%;}.col-sm-8{flex:0 0 auto;width:66.66666667%;}.col-sm-9{flex:0 0 auto;width:75%;}.col-sm-10{flex:0 0 auto;width:83.33333333%;}.col-sm-11{flex:0 0 auto;width:91.66666667%;}.col-sm-12{flex:0 0 auto;width:100%;}.offset-sm-0{margin-left:0;}.offset-sm-1{margin-left:8.33333333%;}.offset-sm-2{margin-left:16.66666667%;}.offset-sm-3{margin-left:25%;}.offset-sm-4{margin-left:33.33333333%;}.offset-sm-5{margin-left:41.66666667%;}.offset-sm-6{margin-left:50%;}.offset-sm-7{margin-left:58.33333333%;}.offset-sm-8{margin-left:66.66666667%;}.offset-sm-9{margin-left:75%;}.offset-sm-10{margin-left:83.33333333%;}.offset-sm-11{margin-left:91.66666667%;}.g-sm-0,.gx-sm-0{--bs-gutter-x:0;}.g-sm-0,.gy-sm-0{--bs-gutter-y:0;}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem;}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem;}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem;}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem;}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem;}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem;}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem;}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem;}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem;}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem;}}@media(min-width:768px){.col-md{flex:1 0 0%;}.row-cols-md-auto>*{flex:0 0 auto;width:auto;}.row-cols-md-1>*{flex:0 0 auto;width:100%;}.row-cols-md-2>*{flex:0 0 auto;width:50%;}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%;}.row-cols-md-4>*{flex:0 0 auto;width:25%;}.row-cols-md-5>*{flex:0 0 auto;width:20%;}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%;}.col-md-auto{flex:0 0 auto;width:auto;}.col-md-1{flex:0 0 auto;width:8.33333333%;}.col-md-2{flex:0 0 auto;width:16.66666667%;}.col-md-3{flex:0 0 auto;width:25%;}.col-md-4{flex:0 0 auto;width:33.33333333%;}.col-md-5{flex:0 0 auto;width:41.66666667%;}.col-md-6{flex:0 0 auto;width:50%;}.col-md-7{flex:0 0 auto;width:58.33333333%;}.col-md-8{flex:0 0 auto;width:66.66666667%;}.col-md-9{flex:0 0 auto;width:75%;}.col-md-10{flex:0 0 auto;width:83.33333333%;}.col-md-11{flex:0 0 auto;width:91.66666667%;}.col-md-12{flex:0 0 auto;width:100%;}.offset-md-0{margin-left:0;}.offset-md-1{margin-left:8.33333333%;}.offset-md-2{margin-left:16.66666667%;}.offset-md-3{margin-left:25%;}.offset-md-4{margin-left:33.33333333%;}.offset-md-5{margin-left:41.66666667%;}.offset-md-6{margin-left:50%;}.offset-md-7{margin-left:58.33333333%;}.offset-md-8{margin-left:66.66666667%;}.offset-md-9{margin-left:75%;}.offset-md-10{margin-left:83.33333333%;}.offset-md-11{margin-left:91.66666667%;}.g-md-0,.gx-md-0{--bs-gutter-x:0;}.g-md-0,.gy-md-0{--bs-gutter-y:0;}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem;}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem;}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem;}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem;}.g-md-3,.gx-md-3{--bs-gutter-x:1rem;}.g-md-3,.gy-md-3{--bs-gutter-y:1rem;}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem;}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem;}.g-md-5,.gx-md-5{--bs-gutter-x:3rem;}.g-md-5,.gy-md-5{--bs-gutter-y:3rem;}}@media(min-width:992px){.col-lg{flex:1 0 0%;}.row-cols-lg-auto>*{flex:0 0 auto;width:auto;}.row-cols-lg-1>*{flex:0 0 auto;width:100%;}.row-cols-lg-2>*{flex:0 0 auto;width:50%;}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%;}.row-cols-lg-4>*{flex:0 0 auto;width:25%;}.row-cols-lg-5>*{flex:0 0 auto;width:20%;}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%;}.col-lg-auto{flex:0 0 auto;width:auto;}.col-lg-1{flex:0 0 auto;width:8.33333333%;}.col-lg-2{flex:0 0 auto;width:16.66666667%;}.col-lg-3{flex:0 0 auto;width:25%;}.col-lg-4{flex:0 0 auto;width:33.33333333%;}.col-lg-5{flex:0 0 auto;width:41.66666667%;}.col-lg-6{flex:0 0 auto;width:50%;}.col-lg-7{flex:0 0 auto;width:58.33333333%;}.col-lg-8{flex:0 0 auto;width:66.66666667%;}.col-lg-9{flex:0 0 auto;width:75%;}.col-lg-10{flex:0 0 auto;width:83.33333333%;}.col-lg-11{flex:0 0 auto;width:91.66666667%;}.col-lg-12{flex:0 0 auto;width:100%;}.offset-lg-0{margin-left:0;}.offset-lg-1{margin-left:8.33333333%;}.offset-lg-2{margin-left:16.66666667%;}.offset-lg-3{margin-left:25%;}.offset-lg-4{margin-left:33.33333333%;}.offset-lg-5{margin-left:41.66666667%;}.offset-lg-6{margin-left:50%;}.offset-lg-7{margin-left:58.33333333%;}.offset-lg-8{margin-left:66.66666667%;}.offset-lg-9{margin-left:75%;}.offset-lg-10{margin-left:83.33333333%;}.offset-lg-11{margin-left:91.66666667%;}.g-lg-0,.gx-lg-0{--bs-gutter-x:0;}.g-lg-0,.gy-lg-0{--bs-gutter-y:0;}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem;}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem;}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem;}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem;}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem;}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem;}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem;}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem;}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem;}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem;}}@media(min-width:1200px){.col-xl{flex:1 0 0%;}.row-cols-xl-auto>*{flex:0 0 auto;width:auto;}.row-cols-xl-1>*{flex:0 0 auto;width:100%;}.row-cols-xl-2>*{flex:0 0 auto;width:50%;}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%;}.row-cols-xl-4>*{flex:0 0 auto;width:25%;}.row-cols-xl-5>*{flex:0 0 auto;width:20%;}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%;}.col-xl-auto{flex:0 0 auto;width:auto;}.col-xl-1{flex:0 0 auto;width:8.33333333%;}.col-xl-2{flex:0 0 auto;width:16.66666667%;}.col-xl-3{flex:0 0 auto;width:25%;}.col-xl-4{flex:0 0 auto;width:33.33333333%;}.col-xl-5{flex:0 0 auto;width:41.66666667%;}.col-xl-6{flex:0 0 auto;width:50%;}.col-xl-7{flex:0 0 auto;width:58.33333333%;}.col-xl-8{flex:0 0 auto;width:66.66666667%;}.col-xl-9{flex:0 0 auto;width:75%;}.col-xl-10{flex:0 0 auto;width:83.33333333%;}.col-xl-11{flex:0 0 auto;width:91.66666667%;}.col-xl-12{flex:0 0 auto;width:100%;}.offset-xl-0{margin-left:0;}.offset-xl-1{margin-left:8.33333333%;}.offset-xl-2{margin-left:16.66666667%;}.offset-xl-3{margin-left:25%;}.offset-xl-4{margin-left:33.33333333%;}.offset-xl-5{margin-left:41.66666667%;}.offset-xl-6{margin-left:50%;}.offset-xl-7{margin-left:58.33333333%;}.offset-xl-8{margin-left:66.66666667%;}.offset-xl-9{margin-left:75%;}.offset-xl-10{margin-left:83.33333333%;}.offset-xl-11{margin-left:91.66666667%;}.g-xl-0,.gx-xl-0{--bs-gutter-x:0;}.g-xl-0,.gy-xl-0{--bs-gutter-y:0;}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem;}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem;}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem;}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem;}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem;}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem;}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem;}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem;}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem;}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem;}}@media(min-width:1400px){.col-xxl{flex:1 0 0%;}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto;}.row-cols-xxl-1>*{flex:0 0 auto;width:100%;}.row-cols-xxl-2>*{flex:0 0 auto;width:50%;}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%;}.row-cols-xxl-4>*{flex:0 0 auto;width:25%;}.row-cols-xxl-5>*{flex:0 0 auto;width:20%;}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%;}.col-xxl-auto{flex:0 0 auto;width:auto;}.col-xxl-1{flex:0 0 auto;width:8.33333333%;}.col-xxl-2{flex:0 0 auto;width:16.66666667%;}.col-xxl-3{flex:0 0 auto;width:25%;}.col-xxl-4{flex:0 0 auto;width:33.33333333%;}.col-xxl-5{flex:0 0 auto;width:41.66666667%;}.col-xxl-6{flex:0 0 auto;width:50%;}.col-xxl-7{flex:0 0 auto;width:58.33333333%;}.col-xxl-8{flex:0 0 auto;width:66.66666667%;}.col-xxl-9{flex:0 0 auto;width:75%;}.col-xxl-10{flex:0 0 auto;width:83.33333333%;}.col-xxl-11{flex:0 0 auto;width:91.66666667%;}.col-xxl-12{flex:0 0 auto;width:100%;}.offset-xxl-0{margin-left:0;}.offset-xxl-1{margin-left:8.33333333%;}.offset-xxl-2{margin-left:16.66666667%;}.offset-xxl-3{margin-left:25%;}.offset-xxl-4{margin-left:33.33333333%;}.offset-xxl-5{margin-left:41.66666667%;}.offset-xxl-6{margin-left:50%;}.offset-xxl-7{margin-left:58.33333333%;}.offset-xxl-8{margin-left:66.66666667%;}.offset-xxl-9{margin-left:75%;}.offset-xxl-10{margin-left:83.33333333%;}.offset-xxl-11{margin-left:91.66666667%;}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0;}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0;}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem;}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem;}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem;}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.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-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:#dee2e6;--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb),.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb),.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb),.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color);}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)));}.table>tbody{vertical-align:inherit;}.table>thead{vertical-align:bottom;}.table-group-divider{border-top:calc(var(--bs-border-width)*2) solid currentcolor;}.caption-top{caption-side:top;}.table-sm>:not(caption)>*>*{padding:.25rem .25rem;}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0;}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width);}.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-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg);}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg);}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg);}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg);}.table-primary{--bs-table-color:#000;--bs-table-bg:#e8e1f5;--bs-table-border-color:#bab4c4;--bs-table-striped-bg:#dcd6e9;--bs-table-striped-color:#000;--bs-table-active-bg:#d1cbdd;--bs-table-active-color:#000;--bs-table-hover-bg:#d7d0e3;--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:#d8e8f7;--bs-table-border-color:#adbac6;--bs-table-striped-bg:#cddceb;--bs-table-striped-color:#000;--bs-table-active-bg:#c2d1de;--bs-table-active-color:#000;--bs-table-hover-bg:#c8d7e4;--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:#a7b9b1;--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:#a6c3ca;--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:#ccc2a4;--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:#c6acae;--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:#c6c7c8;--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:#4d5154;--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:.5rem;}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5;}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem;}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem;}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color);}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .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:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#c6b4e6;outline:0;box-shadow:0 0 0 .25rem rgba(140,104,205,.25);}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0;}.form-control::-webkit-datetime-edit{display:block;padding:0;}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1;}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1;}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;}@media(prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none;}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg);}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 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 + .5rem + calc(var(--bs-border-width)*2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm);}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem;}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg);}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem;}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width)*2));}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2));}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2));}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width)*2));padding:.375rem;}.form-control-color:not(:disabled):not([readonly]){cursor:pointer;}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius);}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius);}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2));}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2));}.form-select{--bs-form-select-bg-img: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");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;}@media(prefers-reduced-motion:reduce){.form-select{transition:none;}}.form-select:focus{border-color:#c6b4e6;outline:0;box-shadow:0 0 0 .25rem rgba(140,104,205,.25);}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none;}.form-select:disabled{background-color:var(--bs-secondary-bg);}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color);}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm);}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg);}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.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{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact;}.form-check-input[type=checkbox]{border-radius:.25em;}.form-check-input[type=radio]{border-radius:50%;}.form-check-input:active{filter:brightness(90%);}.form-check-input:focus{border-color:#c6b4e6;outline:0;box-shadow:0 0 0 .25rem rgba(140,104,205,.25);}.form-check-input:checked{background-color:#8c68cd;border-color:#8c68cd;}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-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]{--bs-form-check-bg-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:#8c68cd;border-color:#8c68cd;--bs-form-check-bg-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:.5;}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5;}.form-switch{padding-left:2.5em;}.form-switch .form-check-input{--bs-form-switch-bg: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");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out;}@media(prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none;}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23c6b4e6'/%3e%3c/svg%3e");}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: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:.65;}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;background-color:transparent;}.form-range:focus{outline:0;}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(140,104,205,.25);}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(140,104,205,.25);}.form-range::-moz-focus-outer{border:0;}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;appearance:none;background-color:#8c68cd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;}@media(prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none;}}.form-range::-webkit-slider-thumb:active{background-color:#ddd2f0;}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem;}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#8c68cd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;}@media(prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none;}}.form-range::-moz-range-thumb:active{background-color:#ddd2f0;}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem;}.form-range:disabled{pointer-events:none;}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color);}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color);}.form-floating{position:relative;}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width)*2));min-height:calc(3.5rem + calc(var(--bs-border-width)*2));line-height:1.25;}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .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 .75rem;}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent;}.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:.625rem;}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem;}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem;}.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{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem);}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem);}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0;}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d;}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:var(--bs-secondary-bg);}.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:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg);}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm);}.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:calc(var(--bs-border-width)*-1);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:.25rem;font-size:.875em;color:var(--bs-form-valid-color);}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius);}.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:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .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(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem);}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25);}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color);}.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"]{--bs-form-select-bg-icon: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");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25);}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + .75rem));}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color);}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color);}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25);}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color);}.form-check-inline .form-check-input~.valid-feedback{margin-left:.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:.25rem;font-size:.875em;color:var(--bs-form-invalid-color);}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius);}.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:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .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(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem);}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25);}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem);}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color);}.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"]{--bs-form-select-bg-icon: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");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25);}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + .75rem));}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color);}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color);}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25);}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color);}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.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:.75rem;--bs-btn-padding-y:.375rem;--bs-btn-font-family:;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:.65;--bs-btn-focus-box-shadow: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;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 .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .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-check:checked:focus-visible+.btn{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:#000;--bs-btn-bg:#8c68cd;--bs-btn-border-color:#8c68cd;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#9d7fd5;--bs-btn-hover-border-color:#9877d2;--bs-btn-focus-shadow-rgb:119,88,174;--bs-btn-active-color:#000;--bs-btn-active-bg:#a386d7;--bs-btn-active-border-color:#9877d2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#8c68cd;--bs-btn-disabled-border-color:#8c68cd;}.btn-secondary{--bs-btn-color:#000;--bs-btn-bg:#3c8cd6;--bs-btn-border-color:#3c8cd6;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#599ddc;--bs-btn-hover-border-color:#5098da;--bs-btn-focus-shadow-rgb:51,119,182;--bs-btn-active-color:#000;--bs-btn-active-bg:#63a3de;--bs-btn-active-border-color:#5098da;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#3c8cd6;--bs-btn-disabled-border-color:#3c8cd6;}.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,.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,.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,.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,.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,.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,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529;}.btn-accent{--bs-btn-color:#000;--bs-btn-bg:#9cec5b;--bs-btn-border-color:#9cec5b;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#abef74;--bs-btn-hover-border-color:#a6ee6b;--bs-btn-focus-shadow-rgb:133,201,77;--bs-btn-active-color:#000;--bs-btn-active-bg:#b0f07c;--bs-btn-active-border-color:#a6ee6b;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#9cec5b;--bs-btn-disabled-border-color:#9cec5b;}.btn-cinereous{--bs-btn-color:#000;--bs-btn-bg:#837569;--bs-btn-border-color:#837569;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#968a80;--bs-btn-hover-border-color:#8f8378;--bs-btn-focus-shadow-rgb:111,99,89;--bs-btn-active-color:#000;--bs-btn-active-bg:#9c9187;--bs-btn-active-border-color:#8f8378;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#837569;--bs-btn-disabled-border-color:#837569;}.btn-verdigris{--bs-btn-color:#000;--bs-btn-bg:#50c5b7;--bs-btn-border-color:#50c5b7;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#6acec2;--bs-btn-hover-border-color:#62cbbe;--bs-btn-focus-shadow-rgb:68,167,156;--bs-btn-active-color:#000;--bs-btn-active-bg:#73d1c5;--bs-btn-active-border-color:#62cbbe;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#50c5b7;--bs-btn-disabled-border-color:#50c5b7;}.btn-icterine{--bs-btn-color:#000;--bs-btn-bg:#f0f465;--bs-btn-border-color:#f0f465;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f2f67c;--bs-btn-hover-border-color:#f2f574;--bs-btn-focus-shadow-rgb:204,207,86;--bs-btn-active-color:#000;--bs-btn-active-bg:#f3f684;--bs-btn-active-border-color:#f2f574;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f0f465;--bs-btn-disabled-border-color:#f0f465;}.btn-mute{--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,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d;}.btn-outline-primary{--bs-btn-color:#8c68cd;--bs-btn-border-color:#8c68cd;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#8c68cd;--bs-btn-hover-border-color:#8c68cd;--bs-btn-focus-shadow-rgb:140,104,205;--bs-btn-active-color:#000;--bs-btn-active-bg:#8c68cd;--bs-btn-active-border-color:#8c68cd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#8c68cd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#8c68cd;--bs-gradient:none;}.btn-outline-secondary{--bs-btn-color:#3c8cd6;--bs-btn-border-color:#3c8cd6;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#3c8cd6;--bs-btn-hover-border-color:#3c8cd6;--bs-btn-focus-shadow-rgb:60,140,214;--bs-btn-active-color:#000;--bs-btn-active-bg:#3c8cd6;--bs-btn-active-border-color:#3c8cd6;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#3c8cd6;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#3c8cd6;--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,.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,.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,.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,.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,.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,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none;}.btn-outline-accent{--bs-btn-color:#9cec5b;--bs-btn-border-color:#9cec5b;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#9cec5b;--bs-btn-hover-border-color:#9cec5b;--bs-btn-focus-shadow-rgb:156,236,91;--bs-btn-active-color:#000;--bs-btn-active-bg:#9cec5b;--bs-btn-active-border-color:#9cec5b;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#9cec5b;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#9cec5b;--bs-gradient:none;}.btn-outline-cinereous{--bs-btn-color:#837569;--bs-btn-border-color:#837569;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#837569;--bs-btn-hover-border-color:#837569;--bs-btn-focus-shadow-rgb:131,117,105;--bs-btn-active-color:#000;--bs-btn-active-bg:#837569;--bs-btn-active-border-color:#837569;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#837569;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#837569;--bs-gradient:none;}.btn-outline-verdigris{--bs-btn-color:#50c5b7;--bs-btn-border-color:#50c5b7;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#50c5b7;--bs-btn-hover-border-color:#50c5b7;--bs-btn-focus-shadow-rgb:80,197,183;--bs-btn-active-color:#000;--bs-btn-active-bg:#50c5b7;--bs-btn-active-border-color:#50c5b7;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#50c5b7;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#50c5b7;--bs-gradient:none;}.btn-outline-icterine{--bs-btn-color:#f0f465;--bs-btn-border-color:#f0f465;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f0f465;--bs-btn-hover-border-color:#f0f465;--bs-btn-focus-shadow-rgb:240,244,101;--bs-btn-active-color:#000;--bs-btn-active-bg:#f0f465;--bs-btn-active-border-color:#f0f465;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#f0f465;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f0f465;--bs-gradient:none;}.btn-outline-mute{--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,.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--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:0 0 0 #000;--bs-btn-focus-shadow-rgb:119,88,174;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:.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg);}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y:.25rem;--bs-btn-padding-x:.5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm);}.fade{transition:opacity .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 .35s ease;}@media(prefers-reduced-motion:reduce){.collapsing{transition:none;}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .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:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.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:.5rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#8c68cd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:.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:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.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:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.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:.255em;vertical-align:.255em;content:"";}.dropstart .dropdown-toggle::after{display:none;}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.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;border-radius:var(--bs-dropdown-item-border-radius,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:.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,.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#8c68cd;--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:var(--bs-border-radius);}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width)*-1);}.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:.5625rem;padding-left:.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:.375rem;padding-left:.375rem;}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.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:calc(var(--bs-border-width)*-1);}.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:.5rem;--bs-nav-link-font-weight:;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);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:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .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:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(140,104,205,.25);}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default;}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);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));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.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:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#8c68cd;}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius);}.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-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap);}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent;}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor;}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor;}.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:.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb),.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb),.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:.5rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.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%2833, 37, 41, 0.75%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(var(--bs-emphasis-color-rgb),.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:.25rem;--bs-navbar-toggler-transition:box-shadow .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:.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 .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color);}.navbar-nav .dropdown-menu{position:static;}.navbar-text{padding-top:.5rem;padding-bottom:.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,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255,255,255,.55);--bs-navbar-hover-color:rgba(255,255,255,.75);--bs-navbar-disabled-color:rgba(255,255,255,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255,255,255,.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");}[data-bs-theme=dark] .navbar-toggler-icon{--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:.5rem;--bs-card-title-color:;--bs-card-subtitle-color:;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow:;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb),.03);--bs-card-cap-color:;--bs-card-height:;--bs-card-color:;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);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);color:var(--bs-card-title-color);}.card-subtitle{margin-top:calc(-.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color);}.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(-.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-.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(-.5*var(--bs-card-cap-padding-x));margin-left:calc(-.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:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--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='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .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='none' stroke='%23382a52' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 .25rem rgba(140,104,205,.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle);}.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;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-header .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-header .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-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-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0;}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0;}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23baa4e1'%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-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23baa4e1'%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");}.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:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);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,"/");}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color);}.pagination{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 .25rem rgba(140,104,205,.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#8c68cd;--bs-pagination-active-border-color:#8c68cd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);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 .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .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:calc(var(--bs-border-width)*-1);}.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:.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg);}.pagination-sm{--bs-pagination-padding-x:.5rem;--bs-pagination-padding-y:.25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm);}.badge{--bs-badge-padding-x:.65em;--bs-badge-padding-y:.35em;--bs-badge-font-size:.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);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:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;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;color:var(--bs-alert-link-color);}.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:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis);}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis);}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis);}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis);}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis);}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis);}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis);}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis);}.alert-accent{--bs-alert-color:var(--bs-accent-text-emphasis);--bs-alert-bg:var(--bs-accent-bg-subtle);--bs-alert-border-color:var(--bs-accent-border-subtle);--bs-alert-link-color:var(--bs-accent-text-emphasis);}.alert-cinereous{--bs-alert-color:var(--bs-cinereous-text-emphasis);--bs-alert-bg:var(--bs-cinereous-bg-subtle);--bs-alert-border-color:var(--bs-cinereous-border-subtle);--bs-alert-link-color:var(--bs-cinereous-text-emphasis);}.alert-verdigris{--bs-alert-color:var(--bs-verdigris-text-emphasis);--bs-alert-bg:var(--bs-verdigris-bg-subtle);--bs-alert-border-color:var(--bs-verdigris-border-subtle);--bs-alert-link-color:var(--bs-verdigris-text-emphasis);}.alert-icterine{--bs-alert-color:var(--bs-icterine-text-emphasis);--bs-alert-bg:var(--bs-icterine-bg-subtle);--bs-alert-border-color:var(--bs-icterine-border-subtle);--bs-alert-link-color:var(--bs-icterine-text-emphasis);}.alert-mute{--bs-alert-color:var(--bs-mute-text-emphasis);--bs-alert-bg:var(--bs-mute-bg-subtle);--bs-alert-border-color:var(--bs-mute-border-subtle);--bs-alert-link-color:var(--bs-mute-text-emphasis);}@keyframes progress-bar-stripes{0%{background-position-x:1rem;}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#8c68cd;--bs-progress-bar-transition:width .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,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height);}.progress-stacked>.progress{overflow:visible;}.progress-stacked>.progress>.progress-bar{width:100%;}.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:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#8c68cd;--bs-list-group-active-border-color:#8c68cd;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{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis);}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis);}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis);}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis);}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis);}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis);}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis);}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis);}.list-group-item-accent{--bs-list-group-color:var(--bs-accent-text-emphasis);--bs-list-group-bg:var(--bs-accent-bg-subtle);--bs-list-group-border-color:var(--bs-accent-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-accent-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-accent-border-subtle);--bs-list-group-active-color:var(--bs-accent-bg-subtle);--bs-list-group-active-bg:var(--bs-accent-text-emphasis);--bs-list-group-active-border-color:var(--bs-accent-text-emphasis);}.list-group-item-cinereous{--bs-list-group-color:var(--bs-cinereous-text-emphasis);--bs-list-group-bg:var(--bs-cinereous-bg-subtle);--bs-list-group-border-color:var(--bs-cinereous-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-cinereous-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-cinereous-border-subtle);--bs-list-group-active-color:var(--bs-cinereous-bg-subtle);--bs-list-group-active-bg:var(--bs-cinereous-text-emphasis);--bs-list-group-active-border-color:var(--bs-cinereous-text-emphasis);}.list-group-item-verdigris{--bs-list-group-color:var(--bs-verdigris-text-emphasis);--bs-list-group-bg:var(--bs-verdigris-bg-subtle);--bs-list-group-border-color:var(--bs-verdigris-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-verdigris-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-verdigris-border-subtle);--bs-list-group-active-color:var(--bs-verdigris-bg-subtle);--bs-list-group-active-bg:var(--bs-verdigris-text-emphasis);--bs-list-group-active-border-color:var(--bs-verdigris-text-emphasis);}.list-group-item-icterine{--bs-list-group-color:var(--bs-icterine-text-emphasis);--bs-list-group-bg:var(--bs-icterine-bg-subtle);--bs-list-group-border-color:var(--bs-icterine-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-icterine-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-icterine-border-subtle);--bs-list-group-active-color:var(--bs-icterine-bg-subtle);--bs-list-group-active-bg:var(--bs-icterine-text-emphasis);--bs-list-group-active-border-color:var(--bs-icterine-text-emphasis);}.list-group-item-mute{--bs-list-group-color:var(--bs-mute-text-emphasis);--bs-list-group-bg:var(--bs-mute-bg-subtle);--bs-list-group-border-color:var(--bs-mute-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-mute-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-mute-border-subtle);--bs-list-group-active-color:var(--bs-mute-bg-subtle);--bs-list-group-active-bg:var(--bs-mute-text-emphasis);--bs-list-group-active-border-color:var(--bs-mute-text-emphasis);}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg: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");--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-shadow:0 0 0 .25rem rgba(140,104,205,.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity);}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity);}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity);}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity);}.btn-close-white{filter:var(--bs-btn-close-white-filter);}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter);}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-color:;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);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: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(-.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:.5rem;--bs-modal-color:;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--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:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:.5rem;--bs-modal-footer-bg:;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);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 .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:.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;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)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-.5*var(--bs-modal-header-padding-y)) calc(-.5*var(--bs-modal-header-padding-x)) calc(-.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)*.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)*.5);}@media(min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow);}.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:.5rem;--bs-tooltip-padding-y:.25rem;--bs-tooltip-margin:;--bs-tooltip-font-size:.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:.9;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:"Inconsolata",monospace;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:calc(-1*var(--bs-tooltip-arrow-height));}.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)*.5) 0;border-top-color:var(--bs-tooltip-bg);}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));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)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg);}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height));}.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)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg);}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));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)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg);}.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:.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.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:"Inconsolata",monospace;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)*.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);}.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)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.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);}.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)*.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(-.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg);}.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)*.5) 0 calc(var(--bs-popover-arrow-width)*.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);}.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%;backface-visibility:hidden;transition:transform .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 .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:.5;transition:opacity .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:.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%;}.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%;}.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:.5;transition:opacity .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;}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100);}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000;}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .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);}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.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:.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:-.125em;--bs-spinner-animation-speed:.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:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform .3s ease-in-out;--bs-offcanvas-title-line-height:1.5;}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}}@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:var(--bs-offcanvas-transition);}@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:.5;}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin:calc(-.5*var(--bs-offcanvas-padding-y)) calc(-.5*var(--bs-offcanvas-padding-x)) calc(-.5*var(--bs-offcanvas-padding-y)) auto;}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height);}.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:.5;}.placeholder.btn::before{display:inline-block;content:"";}.placeholder-xs{min-height:.6em;}.placeholder-sm{min-height:.8em;}.placeholder-lg{min-height:1.2em;}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite;}@keyframes placeholder-glow{50%{opacity:.2;}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite;}@keyframes placeholder-wave{100%{mask-position:-200% 0%;}}.clearfix::after{display:block;clear:both;content:"";}.text-bg-primary{color:#000!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-secondary{color:#000!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-accent{color:#000!important;background-color:RGBA(var(--bs-accent-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-cinereous{color:#000!important;background-color:RGBA(var(--bs-cinereous-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-verdigris{color:#000!important;background-color:RGBA(var(--bs-verdigris-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-icterine{color:#000!important;background-color:RGBA(var(--bs-icterine-rgb),var(--bs-bg-opacity,1))!important;}.text-bg-mute{color:#fff!important;background-color:RGBA(var(--bs-mute-rgb),var(--bs-bg-opacity,1))!important;}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;}.link-primary:hover,.link-primary:focus{color:RGBA(163,134,215,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(163,134,215,var(--bs-link-underline-opacity,1))!important;}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;}.link-secondary:hover,.link-secondary:focus{color:RGBA(99,163,222,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(99,163,222,var(--bs-link-underline-opacity,1))!important;}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;}.link-success:hover,.link-success:focus{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;}.link-info:hover,.link-info:focus{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;}.link-light:hover,.link-light:focus{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;}.link-dark:hover,.link-dark:focus{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;}.link-accent{color:RGBA(var(--bs-accent-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-accent-rgb),var(--bs-link-underline-opacity,1))!important;}.link-accent:hover,.link-accent:focus{color:RGBA(176,240,124,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(176,240,124,var(--bs-link-underline-opacity,1))!important;}.link-cinereous{color:RGBA(var(--bs-cinereous-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-cinereous-rgb),var(--bs-link-underline-opacity,1))!important;}.link-cinereous:hover,.link-cinereous:focus{color:RGBA(156,145,135,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(156,145,135,var(--bs-link-underline-opacity,1))!important;}.link-verdigris{color:RGBA(var(--bs-verdigris-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-verdigris-rgb),var(--bs-link-underline-opacity,1))!important;}.link-verdigris:hover,.link-verdigris:focus{color:RGBA(115,209,197,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(115,209,197,var(--bs-link-underline-opacity,1))!important;}.link-icterine{color:RGBA(var(--bs-icterine-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-icterine-rgb),var(--bs-link-underline-opacity,1))!important;}.link-icterine:hover,.link-icterine:focus{color:RGBA(243,246,132,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(243,246,132,var(--bs-link-underline-opacity,1))!important;}.link-mute{color:RGBA(var(--bs-mute-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-mute-rgb),var(--bs-link-underline-opacity,1))!important;}.link-mute:hover,.link-mute:focus{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em;backface-visibility:hidden;}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform;}@media(prefers-reduced-motion:reduce){.icon-link>.bi{transition:none;}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0));}.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:sticky;top:0;z-index:1020;}.sticky-bottom{position:sticky;bottom:0;z-index:1020;}@media(min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020;}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020;}}@media(min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020;}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020;}}@media(min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020;}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020;}}@media(min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020;}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020;}}@media(min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020;}.sticky-xxl-bottom{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){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;}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!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:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.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;}.object-fit-contain{object-fit:contain!important;}.object-fit-cover{object-fit:cover!important;}.object-fit-fill{object-fit:fill!important;}.object-fit-scale{object-fit:scale-down!important;}.object-fit-none{object-fit:none!important;}.opacity-0{opacity:0!important;}.opacity-25{opacity:.25!important;}.opacity-50{opacity:.5!important;}.opacity-75{opacity:.75!important;}.opacity-100{opacity:1!important;}.overflow-auto{overflow:auto!important;}.overflow-hidden{overflow:hidden!important;}.overflow-visible{overflow:visible!important;}.overflow-scroll{overflow:scroll!important;}.overflow-x-auto{overflow-x:auto!important;}.overflow-x-hidden{overflow-x:hidden!important;}.overflow-x-visible{overflow-x:visible!important;}.overflow-x-scroll{overflow-x:scroll!important;}.overflow-y-auto{overflow-y:auto!important;}.overflow-y-hidden{overflow-y:hidden!important;}.overflow-y-visible{overflow-y:visible!important;}.overflow-y-scroll{overflow-y: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-inline-grid{display:inline-grid!important;}.d-table{display:table!important;}.d-table-row{display:table-row!important;}.d-table-cell{display:table-cell!important;}.d-flex{display:flex!important;}.d-inline-flex{display:inline-flex!important;}.d-none{display:none!important;}.shadow{box-shadow:var(--bs-box-shadow)!important;}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important;}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important;}.shadow-none{box-shadow:none!important;}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb),var(--bs-focus-ring-opacity));}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb),var(--bs-focus-ring-opacity));}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb),var(--bs-focus-ring-opacity));}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb),var(--bs-focus-ring-opacity));}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb),var(--bs-focus-ring-opacity));}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb),var(--bs-focus-ring-opacity));}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb),var(--bs-focus-ring-opacity));}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb),var(--bs-focus-ring-opacity));}.focus-ring-accent{--bs-focus-ring-color:rgba(var(--bs-accent-rgb),var(--bs-focus-ring-opacity));}.focus-ring-cinereous{--bs-focus-ring-color:rgba(var(--bs-cinereous-rgb),var(--bs-focus-ring-opacity));}.focus-ring-verdigris{--bs-focus-ring-color:rgba(var(--bs-verdigris-rgb),var(--bs-focus-ring-opacity));}.focus-ring-icterine{--bs-focus-ring-color:rgba(var(--bs-icterine-rgb),var(--bs-focus-ring-opacity));}.focus-ring-mute{--bs-focus-ring-color:rgba(var(--bs-mute-rgb),var(--bs-focus-ring-opacity));}.position-static{position:static!important;}.position-relative{position:relative!important;}.position-absolute{position:absolute!important;}.position-fixed{position:fixed!important;}.position-sticky{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-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-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-primary-subtle{border-color:var(--bs-primary-border-subtle)!important;}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important;}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important;}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important;}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important;}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important;}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important;}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important;}.border-accent{border-color:#9cec5b!important;}.border-cinereous{border-color:#837569!important;}.border-verdigris{border-color:#50c5b7!important;}.border-icterine{border-color:#f0f465!important;}.border-mute{border-color:#6c757d!important;}.border-1{border-width:1px!important;}.border-2{border-width:2px!important;}.border-3{border-width:3px!important;}.border-4{border-width:4px!important;}.border-5{border-width:5px!important;}.border-opacity-10{--bs-border-opacity:.1;}.border-opacity-25{--bs-border-opacity:.25;}.border-opacity-50{--bs-border-opacity:.5;}.border-opacity-75{--bs-border-opacity:.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:.25rem!important;}.m-2{margin:.5rem!important;}.m-3{margin:1rem!important;}.m-4{margin:1.5rem!important;}.m-5{margin:3rem!important;}.m-auto{margin:auto!important;}.mx-0{margin-right:0!important;margin-left:0!important;}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-auto{margin-right:auto!important;margin-left:auto!important;}.my-0{margin-top:0!important;margin-bottom:0!important;}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-0{margin-top:0!important;}.mt-1{margin-top:.25rem!important;}.mt-2{margin-top:.5rem!important;}.mt-3{margin-top:1rem!important;}.mt-4{margin-top:1.5rem!important;}.mt-5{margin-top:3rem!important;}.mt-auto{margin-top:auto!important;}.me-0{margin-right:0!important;}.me-1{margin-right:.25rem!important;}.me-2{margin-right:.5rem!important;}.me-3{margin-right:1rem!important;}.me-4{margin-right:1.5rem!important;}.me-5{margin-right:3rem!important;}.me-auto{margin-right:auto!important;}.mb-0{margin-bottom:0!important;}.mb-1{margin-bottom:.25rem!important;}.mb-2{margin-bottom:.5rem!important;}.mb-3{margin-bottom:1rem!important;}.mb-4{margin-bottom:1.5rem!important;}.mb-5{margin-bottom:3rem!important;}.mb-auto{margin-bottom:auto!important;}.ms-0{margin-left:0!important;}.ms-1{margin-left:.25rem!important;}.ms-2{margin-left:.5rem!important;}.ms-3{margin-left:1rem!important;}.ms-4{margin-left:1.5rem!important;}.ms-5{margin-left:3rem!important;}.ms-auto{margin-left:auto!important;}.p-0{padding:0!important;}.p-1{padding:.25rem!important;}.p-2{padding:.5rem!important;}.p-3{padding:1rem!important;}.p-4{padding:1.5rem!important;}.p-5{padding:3rem!important;}.px-0{padding-right:0!important;padding-left:0!important;}.px-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-3{padding-right:1rem!important;padding-left:1rem!important;}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-5{padding-right:3rem!important;padding-left:3rem!important;}.py-0{padding-top:0!important;padding-bottom:0!important;}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-0{padding-top:0!important;}.pt-1{padding-top:.25rem!important;}.pt-2{padding-top:.5rem!important;}.pt-3{padding-top:1rem!important;}.pt-4{padding-top:1.5rem!important;}.pt-5{padding-top:3rem!important;}.pe-0{padding-right:0!important;}.pe-1{padding-right:.25rem!important;}.pe-2{padding-right:.5rem!important;}.pe-3{padding-right:1rem!important;}.pe-4{padding-right:1.5rem!important;}.pe-5{padding-right:3rem!important;}.pb-0{padding-bottom:0!important;}.pb-1{padding-bottom:.25rem!important;}.pb-2{padding-bottom:.5rem!important;}.pb-3{padding-bottom:1rem!important;}.pb-4{padding-bottom:1.5rem!important;}.pb-5{padding-bottom:3rem!important;}.ps-0{padding-left:0!important;}.ps-1{padding-left:.25rem!important;}.ps-2{padding-left:.5rem!important;}.ps-3{padding-left:1rem!important;}.ps-4{padding-left:1.5rem!important;}.ps-5{padding-left:3rem!important;}.gap-0{gap:0!important;}.gap-1{gap:.25rem!important;}.gap-2{gap:.5rem!important;}.gap-3{gap:1rem!important;}.gap-4{gap:1.5rem!important;}.gap-5{gap:3rem!important;}.row-gap-0{row-gap:0!important;}.row-gap-1{row-gap:.25rem!important;}.row-gap-2{row-gap:.5rem!important;}.row-gap-3{row-gap:1rem!important;}.row-gap-4{row-gap:1.5rem!important;}.row-gap-5{row-gap:3rem!important;}.column-gap-0{column-gap:0!important;}.column-gap-1{column-gap:.25rem!important;}.column-gap-2{column-gap:.5rem!important;}.column-gap-3{column-gap:1rem!important;}.column-gap-4{column-gap:1.5rem!important;}.column-gap-5{column-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 + .9vw)!important;}.fs-3{font-size:calc(1.3rem + .6vw)!important;}.fs-4{font-size:calc(1.275rem + .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-lighter{font-weight:lighter!important;}.fw-light{font-weight:300!important;}.fw-normal{font-weight:400!important;}.fw-medium{font-weight:500!important;}.fw-semibold{font-weight:600!important;}.fw-bold{font-weight:700!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;}.text-break{word-wrap:break-word!important;word-break:break-word!important;}.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-accent{--bs-text-opacity:1;color:rgba(var(--bs-accent-rgb),var(--bs-text-opacity))!important;}.text-cinereous{--bs-text-opacity:1;color:rgba(var(--bs-cinereous-rgb),var(--bs-text-opacity))!important;}.text-verdigris{--bs-text-opacity:1;color:rgba(var(--bs-verdigris-rgb),var(--bs-text-opacity))!important;}.text-icterine{--bs-text-opacity:1;color:rgba(var(--bs-icterine-rgb),var(--bs-text-opacity))!important;}.text-mute{--bs-text-opacity:1;color:rgba(var(--bs-mute-rgb),var(--bs-text-opacity))!important;}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important;}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important;}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important;}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important;}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important;}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important;}.text-reset{--bs-text-opacity:1;color:inherit!important;}.text-opacity-25{--bs-text-opacity:.25;}.text-opacity-50{--bs-text-opacity:.5;}.text-opacity-75{--bs-text-opacity:.75;}.text-opacity-100{--bs-text-opacity:1;}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important;}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important;}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important;}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important;}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important;}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important;}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important;}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important;}.text-accent{color:#9cec5b!important;}.text-cinereous{color:#837569!important;}.text-verdigris{color:#50c5b7!important;}.text-icterine{color:#f0f465!important;}.text-mute{color:#6c757d!important;}.link-opacity-10{--bs-link-opacity:.1;}.link-opacity-10-hover:hover{--bs-link-opacity:.1;}.link-opacity-25{--bs-link-opacity:.25;}.link-opacity-25-hover:hover{--bs-link-opacity:.25;}.link-opacity-50{--bs-link-opacity:.5;}.link-opacity-50-hover:hover{--bs-link-opacity:.5;}.link-opacity-75{--bs-link-opacity:.75;}.link-opacity-75-hover:hover{--bs-link-opacity:.75;}.link-opacity-100{--bs-link-opacity:1;}.link-opacity-100-hover:hover{--bs-link-opacity:1;}.link-offset-1{text-underline-offset:.125em!important;}.link-offset-1-hover:hover{text-underline-offset:.125em!important;}.link-offset-2{text-underline-offset:.25em!important;}.link-offset-2-hover:hover{text-underline-offset:.25em!important;}.link-offset-3{text-underline-offset:.375em!important;}.link-offset-3-hover:hover{text-underline-offset:.375em!important;}.link-underline-primary{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;}.link-underline-secondary{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;}.link-underline-success{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;}.link-underline-info{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;}.link-underline-warning{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;}.link-underline-danger{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;}.link-underline-light{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;}.link-underline-dark{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;}.link-underline{--bs-link-underline-opacity:1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;}.link-underline-opacity-0{--bs-link-underline-opacity:0;}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0;}.link-underline-opacity-10{--bs-link-underline-opacity:.1;}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:.1;}.link-underline-opacity-25{--bs-link-underline-opacity:.25;}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:.25;}.link-underline-opacity-50{--bs-link-underline-opacity:.5;}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:.5;}.link-underline-opacity-75{--bs-link-underline-opacity:.75;}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:.75;}.link-underline-opacity-100{--bs-link-underline-opacity:1;}.link-underline-opacity-100-hover:hover{--bs-link-underline-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-accent{--bs-bg-opacity:1;background-color:rgba(var(--bs-accent-rgb),var(--bs-bg-opacity))!important;}.bg-cinereous{--bs-bg-opacity:1;background-color:rgba(var(--bs-cinereous-rgb),var(--bs-bg-opacity))!important;}.bg-verdigris{--bs-bg-opacity:1;background-color:rgba(var(--bs-verdigris-rgb),var(--bs-bg-opacity))!important;}.bg-icterine{--bs-bg-opacity:1;background-color:rgba(var(--bs-icterine-rgb),var(--bs-bg-opacity))!important;}.bg-mute{--bs-bg-opacity:1;background-color:rgba(var(--bs-mute-rgb),var(--bs-bg-opacity))!important;}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important;}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important;}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important;}.bg-opacity-10{--bs-bg-opacity:.1;}.bg-opacity-25{--bs-bg-opacity:.25;}.bg-opacity-50{--bs-bg-opacity:.5;}.bg-opacity-75{--bs-bg-opacity:.75;}.bg-opacity-100{--bs-bg-opacity:1;}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important;}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important;}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important;}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important;}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important;}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important;}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important;}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important;}.bg-accent{background-color:#9cec5b!important;}.bg-cinereous{background-color:#837569!important;}.bg-verdigris{background-color:#50c5b7!important;}.bg-icterine{background-color:#f0f465!important;}.bg-mute{background-color:#6c757d!important;}.bg-gradient{background-image:var(--bs-gradient)!important;}.user-select-all{user-select:all!important;}.user-select-auto{user-select:auto!important;}.user-select-none{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-xxl)!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-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important;}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important;}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important;}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important;}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important;}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important;}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important;}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important;}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important;}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important;}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important;}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important;}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important;}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important;}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important;}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important;}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important;}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important;}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important;}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important;}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important;}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important;}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important;}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important;}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important;}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important;}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important;}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important;}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important;}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important;}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important;}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important;}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important;}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important;}.visible{visibility:visible!important;}.invisible{visibility:hidden!important;}.z-n1{z-index:-1!important;}.z-0{z-index:0!important;}.z-1{z-index:1!important;}.z-2{z-index:2!important;}.z-3{z-index:3!important;}@media(min-width:576px){.float-sm-start{float:left!important;}.float-sm-end{float:right!important;}.float-sm-none{float:none!important;}.object-fit-sm-contain{object-fit:contain!important;}.object-fit-sm-cover{object-fit:cover!important;}.object-fit-sm-fill{object-fit:fill!important;}.object-fit-sm-scale{object-fit:scale-down!important;}.object-fit-sm-none{object-fit: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-inline-grid{display:inline-grid!important;}.d-sm-table{display:table!important;}.d-sm-table-row{display:table-row!important;}.d-sm-table-cell{display:table-cell!important;}.d-sm-flex{display:flex!important;}.d-sm-inline-flex{display:inline-flex!important;}.d-sm-none{display:none!important;}.flex-sm-fill{flex:1 1 auto!important;}.flex-sm-row{flex-direction:row!important;}.flex-sm-column{flex-direction:column!important;}.flex-sm-row-reverse{flex-direction:row-reverse!important;}.flex-sm-column-reverse{flex-direction:column-reverse!important;}.flex-sm-grow-0{flex-grow:0!important;}.flex-sm-grow-1{flex-grow:1!important;}.flex-sm-shrink-0{flex-shrink:0!important;}.flex-sm-shrink-1{flex-shrink:1!important;}.flex-sm-wrap{flex-wrap:wrap!important;}.flex-sm-nowrap{flex-wrap:nowrap!important;}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important;}.justify-content-sm-start{justify-content:flex-start!important;}.justify-content-sm-end{justify-content:flex-end!important;}.justify-content-sm-center{justify-content:center!important;}.justify-content-sm-between{justify-content:space-between!important;}.justify-content-sm-around{justify-content:space-around!important;}.justify-content-sm-evenly{justify-content:space-evenly!important;}.align-items-sm-start{align-items:flex-start!important;}.align-items-sm-end{align-items:flex-end!important;}.align-items-sm-center{align-items:center!important;}.align-items-sm-baseline{align-items:baseline!important;}.align-items-sm-stretch{align-items:stretch!important;}.align-content-sm-start{align-content:flex-start!important;}.align-content-sm-end{align-content:flex-end!important;}.align-content-sm-center{align-content:center!important;}.align-content-sm-between{align-content:space-between!important;}.align-content-sm-around{align-content:space-around!important;}.align-content-sm-stretch{align-content:stretch!important;}.align-self-sm-auto{align-self:auto!important;}.align-self-sm-start{align-self:flex-start!important;}.align-self-sm-end{align-self:flex-end!important;}.align-self-sm-center{align-self:center!important;}.align-self-sm-baseline{align-self:baseline!important;}.align-self-sm-stretch{align-self:stretch!important;}.order-sm-first{order:-1!important;}.order-sm-0{order:0!important;}.order-sm-1{order:1!important;}.order-sm-2{order:2!important;}.order-sm-3{order:3!important;}.order-sm-4{order:4!important;}.order-sm-5{order:5!important;}.order-sm-last{order:6!important;}.m-sm-0{margin:0!important;}.m-sm-1{margin:.25rem!important;}.m-sm-2{margin:.5rem!important;}.m-sm-3{margin:1rem!important;}.m-sm-4{margin:1.5rem!important;}.m-sm-5{margin:3rem!important;}.m-sm-auto{margin:auto!important;}.mx-sm-0{margin-right:0!important;margin-left:0!important;}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important;}.my-sm-0{margin-top:0!important;margin-bottom:0!important;}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-sm-0{margin-top:0!important;}.mt-sm-1{margin-top:.25rem!important;}.mt-sm-2{margin-top:.5rem!important;}.mt-sm-3{margin-top:1rem!important;}.mt-sm-4{margin-top:1.5rem!important;}.mt-sm-5{margin-top:3rem!important;}.mt-sm-auto{margin-top:auto!important;}.me-sm-0{margin-right:0!important;}.me-sm-1{margin-right:.25rem!important;}.me-sm-2{margin-right:.5rem!important;}.me-sm-3{margin-right:1rem!important;}.me-sm-4{margin-right:1.5rem!important;}.me-sm-5{margin-right:3rem!important;}.me-sm-auto{margin-right:auto!important;}.mb-sm-0{margin-bottom:0!important;}.mb-sm-1{margin-bottom:.25rem!important;}.mb-sm-2{margin-bottom:.5rem!important;}.mb-sm-3{margin-bottom:1rem!important;}.mb-sm-4{margin-bottom:1.5rem!important;}.mb-sm-5{margin-bottom:3rem!important;}.mb-sm-auto{margin-bottom:auto!important;}.ms-sm-0{margin-left:0!important;}.ms-sm-1{margin-left:.25rem!important;}.ms-sm-2{margin-left:.5rem!important;}.ms-sm-3{margin-left:1rem!important;}.ms-sm-4{margin-left:1.5rem!important;}.ms-sm-5{margin-left:3rem!important;}.ms-sm-auto{margin-left:auto!important;}.p-sm-0{padding:0!important;}.p-sm-1{padding:.25rem!important;}.p-sm-2{padding:.5rem!important;}.p-sm-3{padding:1rem!important;}.p-sm-4{padding:1.5rem!important;}.p-sm-5{padding:3rem!important;}.px-sm-0{padding-right:0!important;padding-left:0!important;}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important;}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important;}.py-sm-0{padding-top:0!important;padding-bottom:0!important;}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-sm-0{padding-top:0!important;}.pt-sm-1{padding-top:.25rem!important;}.pt-sm-2{padding-top:.5rem!important;}.pt-sm-3{padding-top:1rem!important;}.pt-sm-4{padding-top:1.5rem!important;}.pt-sm-5{padding-top:3rem!important;}.pe-sm-0{padding-right:0!important;}.pe-sm-1{padding-right:.25rem!important;}.pe-sm-2{padding-right:.5rem!important;}.pe-sm-3{padding-right:1rem!important;}.pe-sm-4{padding-right:1.5rem!important;}.pe-sm-5{padding-right:3rem!important;}.pb-sm-0{padding-bottom:0!important;}.pb-sm-1{padding-bottom:.25rem!important;}.pb-sm-2{padding-bottom:.5rem!important;}.pb-sm-3{padding-bottom:1rem!important;}.pb-sm-4{padding-bottom:1.5rem!important;}.pb-sm-5{padding-bottom:3rem!important;}.ps-sm-0{padding-left:0!important;}.ps-sm-1{padding-left:.25rem!important;}.ps-sm-2{padding-left:.5rem!important;}.ps-sm-3{padding-left:1rem!important;}.ps-sm-4{padding-left:1.5rem!important;}.ps-sm-5{padding-left:3rem!important;}.gap-sm-0{gap:0!important;}.gap-sm-1{gap:.25rem!important;}.gap-sm-2{gap:.5rem!important;}.gap-sm-3{gap:1rem!important;}.gap-sm-4{gap:1.5rem!important;}.gap-sm-5{gap:3rem!important;}.row-gap-sm-0{row-gap:0!important;}.row-gap-sm-1{row-gap:.25rem!important;}.row-gap-sm-2{row-gap:.5rem!important;}.row-gap-sm-3{row-gap:1rem!important;}.row-gap-sm-4{row-gap:1.5rem!important;}.row-gap-sm-5{row-gap:3rem!important;}.column-gap-sm-0{column-gap:0!important;}.column-gap-sm-1{column-gap:.25rem!important;}.column-gap-sm-2{column-gap:.5rem!important;}.column-gap-sm-3{column-gap:1rem!important;}.column-gap-sm-4{column-gap:1.5rem!important;}.column-gap-sm-5{column-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;}.object-fit-md-contain{object-fit:contain!important;}.object-fit-md-cover{object-fit:cover!important;}.object-fit-md-fill{object-fit:fill!important;}.object-fit-md-scale{object-fit:scale-down!important;}.object-fit-md-none{object-fit: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-inline-grid{display:inline-grid!important;}.d-md-table{display:table!important;}.d-md-table-row{display:table-row!important;}.d-md-table-cell{display:table-cell!important;}.d-md-flex{display:flex!important;}.d-md-inline-flex{display:inline-flex!important;}.d-md-none{display:none!important;}.flex-md-fill{flex:1 1 auto!important;}.flex-md-row{flex-direction:row!important;}.flex-md-column{flex-direction:column!important;}.flex-md-row-reverse{flex-direction:row-reverse!important;}.flex-md-column-reverse{flex-direction:column-reverse!important;}.flex-md-grow-0{flex-grow:0!important;}.flex-md-grow-1{flex-grow:1!important;}.flex-md-shrink-0{flex-shrink:0!important;}.flex-md-shrink-1{flex-shrink:1!important;}.flex-md-wrap{flex-wrap:wrap!important;}.flex-md-nowrap{flex-wrap:nowrap!important;}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important;}.justify-content-md-start{justify-content:flex-start!important;}.justify-content-md-end{justify-content:flex-end!important;}.justify-content-md-center{justify-content:center!important;}.justify-content-md-between{justify-content:space-between!important;}.justify-content-md-around{justify-content:space-around!important;}.justify-content-md-evenly{justify-content:space-evenly!important;}.align-items-md-start{align-items:flex-start!important;}.align-items-md-end{align-items:flex-end!important;}.align-items-md-center{align-items:center!important;}.align-items-md-baseline{align-items:baseline!important;}.align-items-md-stretch{align-items:stretch!important;}.align-content-md-start{align-content:flex-start!important;}.align-content-md-end{align-content:flex-end!important;}.align-content-md-center{align-content:center!important;}.align-content-md-between{align-content:space-between!important;}.align-content-md-around{align-content:space-around!important;}.align-content-md-stretch{align-content:stretch!important;}.align-self-md-auto{align-self:auto!important;}.align-self-md-start{align-self:flex-start!important;}.align-self-md-end{align-self:flex-end!important;}.align-self-md-center{align-self:center!important;}.align-self-md-baseline{align-self:baseline!important;}.align-self-md-stretch{align-self:stretch!important;}.order-md-first{order:-1!important;}.order-md-0{order:0!important;}.order-md-1{order:1!important;}.order-md-2{order:2!important;}.order-md-3{order:3!important;}.order-md-4{order:4!important;}.order-md-5{order:5!important;}.order-md-last{order:6!important;}.m-md-0{margin:0!important;}.m-md-1{margin:.25rem!important;}.m-md-2{margin:.5rem!important;}.m-md-3{margin:1rem!important;}.m-md-4{margin:1.5rem!important;}.m-md-5{margin:3rem!important;}.m-md-auto{margin:auto!important;}.mx-md-0{margin-right:0!important;margin-left:0!important;}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-md-auto{margin-right:auto!important;margin-left:auto!important;}.my-md-0{margin-top:0!important;margin-bottom:0!important;}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-md-0{margin-top:0!important;}.mt-md-1{margin-top:.25rem!important;}.mt-md-2{margin-top:.5rem!important;}.mt-md-3{margin-top:1rem!important;}.mt-md-4{margin-top:1.5rem!important;}.mt-md-5{margin-top:3rem!important;}.mt-md-auto{margin-top:auto!important;}.me-md-0{margin-right:0!important;}.me-md-1{margin-right:.25rem!important;}.me-md-2{margin-right:.5rem!important;}.me-md-3{margin-right:1rem!important;}.me-md-4{margin-right:1.5rem!important;}.me-md-5{margin-right:3rem!important;}.me-md-auto{margin-right:auto!important;}.mb-md-0{margin-bottom:0!important;}.mb-md-1{margin-bottom:.25rem!important;}.mb-md-2{margin-bottom:.5rem!important;}.mb-md-3{margin-bottom:1rem!important;}.mb-md-4{margin-bottom:1.5rem!important;}.mb-md-5{margin-bottom:3rem!important;}.mb-md-auto{margin-bottom:auto!important;}.ms-md-0{margin-left:0!important;}.ms-md-1{margin-left:.25rem!important;}.ms-md-2{margin-left:.5rem!important;}.ms-md-3{margin-left:1rem!important;}.ms-md-4{margin-left:1.5rem!important;}.ms-md-5{margin-left:3rem!important;}.ms-md-auto{margin-left:auto!important;}.p-md-0{padding:0!important;}.p-md-1{padding:.25rem!important;}.p-md-2{padding:.5rem!important;}.p-md-3{padding:1rem!important;}.p-md-4{padding:1.5rem!important;}.p-md-5{padding:3rem!important;}.px-md-0{padding-right:0!important;padding-left:0!important;}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-md-3{padding-right:1rem!important;padding-left:1rem!important;}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-md-5{padding-right:3rem!important;padding-left:3rem!important;}.py-md-0{padding-top:0!important;padding-bottom:0!important;}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-md-0{padding-top:0!important;}.pt-md-1{padding-top:.25rem!important;}.pt-md-2{padding-top:.5rem!important;}.pt-md-3{padding-top:1rem!important;}.pt-md-4{padding-top:1.5rem!important;}.pt-md-5{padding-top:3rem!important;}.pe-md-0{padding-right:0!important;}.pe-md-1{padding-right:.25rem!important;}.pe-md-2{padding-right:.5rem!important;}.pe-md-3{padding-right:1rem!important;}.pe-md-4{padding-right:1.5rem!important;}.pe-md-5{padding-right:3rem!important;}.pb-md-0{padding-bottom:0!important;}.pb-md-1{padding-bottom:.25rem!important;}.pb-md-2{padding-bottom:.5rem!important;}.pb-md-3{padding-bottom:1rem!important;}.pb-md-4{padding-bottom:1.5rem!important;}.pb-md-5{padding-bottom:3rem!important;}.ps-md-0{padding-left:0!important;}.ps-md-1{padding-left:.25rem!important;}.ps-md-2{padding-left:.5rem!important;}.ps-md-3{padding-left:1rem!important;}.ps-md-4{padding-left:1.5rem!important;}.ps-md-5{padding-left:3rem!important;}.gap-md-0{gap:0!important;}.gap-md-1{gap:.25rem!important;}.gap-md-2{gap:.5rem!important;}.gap-md-3{gap:1rem!important;}.gap-md-4{gap:1.5rem!important;}.gap-md-5{gap:3rem!important;}.row-gap-md-0{row-gap:0!important;}.row-gap-md-1{row-gap:.25rem!important;}.row-gap-md-2{row-gap:.5rem!important;}.row-gap-md-3{row-gap:1rem!important;}.row-gap-md-4{row-gap:1.5rem!important;}.row-gap-md-5{row-gap:3rem!important;}.column-gap-md-0{column-gap:0!important;}.column-gap-md-1{column-gap:.25rem!important;}.column-gap-md-2{column-gap:.5rem!important;}.column-gap-md-3{column-gap:1rem!important;}.column-gap-md-4{column-gap:1.5rem!important;}.column-gap-md-5{column-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;}.object-fit-lg-contain{object-fit:contain!important;}.object-fit-lg-cover{object-fit:cover!important;}.object-fit-lg-fill{object-fit:fill!important;}.object-fit-lg-scale{object-fit:scale-down!important;}.object-fit-lg-none{object-fit: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-inline-grid{display:inline-grid!important;}.d-lg-table{display:table!important;}.d-lg-table-row{display:table-row!important;}.d-lg-table-cell{display:table-cell!important;}.d-lg-flex{display:flex!important;}.d-lg-inline-flex{display:inline-flex!important;}.d-lg-none{display:none!important;}.flex-lg-fill{flex:1 1 auto!important;}.flex-lg-row{flex-direction:row!important;}.flex-lg-column{flex-direction:column!important;}.flex-lg-row-reverse{flex-direction:row-reverse!important;}.flex-lg-column-reverse{flex-direction:column-reverse!important;}.flex-lg-grow-0{flex-grow:0!important;}.flex-lg-grow-1{flex-grow:1!important;}.flex-lg-shrink-0{flex-shrink:0!important;}.flex-lg-shrink-1{flex-shrink:1!important;}.flex-lg-wrap{flex-wrap:wrap!important;}.flex-lg-nowrap{flex-wrap:nowrap!important;}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important;}.justify-content-lg-start{justify-content:flex-start!important;}.justify-content-lg-end{justify-content:flex-end!important;}.justify-content-lg-center{justify-content:center!important;}.justify-content-lg-between{justify-content:space-between!important;}.justify-content-lg-around{justify-content:space-around!important;}.justify-content-lg-evenly{justify-content:space-evenly!important;}.align-items-lg-start{align-items:flex-start!important;}.align-items-lg-end{align-items:flex-end!important;}.align-items-lg-center{align-items:center!important;}.align-items-lg-baseline{align-items:baseline!important;}.align-items-lg-stretch{align-items:stretch!important;}.align-content-lg-start{align-content:flex-start!important;}.align-content-lg-end{align-content:flex-end!important;}.align-content-lg-center{align-content:center!important;}.align-content-lg-between{align-content:space-between!important;}.align-content-lg-around{align-content:space-around!important;}.align-content-lg-stretch{align-content:stretch!important;}.align-self-lg-auto{align-self:auto!important;}.align-self-lg-start{align-self:flex-start!important;}.align-self-lg-end{align-self:flex-end!important;}.align-self-lg-center{align-self:center!important;}.align-self-lg-baseline{align-self:baseline!important;}.align-self-lg-stretch{align-self:stretch!important;}.order-lg-first{order:-1!important;}.order-lg-0{order:0!important;}.order-lg-1{order:1!important;}.order-lg-2{order:2!important;}.order-lg-3{order:3!important;}.order-lg-4{order:4!important;}.order-lg-5{order:5!important;}.order-lg-last{order:6!important;}.m-lg-0{margin:0!important;}.m-lg-1{margin:.25rem!important;}.m-lg-2{margin:.5rem!important;}.m-lg-3{margin:1rem!important;}.m-lg-4{margin:1.5rem!important;}.m-lg-5{margin:3rem!important;}.m-lg-auto{margin:auto!important;}.mx-lg-0{margin-right:0!important;margin-left:0!important;}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important;}.my-lg-0{margin-top:0!important;margin-bottom:0!important;}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-lg-0{margin-top:0!important;}.mt-lg-1{margin-top:.25rem!important;}.mt-lg-2{margin-top:.5rem!important;}.mt-lg-3{margin-top:1rem!important;}.mt-lg-4{margin-top:1.5rem!important;}.mt-lg-5{margin-top:3rem!important;}.mt-lg-auto{margin-top:auto!important;}.me-lg-0{margin-right:0!important;}.me-lg-1{margin-right:.25rem!important;}.me-lg-2{margin-right:.5rem!important;}.me-lg-3{margin-right:1rem!important;}.me-lg-4{margin-right:1.5rem!important;}.me-lg-5{margin-right:3rem!important;}.me-lg-auto{margin-right:auto!important;}.mb-lg-0{margin-bottom:0!important;}.mb-lg-1{margin-bottom:.25rem!important;}.mb-lg-2{margin-bottom:.5rem!important;}.mb-lg-3{margin-bottom:1rem!important;}.mb-lg-4{margin-bottom:1.5rem!important;}.mb-lg-5{margin-bottom:3rem!important;}.mb-lg-auto{margin-bottom:auto!important;}.ms-lg-0{margin-left:0!important;}.ms-lg-1{margin-left:.25rem!important;}.ms-lg-2{margin-left:.5rem!important;}.ms-lg-3{margin-left:1rem!important;}.ms-lg-4{margin-left:1.5rem!important;}.ms-lg-5{margin-left:3rem!important;}.ms-lg-auto{margin-left:auto!important;}.p-lg-0{padding:0!important;}.p-lg-1{padding:.25rem!important;}.p-lg-2{padding:.5rem!important;}.p-lg-3{padding:1rem!important;}.p-lg-4{padding:1.5rem!important;}.p-lg-5{padding:3rem!important;}.px-lg-0{padding-right:0!important;padding-left:0!important;}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important;}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important;}.py-lg-0{padding-top:0!important;padding-bottom:0!important;}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-lg-0{padding-top:0!important;}.pt-lg-1{padding-top:.25rem!important;}.pt-lg-2{padding-top:.5rem!important;}.pt-lg-3{padding-top:1rem!important;}.pt-lg-4{padding-top:1.5rem!important;}.pt-lg-5{padding-top:3rem!important;}.pe-lg-0{padding-right:0!important;}.pe-lg-1{padding-right:.25rem!important;}.pe-lg-2{padding-right:.5rem!important;}.pe-lg-3{padding-right:1rem!important;}.pe-lg-4{padding-right:1.5rem!important;}.pe-lg-5{padding-right:3rem!important;}.pb-lg-0{padding-bottom:0!important;}.pb-lg-1{padding-bottom:.25rem!important;}.pb-lg-2{padding-bottom:.5rem!important;}.pb-lg-3{padding-bottom:1rem!important;}.pb-lg-4{padding-bottom:1.5rem!important;}.pb-lg-5{padding-bottom:3rem!important;}.ps-lg-0{padding-left:0!important;}.ps-lg-1{padding-left:.25rem!important;}.ps-lg-2{padding-left:.5rem!important;}.ps-lg-3{padding-left:1rem!important;}.ps-lg-4{padding-left:1.5rem!important;}.ps-lg-5{padding-left:3rem!important;}.gap-lg-0{gap:0!important;}.gap-lg-1{gap:.25rem!important;}.gap-lg-2{gap:.5rem!important;}.gap-lg-3{gap:1rem!important;}.gap-lg-4{gap:1.5rem!important;}.gap-lg-5{gap:3rem!important;}.row-gap-lg-0{row-gap:0!important;}.row-gap-lg-1{row-gap:.25rem!important;}.row-gap-lg-2{row-gap:.5rem!important;}.row-gap-lg-3{row-gap:1rem!important;}.row-gap-lg-4{row-gap:1.5rem!important;}.row-gap-lg-5{row-gap:3rem!important;}.column-gap-lg-0{column-gap:0!important;}.column-gap-lg-1{column-gap:.25rem!important;}.column-gap-lg-2{column-gap:.5rem!important;}.column-gap-lg-3{column-gap:1rem!important;}.column-gap-lg-4{column-gap:1.5rem!important;}.column-gap-lg-5{column-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;}.object-fit-xl-contain{object-fit:contain!important;}.object-fit-xl-cover{object-fit:cover!important;}.object-fit-xl-fill{object-fit:fill!important;}.object-fit-xl-scale{object-fit:scale-down!important;}.object-fit-xl-none{object-fit: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-inline-grid{display:inline-grid!important;}.d-xl-table{display:table!important;}.d-xl-table-row{display:table-row!important;}.d-xl-table-cell{display:table-cell!important;}.d-xl-flex{display:flex!important;}.d-xl-inline-flex{display:inline-flex!important;}.d-xl-none{display:none!important;}.flex-xl-fill{flex:1 1 auto!important;}.flex-xl-row{flex-direction:row!important;}.flex-xl-column{flex-direction:column!important;}.flex-xl-row-reverse{flex-direction:row-reverse!important;}.flex-xl-column-reverse{flex-direction:column-reverse!important;}.flex-xl-grow-0{flex-grow:0!important;}.flex-xl-grow-1{flex-grow:1!important;}.flex-xl-shrink-0{flex-shrink:0!important;}.flex-xl-shrink-1{flex-shrink:1!important;}.flex-xl-wrap{flex-wrap:wrap!important;}.flex-xl-nowrap{flex-wrap:nowrap!important;}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important;}.justify-content-xl-start{justify-content:flex-start!important;}.justify-content-xl-end{justify-content:flex-end!important;}.justify-content-xl-center{justify-content:center!important;}.justify-content-xl-between{justify-content:space-between!important;}.justify-content-xl-around{justify-content:space-around!important;}.justify-content-xl-evenly{justify-content:space-evenly!important;}.align-items-xl-start{align-items:flex-start!important;}.align-items-xl-end{align-items:flex-end!important;}.align-items-xl-center{align-items:center!important;}.align-items-xl-baseline{align-items:baseline!important;}.align-items-xl-stretch{align-items:stretch!important;}.align-content-xl-start{align-content:flex-start!important;}.align-content-xl-end{align-content:flex-end!important;}.align-content-xl-center{align-content:center!important;}.align-content-xl-between{align-content:space-between!important;}.align-content-xl-around{align-content:space-around!important;}.align-content-xl-stretch{align-content:stretch!important;}.align-self-xl-auto{align-self:auto!important;}.align-self-xl-start{align-self:flex-start!important;}.align-self-xl-end{align-self:flex-end!important;}.align-self-xl-center{align-self:center!important;}.align-self-xl-baseline{align-self:baseline!important;}.align-self-xl-stretch{align-self:stretch!important;}.order-xl-first{order:-1!important;}.order-xl-0{order:0!important;}.order-xl-1{order:1!important;}.order-xl-2{order:2!important;}.order-xl-3{order:3!important;}.order-xl-4{order:4!important;}.order-xl-5{order:5!important;}.order-xl-last{order:6!important;}.m-xl-0{margin:0!important;}.m-xl-1{margin:.25rem!important;}.m-xl-2{margin:.5rem!important;}.m-xl-3{margin:1rem!important;}.m-xl-4{margin:1.5rem!important;}.m-xl-5{margin:3rem!important;}.m-xl-auto{margin:auto!important;}.mx-xl-0{margin-right:0!important;margin-left:0!important;}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important;}.my-xl-0{margin-top:0!important;margin-bottom:0!important;}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-xl-0{margin-top:0!important;}.mt-xl-1{margin-top:.25rem!important;}.mt-xl-2{margin-top:.5rem!important;}.mt-xl-3{margin-top:1rem!important;}.mt-xl-4{margin-top:1.5rem!important;}.mt-xl-5{margin-top:3rem!important;}.mt-xl-auto{margin-top:auto!important;}.me-xl-0{margin-right:0!important;}.me-xl-1{margin-right:.25rem!important;}.me-xl-2{margin-right:.5rem!important;}.me-xl-3{margin-right:1rem!important;}.me-xl-4{margin-right:1.5rem!important;}.me-xl-5{margin-right:3rem!important;}.me-xl-auto{margin-right:auto!important;}.mb-xl-0{margin-bottom:0!important;}.mb-xl-1{margin-bottom:.25rem!important;}.mb-xl-2{margin-bottom:.5rem!important;}.mb-xl-3{margin-bottom:1rem!important;}.mb-xl-4{margin-bottom:1.5rem!important;}.mb-xl-5{margin-bottom:3rem!important;}.mb-xl-auto{margin-bottom:auto!important;}.ms-xl-0{margin-left:0!important;}.ms-xl-1{margin-left:.25rem!important;}.ms-xl-2{margin-left:.5rem!important;}.ms-xl-3{margin-left:1rem!important;}.ms-xl-4{margin-left:1.5rem!important;}.ms-xl-5{margin-left:3rem!important;}.ms-xl-auto{margin-left:auto!important;}.p-xl-0{padding:0!important;}.p-xl-1{padding:.25rem!important;}.p-xl-2{padding:.5rem!important;}.p-xl-3{padding:1rem!important;}.p-xl-4{padding:1.5rem!important;}.p-xl-5{padding:3rem!important;}.px-xl-0{padding-right:0!important;padding-left:0!important;}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important;}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important;}.py-xl-0{padding-top:0!important;padding-bottom:0!important;}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-xl-0{padding-top:0!important;}.pt-xl-1{padding-top:.25rem!important;}.pt-xl-2{padding-top:.5rem!important;}.pt-xl-3{padding-top:1rem!important;}.pt-xl-4{padding-top:1.5rem!important;}.pt-xl-5{padding-top:3rem!important;}.pe-xl-0{padding-right:0!important;}.pe-xl-1{padding-right:.25rem!important;}.pe-xl-2{padding-right:.5rem!important;}.pe-xl-3{padding-right:1rem!important;}.pe-xl-4{padding-right:1.5rem!important;}.pe-xl-5{padding-right:3rem!important;}.pb-xl-0{padding-bottom:0!important;}.pb-xl-1{padding-bottom:.25rem!important;}.pb-xl-2{padding-bottom:.5rem!important;}.pb-xl-3{padding-bottom:1rem!important;}.pb-xl-4{padding-bottom:1.5rem!important;}.pb-xl-5{padding-bottom:3rem!important;}.ps-xl-0{padding-left:0!important;}.ps-xl-1{padding-left:.25rem!important;}.ps-xl-2{padding-left:.5rem!important;}.ps-xl-3{padding-left:1rem!important;}.ps-xl-4{padding-left:1.5rem!important;}.ps-xl-5{padding-left:3rem!important;}.gap-xl-0{gap:0!important;}.gap-xl-1{gap:.25rem!important;}.gap-xl-2{gap:.5rem!important;}.gap-xl-3{gap:1rem!important;}.gap-xl-4{gap:1.5rem!important;}.gap-xl-5{gap:3rem!important;}.row-gap-xl-0{row-gap:0!important;}.row-gap-xl-1{row-gap:.25rem!important;}.row-gap-xl-2{row-gap:.5rem!important;}.row-gap-xl-3{row-gap:1rem!important;}.row-gap-xl-4{row-gap:1.5rem!important;}.row-gap-xl-5{row-gap:3rem!important;}.column-gap-xl-0{column-gap:0!important;}.column-gap-xl-1{column-gap:.25rem!important;}.column-gap-xl-2{column-gap:.5rem!important;}.column-gap-xl-3{column-gap:1rem!important;}.column-gap-xl-4{column-gap:1.5rem!important;}.column-gap-xl-5{column-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;}.object-fit-xxl-contain{object-fit:contain!important;}.object-fit-xxl-cover{object-fit:cover!important;}.object-fit-xxl-fill{object-fit:fill!important;}.object-fit-xxl-scale{object-fit:scale-down!important;}.object-fit-xxl-none{object-fit: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-inline-grid{display:inline-grid!important;}.d-xxl-table{display:table!important;}.d-xxl-table-row{display:table-row!important;}.d-xxl-table-cell{display:table-cell!important;}.d-xxl-flex{display:flex!important;}.d-xxl-inline-flex{display:inline-flex!important;}.d-xxl-none{display:none!important;}.flex-xxl-fill{flex:1 1 auto!important;}.flex-xxl-row{flex-direction:row!important;}.flex-xxl-column{flex-direction:column!important;}.flex-xxl-row-reverse{flex-direction:row-reverse!important;}.flex-xxl-column-reverse{flex-direction:column-reverse!important;}.flex-xxl-grow-0{flex-grow:0!important;}.flex-xxl-grow-1{flex-grow:1!important;}.flex-xxl-shrink-0{flex-shrink:0!important;}.flex-xxl-shrink-1{flex-shrink:1!important;}.flex-xxl-wrap{flex-wrap:wrap!important;}.flex-xxl-nowrap{flex-wrap:nowrap!important;}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important;}.justify-content-xxl-start{justify-content:flex-start!important;}.justify-content-xxl-end{justify-content:flex-end!important;}.justify-content-xxl-center{justify-content:center!important;}.justify-content-xxl-between{justify-content:space-between!important;}.justify-content-xxl-around{justify-content:space-around!important;}.justify-content-xxl-evenly{justify-content:space-evenly!important;}.align-items-xxl-start{align-items:flex-start!important;}.align-items-xxl-end{align-items:flex-end!important;}.align-items-xxl-center{align-items:center!important;}.align-items-xxl-baseline{align-items:baseline!important;}.align-items-xxl-stretch{align-items:stretch!important;}.align-content-xxl-start{align-content:flex-start!important;}.align-content-xxl-end{align-content:flex-end!important;}.align-content-xxl-center{align-content:center!important;}.align-content-xxl-between{align-content:space-between!important;}.align-content-xxl-around{align-content:space-around!important;}.align-content-xxl-stretch{align-content:stretch!important;}.align-self-xxl-auto{align-self:auto!important;}.align-self-xxl-start{align-self:flex-start!important;}.align-self-xxl-end{align-self:flex-end!important;}.align-self-xxl-center{align-self:center!important;}.align-self-xxl-baseline{align-self:baseline!important;}.align-self-xxl-stretch{align-self:stretch!important;}.order-xxl-first{order:-1!important;}.order-xxl-0{order:0!important;}.order-xxl-1{order:1!important;}.order-xxl-2{order:2!important;}.order-xxl-3{order:3!important;}.order-xxl-4{order:4!important;}.order-xxl-5{order:5!important;}.order-xxl-last{order:6!important;}.m-xxl-0{margin:0!important;}.m-xxl-1{margin:.25rem!important;}.m-xxl-2{margin:.5rem!important;}.m-xxl-3{margin:1rem!important;}.m-xxl-4{margin:1.5rem!important;}.m-xxl-5{margin:3rem!important;}.m-xxl-auto{margin:auto!important;}.mx-xxl-0{margin-right:0!important;margin-left:0!important;}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important;}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important;}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important;}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important;}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important;}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important;}.my-xxl-0{margin-top:0!important;margin-bottom:0!important;}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important;}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important;}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important;}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important;}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important;}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important;}.mt-xxl-0{margin-top:0!important;}.mt-xxl-1{margin-top:.25rem!important;}.mt-xxl-2{margin-top:.5rem!important;}.mt-xxl-3{margin-top:1rem!important;}.mt-xxl-4{margin-top:1.5rem!important;}.mt-xxl-5{margin-top:3rem!important;}.mt-xxl-auto{margin-top:auto!important;}.me-xxl-0{margin-right:0!important;}.me-xxl-1{margin-right:.25rem!important;}.me-xxl-2{margin-right:.5rem!important;}.me-xxl-3{margin-right:1rem!important;}.me-xxl-4{margin-right:1.5rem!important;}.me-xxl-5{margin-right:3rem!important;}.me-xxl-auto{margin-right:auto!important;}.mb-xxl-0{margin-bottom:0!important;}.mb-xxl-1{margin-bottom:.25rem!important;}.mb-xxl-2{margin-bottom:.5rem!important;}.mb-xxl-3{margin-bottom:1rem!important;}.mb-xxl-4{margin-bottom:1.5rem!important;}.mb-xxl-5{margin-bottom:3rem!important;}.mb-xxl-auto{margin-bottom:auto!important;}.ms-xxl-0{margin-left:0!important;}.ms-xxl-1{margin-left:.25rem!important;}.ms-xxl-2{margin-left:.5rem!important;}.ms-xxl-3{margin-left:1rem!important;}.ms-xxl-4{margin-left:1.5rem!important;}.ms-xxl-5{margin-left:3rem!important;}.ms-xxl-auto{margin-left:auto!important;}.p-xxl-0{padding:0!important;}.p-xxl-1{padding:.25rem!important;}.p-xxl-2{padding:.5rem!important;}.p-xxl-3{padding:1rem!important;}.p-xxl-4{padding:1.5rem!important;}.p-xxl-5{padding:3rem!important;}.px-xxl-0{padding-right:0!important;padding-left:0!important;}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important;}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important;}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important;}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important;}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important;}.py-xxl-0{padding-top:0!important;padding-bottom:0!important;}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important;}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important;}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important;}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important;}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important;}.pt-xxl-0{padding-top:0!important;}.pt-xxl-1{padding-top:.25rem!important;}.pt-xxl-2{padding-top:.5rem!important;}.pt-xxl-3{padding-top:1rem!important;}.pt-xxl-4{padding-top:1.5rem!important;}.pt-xxl-5{padding-top:3rem!important;}.pe-xxl-0{padding-right:0!important;}.pe-xxl-1{padding-right:.25rem!important;}.pe-xxl-2{padding-right:.5rem!important;}.pe-xxl-3{padding-right:1rem!important;}.pe-xxl-4{padding-right:1.5rem!important;}.pe-xxl-5{padding-right:3rem!important;}.pb-xxl-0{padding-bottom:0!important;}.pb-xxl-1{padding-bottom:.25rem!important;}.pb-xxl-2{padding-bottom:.5rem!important;}.pb-xxl-3{padding-bottom:1rem!important;}.pb-xxl-4{padding-bottom:1.5rem!important;}.pb-xxl-5{padding-bottom:3rem!important;}.ps-xxl-0{padding-left:0!important;}.ps-xxl-1{padding-left:.25rem!important;}.ps-xxl-2{padding-left:.5rem!important;}.ps-xxl-3{padding-left:1rem!important;}.ps-xxl-4{padding-left:1.5rem!important;}.ps-xxl-5{padding-left:3rem!important;}.gap-xxl-0{gap:0!important;}.gap-xxl-1{gap:.25rem!important;}.gap-xxl-2{gap:.5rem!important;}.gap-xxl-3{gap:1rem!important;}.gap-xxl-4{gap:1.5rem!important;}.gap-xxl-5{gap:3rem!important;}.row-gap-xxl-0{row-gap:0!important;}.row-gap-xxl-1{row-gap:.25rem!important;}.row-gap-xxl-2{row-gap:.5rem!important;}.row-gap-xxl-3{row-gap:1rem!important;}.row-gap-xxl-4{row-gap:1.5rem!important;}.row-gap-xxl-5{row-gap:3rem!important;}.column-gap-xxl-0{column-gap:0!important;}.column-gap-xxl-1{column-gap:.25rem!important;}.column-gap-xxl-2{column-gap:.5rem!important;}.column-gap-xxl-3{column-gap:1rem!important;}.column-gap-xxl-4{column-gap:1.5rem!important;}.column-gap-xxl-5{column-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-inline-grid{display:inline-grid!important;}.d-print-table{display:table!important;}.d-print-table-row{display:table-row!important;}.d-print-table-cell{display:table-cell!important;}.d-print-flex{display:flex!important;}.d-print-inline-flex{display:inline-flex!important;}.d-print-none{display:none!important;}}:root{--bs-gray-100-rgb:248,249,250;--bs-gray-200-rgb:233,236,239;--bs-gray-300-rgb:222,226,230;--bs-gray-400-rgb:206,212,218;--bs-gray-500-rgb:173,181,189;--bs-gray-600-rgb:108,117,125;--bs-gray-700-rgb:73,80,87;--bs-gray-800-rgb:52,58,64;--bs-gray-900-rgb:33,37,41;--scroll-size:8px;--scroll-radius:0px;--scroll-track:var(--bs-light);--scroll-thumb-color:var(--bs-primary);--bb-offcanvas-horizontal-width-lg:768px!important;}.btn-xsm,.btn-group-xsm>.btn{--bs-btn-padding-y:.2rem;--bs-btn-padding-x:.3rem;--bs-btn-font-size:.7rem;--bs-btn-border-radius:.25rem;}.loading-container{width:100%;height:100%;display:flex;align-content:center;justify-content:center;align-items:center;flex-direction:column;}.loading-container .svg-container{width:8rem;height:8rem;display:flex;align-content:center;justify-content:center;align-items:center;}.loading-container .loading-progress{position:absolute;display:block;width:8rem;height:8rem;}.loading-container .loading-progress circle{fill:none;stroke:#6f42c1;stroke-width:.2rem;transform-origin:50% 50%;transform:rotate(-90deg);}.loading-container .loading-progress circle:last-child{stroke:#8c68cd;stroke-dasharray:calc(3.141*var(--blazor-load-percentage,0%)*.8),500%;transition:stroke-dasharray .05s ease-in-out;}.loading-container .loading-logo{position:absolute;fill:#8c68cd;height:70px;}.loading-container .loading-progress-text{font-weight:bold;}.loading-container .loading-progress-text:after{content:var(--blazor-load-percentage-text,"Loading");}::-webkit-scrollbar{width:4px;height:4px;}::-webkit-scrollbar-button{width:0;height:0;}::-webkit-scrollbar-thumb{background:#7d59bd;border:0 none #fff;border-radius:.375rem;}::-webkit-scrollbar-thumb:hover{background:#8c68cd;}::-webkit-scrollbar-thumb:active{background:#8c68cd;}::-webkit-scrollbar-track{background:#212529;border:0 none #fff;border-radius:.375rem;}::-webkit-scrollbar-track:hover{background:#1a1d20;}::-webkit-scrollbar-track:active{background:#1a1d20;}::-webkit-scrollbar-corner{background:transparent;}.table-container{max-height:100%;overflow-y:scroll;flex-grow:1;position:relative;}.table-container .loading{position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;background:rgba(var(--bs-gray-900-rgb),.3);display:flex;align-items:center;justify-content:center;}.sticky-header{position:sticky;top:0;background-color:var(--bs-body-bg)!important;}tr{height:61px;max-height:61px;}td{vertical-align:middle;}.contained{display:-webkit-box;max-height:calc(61px - 1rem);-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;}@-webkit-keyframes moving-gradient{0%{background-position:-250px 0;}100%{background-position:250px 0;}}tr.row-placeholder td::after{content:" ";display:block;height:12px;background:linear-gradient(to right,rgba(var(--bs-body-color-rgb),.3) 20%,rgba(var(--bs-secondary-bg-rgb),.7) 50%,rgba(var(--bs-body-color-rgb),.3) 80%);background-size:500px 100px;animation-name:moving-gradient;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear;animation-fill-mode:forwards;}.monaco-normal{height:500px!important;}.monaco-small{height:300px!important;}.monaco-extra-small{height:100px!important;}.graph-container{display:flex;flex-direction:column;}.graph-container .graph-controls{display:flex;justify-content:flex-end;gap:1rem;padding-right:1rem;}.graph-container .graph-controls .btn{--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,.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none;color:var(--bs-btn-color);fill:var(--bs-btn-color);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);}.graph-container .graph-controls .btn:hover{color:var(--bs-btn-hover-color);fill:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);}.node rect,.node circle,.node ellipse{stroke:#6c757d;fill:#1a1d20;stroke-width:1px;}.end-node circle{stroke-width:3px;}.horizontal-collapse{border-right:1px solid var(--bs-dark-bg-subtle);overflow:scroll;}.horizontal-collapse:nth-last-child(1){border:0;}.horizontal-collapse .title{bottom:1px solid var(--bs-dark-bg-subtle);display:flex;gap:.5rem;}.horizontal-collapse .title i{margin-left:auto;}.horizontal-collapse.collapsed{overflow:hidden;}.horizontal-collapse.collapsed .title{width:22px;height:100%;flex-direction:column;}.horizontal-collapse.collapsed .title .label{display:block;transform:rotate(90deg) translate(3px);transform-origin:center;}.horizontal-collapse.collapsed .title i{margin-top:auto;}html,body{font-family:"Inconsolata",monospace;width:100%;height:100%;}#app{width:100%;height:100%;}h1:focus,.h1:focus{outline:0;}#blazor-error-ui{background:#2b3035;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}.blazor-error-boundary{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem,#b32121;padding:1rem 1rem 1rem 3.7rem;color:#fff;}.blazor-error-boundary::after{content:"An error has occurred.";}.flex-grow{flex-grow:1;}#svg-definitions{display:none;}.logo{fill:#8c68cd;height:75px;}.logo-large{height:300px;}.logo-typing{font-family:Rajdhani;color:#8c68cd;}.logo-typing-large{font-size:8rem;margin-right:0;}.vh-30{height:30vh!important;}.offcanvas{margin-top:1px;}.cursor-pointer{cursor:pointer;}.modal-confirmation .modal-footer{border-top:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color)!important;}.h-100-px{height:100px;}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;height:16px;width:16px;margin-left:.4em;mask-image:url("data:image/svg+xml;utf8,");cursor:pointer;background-color:#c6b4e6;}.breadcrumb{margin-bottom:0;} \ No newline at end of file diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/css/app.scss b/src/dashboard/Synapse.Dashboard/wwwroot/css/app.scss index 7a61db522..ba20305d2 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/css/app.scss +++ b/src/dashboard/Synapse.Dashboard/wwwroot/css/app.scss @@ -24,10 +24,6 @@ h1:focus { outline: none; } -.content { - padding-top: 1.1rem; -} - #blazor-error-ui { background: $body-tertiary-bg-dark; bottom: 0; diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/css/horizontal-collapse.scss b/src/dashboard/Synapse.Dashboard/wwwroot/css/horizontal-collapse.scss index f1a36864d..813a4ea48 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/css/horizontal-collapse.scss +++ b/src/dashboard/Synapse.Dashboard/wwwroot/css/horizontal-collapse.scss @@ -2,6 +2,7 @@ .horizontal-collapse { border-right: 1px solid var(--bs-dark-bg-subtle); + overflow: scroll; &:nth-last-child(1) { border: none; @@ -9,18 +10,31 @@ .title { bottom: 1px solid var(--bs-dark-bg-subtle); + display: flex; + gap: calc($spacer / 2); + + i { + margin-left: auto; + } } &.collapsed { + overflow: hidden; + .title { width: 22px; height: 100%; + flex-direction: column; .label { display: block; transform: rotate(90deg) translate(3px); transform-origin: center; } + + i { + margin-top: auto; + } } } } diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/css/theme/_variables.scss b/src/dashboard/Synapse.Dashboard/wwwroot/css/theme/_variables.scss index 869ff8d94..9f870ff94 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/css/theme/_variables.scss +++ b/src/dashboard/Synapse.Dashboard/wwwroot/css/theme/_variables.scss @@ -1,34 +1,91 @@ @import "../../lib/bootstrap/scss/functions"; + +$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix` +$prefix: $variable-prefix !default; + $primary: #8c68cd !default; $primary-text: $primary; $primary-bg-subtle: #7d59bd !default; $primary-border-subtle: #714db1 !default; -$secondary: #3c8cd6 !default; -$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix` -$prefix: $variable-prefix !default; -$accordion-button-active-color: var(--#{$prefix}primary-text-dark) !default; - -@import "../../lib/bootstrap/scss/variables"; - $primary-dark: $primary; $primary-text-dark: $primary; $primary-bg-subtle-dark: $primary-bg-subtle; $primary-border-subtle-dark: $primary-border-subtle; + +$secondary: #3c8cd6 !default; $secondary-dark: $secondary; $secondary-text-dark: $secondary; -$accent: #009696 !default; + +$accent: #9CEC5B !default; //lime $accent-dark: $accent; $accent-text-dark: $accent; +$accent-bg-subtle: $accent; +$accent-bg-subtle-dark: $accent; +$accent-border-subtle-dark: $accent; + +$cinereous: #837569 !default; //light brown/gray +$cinereous: $cinereous; +$cinereous-text-dark: $cinereous; +$cinereous-bg-subtle: $cinereous; +$cinereous-bg-subtle-dark: $cinereous; +$cinereous-border-subtle-dark: $cinereous; + +$verdigris: #50C5B7 !default; //blue-green +$verdigris-dark: $verdigris; +$verdigris-text-dark: $verdigris; +$verdigris-bg-subtle: $verdigris; +$verdigris-bg-subtle-dark: $verdigris; +$verdigris-border-subtle-dark: $verdigris; + +$icterine: #F0F465 !default; //pale yellow +$icterine-dark: $verdigris; +$icterine-text-dark: $verdigris; +$icterine-bg-subtle: $icterine; +$icterine-bg-subtle-dark: $icterine; +$icterine-border-subtle-dark: $icterine; + +@import "../../lib/bootstrap/scss/variables"; + + +$link-color-dark: $purple-400; +$link-hover-color-dark: $purple-200; + + $mute: $gray-600 !default; $mute-dark: $mute; $mute-text-dark: $mute; -$link-color-dark: $purple-400 !default; -$link-hover-color-dark: $purple-200 !default; @import "../../lib/bootstrap/scss/variables-dark"; + +$table-color: $body-color-dark; + +@import "../../lib/bootstrap/scss/functions"; @import "../../lib/bootstrap/scss/maps"; @import "../../lib/bootstrap/scss/mixins"; -@import "../../lib/bootstrap/scss/utilities"; -$theme-colors: map-merge( $theme-colors, ( "accent": $accent, "mute": $mute ) ); +$extra-colors: ( + "accent": $accent, + "cinereous": $cinereous, + "verdigris": $verdigris, + "icterine": $icterine, + "mute": $mute +); + +$colors: map-merge( $colors, $extra-colors ); +$theme-colors: map-merge( $theme-colors, $extra-colors ); +$theme-colors-bg-subtle: map-merge( $theme-colors-bg-subtle, $extra-colors ); +$theme-colors-border-subtle: map-merge( $theme-colors-border-subtle, $extra-colors ); +$theme-colors-text-dark: map-merge( $theme-colors-text-dark, $extra-colors ); +$theme-colors-bg-subtle-dark: map-merge( $theme-colors-bg-subtle-dark, $extra-colors ); +$theme-colors-border-subtle-dark: map-merge( $theme-colors-border-subtle-dark, $extra-colors ); +$theme-colors-rgb: map-loop( $theme-colors, to-rgb, "$value" ); + +$utilities-colors: map-merge( $utilities-colors, $theme-colors-rgb ); +$utilities-text: map-merge( $utilities-text, $theme-colors-rgb ); +$utilities-text-emphasis-colors: map-merge( $utilities-text-emphasis-colors, $extra-colors ); +$utilities-bg-subtle: map-merge( $utilities-bg-subtle, $extra-colors ); +$utilities-border-subtle: map-merge( $utilities-border-subtle, $extra-colors ); + +$utilities-text-colors: map-loop( $utilities-text, rgba-css-var, "$key", "text" ); +$utilities-bg-colors: map-loop( $utilities-colors, rgba-css-var, "$key", "bg" ); \ No newline at end of file diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/css/theme/theme.scss b/src/dashboard/Synapse.Dashboard/wwwroot/css/theme/theme.scss index 7d5f3d40c..ac1bf1dff 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/css/theme/theme.scss +++ b/src/dashboard/Synapse.Dashboard/wwwroot/css/theme/theme.scss @@ -10,8 +10,8 @@ $font-size-root: 15px; // scss-docs-start import-stack // Configuration @import "./_variables.scss"; -@import "../../lib/bootstrap/scss/maps"; -@import "../../lib/bootstrap/scss/mixins"; +//@import "../../lib/bootstrap/scss/maps"; +//@import "../../lib/bootstrap/scss/mixins"; @import "../../lib/bootstrap/scss/utilities"; // Layout & components diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/LICENSE b/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/LICENSE index c11d10ff8..2a703f519 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/LICENSE +++ b/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2011-2022 The Bootstrap Authors +Copyright (c) 2011-2024 The Bootstrap Authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/README.md b/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/README.md index 9f9374ced..cb51a5617 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/README.md +++ b/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/README.md @@ -46,11 +46,11 @@ Our default branch is for development of our Bootstrap 5 release. Head to the [` Several quick start options are available: -- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.3.0-alpha1.zip) +- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.3.3.zip) - Clone the repo: `git clone https://github.com/twbs/bootstrap.git` -- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.3.0-alpha1` -- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.3.0-alpha1` -- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.3.0-alpha1` +- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.3.3` +- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.3.3` +- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.3.3` - Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass` Read the [Getting started page](https://getbootstrap.com/docs/5.3/getting-started/introduction/) for information on the framework contents, templates, examples, and more. @@ -58,7 +58,7 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.3/getting-starte ## Status -[![Build Status](https://img.shields.io/github/actions/workflow/status/twbs/bootstrap/js.yml?branch=main&label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain) +[![Build Status](https://img.shields.io/github/actions/workflow/status/twbs/bootstrap/js.yml?branch=main&label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions/workflows/js.yml?query=workflow%3AJS+branch%3Amain) [![npm version](https://img.shields.io/npm/v/bootstrap?logo=npm&logoColor=fff)](https://www.npmjs.com/package/bootstrap) [![Gem version](https://img.shields.io/gem/v/bootstrap?logo=rubygems&logoColor=fff)](https://rubygems.org/gems/bootstrap) [![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue?logo=meteor&logoColor=fff)](https://atmospherejs.com/twbs/bootstrap) @@ -69,10 +69,8 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.3/getting-starte [![CSS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=brotli&label=CSS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css) [![JS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=gzip&label=JS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js) [![JS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=brotli&label=JS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js) -[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)](https://www.browserstack.com/automate/public-build/SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229) [![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap?logo=opencollective&logoColor=fff)](#backers) [![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap?logo=opencollective&logoColor=fff)](#sponsors) -![OpenSSF Scorecard](https://img.shields.io/ossf-scorecard/github.com/twbs/bootstrap) ## What's included @@ -145,7 +143,7 @@ Have a bug or a feature request? Please first read the [issue guidelines](https: Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at . The docs may also be run locally. -Documentation search is powered by [Algolia's DocSearch](https://docsearch.algolia.com/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`. +Documentation search is powered by [Algolia's DocSearch](https://docsearch.algolia.com/). ### Running documentation locally @@ -178,7 +176,8 @@ Get updates on Bootstrap's development and chat with the project maintainers and - Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap). - Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/). -- Ask and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions). +- Ask questions and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions). +- Discuss, ask questions, and more on [the community Discord](https://discord.gg/bZUvakRU3M) or [Bootstrap subreddit](https://reddit.com/r/bootstrap). - Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel. - Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)). - Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. @@ -244,4 +243,4 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com ## Copyright and license -Code and documentation copyright 2011–2022 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors). Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). +Code and documentation copyright 2011–2024 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors). Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js b/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js index 4274d968c..6294dff3d 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js +++ b/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js @@ -1,6 +1,6 @@ /*! - * Bootstrap v5.3.0-alpha1 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { @@ -11,7 +11,55 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): util/index.js + * Bootstrap 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 util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -162,7 +210,6 @@ 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; @@ -258,11 +305,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): dom/event-handler.js + * Bootstrap dom/event-handler.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -328,7 +376,7 @@ } function normalizeParameters(originalTypeEvent, handler, delegationFunction) { const isDelegated = typeof handler === 'string'; - // todo: tooltip passes `false` instead of selector, so we need to check + // 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)) { @@ -445,11 +493,10 @@ nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); defaultPrevented = jQueryEvent.isDefaultPrevented(); } - let evt = new Event(event, { + const evt = hydrateObj(new Event(event, { bubbles, cancelable: true - }); - evt = hydrateObj(evt, args); + }), args); if (defaultPrevented) { evt.preventDefault(); } @@ -480,55 +527,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): 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.3.0-alpha1): dom/manipulator.js + * Bootstrap dom/manipulator.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -585,11 +584,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): util/config.js + * Bootstrap util/config.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Class definition */ @@ -637,16 +637,17 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): base-component.js + * Bootstrap base-component.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ - const VERSION = '5.3.0-alpha1'; + const VERSION = '5.3.3'; /** * Class definition @@ -705,10 +706,11 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): dom/selector-engine.js + * Bootstrap dom/selector-engine.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + const getSelector = element => { let selector = element.getAttribute('data-bs-target'); if (!selector || selector === '#') { @@ -728,7 +730,7 @@ } selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; } - return parseSelector(selector); + return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null; }; const SelectorEngine = { find(selector, element = document.documentElement) { @@ -793,10 +795,11 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): util/component-functions.js + * Bootstrap 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; @@ -817,11 +820,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): alert.js + * Bootstrap alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -891,11 +895,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): button.js + * Bootstrap button.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -954,11 +959,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): util/swipe.js + * Bootstrap util/swipe.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -1073,11 +1079,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): carousel.js + * Bootstrap carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -1333,7 +1340,7 @@ } if (!activeElement || !nextElement) { // Some weirdness is happening, so we bail - // todo: change tests that use empty divs to avoid this check + // TODO: change tests that use empty divs to avoid this check return; } const isCycling = Boolean(this._interval); @@ -1445,11 +1452,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): collapse.js + * Bootstrap collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -1839,7 +1847,7 @@ function getUAString() { var uaData = navigator.userAgentData; - if (uaData != null && uaData.brands) { + if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { return uaData.brands.map(function (item) { return item.brand + "/" + item.version; }).join(' '); @@ -2127,7 +2135,6 @@ } if (!contains(state.elements.popper, arrowElement)) { - return; } @@ -2158,10 +2165,9 @@ // 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) { + function roundOffsetsByDPR(_ref, win) { var x = _ref.x, y = _ref.y; - var win = window; var dpr = win.devicePixelRatio || 1; return { x: round(x * dpr) / dpr || 0, @@ -2244,7 +2250,7 @@ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ x: x, y: y - }) : { + }, getWindow(popper)) : { x: x, y: y }; @@ -2270,7 +2276,6 @@ 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), @@ -3338,8 +3343,7 @@ state.orderedModifiers = orderedModifiers.filter(function (m) { return m.enabled; - }); // Validate the provided modifiers so that the consumer will get warned - + }); runModifierEffects(); return instance.update(); }, @@ -3359,7 +3363,6 @@ // anymore if (!areValidElements(reference, popper)) { - return; } // Store the reference and popper rects to be read by modifiers @@ -3384,7 +3387,6 @@ }); for (var index = 0; index < state.orderedModifiers.length; index++) { - if (state.reset === true) { state.reset = false; index = -1; @@ -3422,7 +3424,6 @@ }; if (!areValidElements(reference, popper)) { - return instance; } @@ -3437,11 +3438,11 @@ // 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; + state.orderedModifiers.forEach(function (_ref) { + var name = _ref.name, + _ref$options = _ref.options, + options = _ref$options === void 0 ? {} : _ref$options, + effect = _ref.effect; if (typeof effect === 'function') { var cleanupFn = effect({ @@ -3482,53 +3483,54 @@ 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, + afterRead, afterWrite, - modifierPhases, applyStyles: applyStyles$1, arrow: arrow$1, + auto, + basePlacements, + beforeMain, + beforeRead, + beforeWrite, + bottom, + clippingParents, computeStyles: computeStyles$1, + createPopper, + createPopperBase: createPopper$2, + createPopperLite: createPopper$1, + detectOverflow, + end, eventListeners, flip: flip$1, hide: hide$1, + left, + main, + modifierPhases, offset: offset$1, + placements, + popper, + popperGenerator, popperOffsets: popperOffsets$1, - preventOverflow: preventOverflow$1 + preventOverflow: preventOverflow$1, + read, + reference, + right, + start, + top, + variationPlacements, + viewport, + write }, Symbol.toStringTag, { value: 'Module' })); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): dropdown.js + * Bootstrap dropdown.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -3596,7 +3598,7 @@ super(element, config); this._popper = null; this._parent = this._element.parentNode; // dropdown wrapper - // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ + // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/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(); } @@ -3770,7 +3772,7 @@ // 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 + Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove defaultBsPopperConfig.modifiers = [{ name: 'applyStyles', enabled: false @@ -3852,7 +3854,7 @@ } event.preventDefault(); - // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ + // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/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) { @@ -3891,107 +3893,11 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): util/scrollBar.js + * Bootstrap util/backdrop.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.3.0-alpha1): util/backdrop.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ /** * Constants @@ -4009,7 +3915,6 @@ // 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)', @@ -4112,11 +4017,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): util/focustrap.js + * Bootstrap util/focustrap.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -4133,7 +4039,6 @@ autofocus: true, trapElement: null // The element to trap focus inside of }; - const DefaultType$7 = { autofocus: 'boolean', trapElement: 'element' @@ -4210,11 +4115,110 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): modal.js + * Bootstrap 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 modal.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -4316,9 +4320,8 @@ this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); } dispose() { - for (const htmlElement of [window, this._dialog]) { - EventHandler.off(htmlElement, EVENT_KEY$4); - } + EventHandler.off(window, EVENT_KEY$4); + EventHandler.off(this._dialog, EVENT_KEY$4); this._backdrop.dispose(); this._focustrap.deactivate(); super.dispose(); @@ -4373,7 +4376,6 @@ return; } if (this._config.keyboard) { - event.preventDefault(); this.hide(); return; } @@ -4516,11 +4518,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): offcanvas.js + * Bootstrap offcanvas.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -4674,11 +4677,11 @@ if (event.key !== ESCAPE_KEY) { return; } - if (!this._config.keyboard) { - EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + if (this._config.keyboard) { + this.hide(); return; } - this.hide(); + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); }); } @@ -4746,39 +4749,13 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): util/sanitizer.js + * Bootstrap 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']); + // js-docs-start allow-list 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], @@ -4788,7 +4765,10 @@ br: [], col: [], code: [], + dd: [], div: [], + dl: [], + dt: [], em: [], hr: [], h1: [], @@ -4812,6 +4792,30 @@ u: [], ul: [] }; + // js-docs-end allow-list + + const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); + + /** + * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation + * contexts. + * + * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38 + */ + // eslint-disable-next-line unicorn/better-regex + const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/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)); + } + return true; + } + + // Check if a regular expression validates the attribute. + return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); + }; function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { if (!unsafeHtml.length) { return unsafeHtml; @@ -4841,11 +4845,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): util/template-factory.js + * Bootstrap util/template-factory.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -4976,11 +4981,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): tooltip.js + * Bootstrap tooltip.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -5023,7 +5029,7 @@ delay: 0, fallbackPlacements: ['top', 'right', 'bottom', 'left'], html: false, - offset: [0, 0], + offset: [0, 6], placement: 'top', popperConfig: null, sanitize: true, @@ -5136,7 +5142,7 @@ return; } - // todo v6 remove this OR make it optional + // TODO: v6 remove this or make it optional this._disposePopper(); const tip = this._getTipElement(); this._element.setAttribute('aria-describedby', tip.getAttribute('id')); @@ -5222,12 +5228,12 @@ _createTipElement(content) { const tip = this._getTemplateFactory(content).toHtml(); - // todo: remove this check on v6 + // TODO: remove this check in 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 + // TODO: 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); @@ -5487,11 +5493,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): popover.js + * Bootstrap popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -5567,11 +5574,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): scrollspy.js + * Bootstrap scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -5750,11 +5758,11 @@ if (!anchor.hash || isDisabled(anchor)) { continue; } - const observableSection = SelectorEngine.findOne(anchor.hash, this._element); + const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); // ensure that the observableSection exists & is visible if (isVisible(observableSection)) { - this._targetLinks.set(anchor.hash, anchor); + this._targetLinks.set(decodeURI(anchor.hash), anchor); this._observableSections.set(anchor.hash, observableSection); } } @@ -5826,11 +5834,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): tab.js + * Bootstrap tab.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -5849,17 +5858,19 @@ const ARROW_RIGHT_KEY = 'ArrowRight'; const ARROW_UP_KEY = 'ArrowUp'; const ARROW_DOWN_KEY = 'ArrowDown'; + const HOME_KEY = 'Home'; + const END_KEY = 'End'; const CLASS_NAME_ACTIVE = 'active'; const CLASS_NAME_FADE$1 = 'fade'; const CLASS_NAME_SHOW$1 = 'show'; const CLASS_DROPDOWN = 'dropdown'; const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'; - const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'; + const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`; const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; const SELECTOR_OUTER = '.nav-item, .list-group-item'; const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; - const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // todo:v6: could be only `tab` + const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6 const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; @@ -5873,7 +5884,7 @@ this._parent = this._element.closest(SELECTOR_TAB_PANEL); if (!this._parent) { return; - // todo: should Throw exception on v6 + // TODO: should throw exception in v6 // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`) } @@ -5955,13 +5966,19 @@ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); } _keydown(event) { - if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) { + if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) { return; } event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page event.preventDefault(); - const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); - const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true); + const children = this._getChildren().filter(element => !isDisabled(element)); + let nextActiveElement; + if ([HOME_KEY, END_KEY].includes(event.key)) { + nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]; + } else { + const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); + nextActiveElement = getNextActiveElement(children, event.target, isNext, true); + } if (nextActiveElement) { nextActiveElement.focus({ preventScroll: true @@ -6005,7 +6022,7 @@ } this._setAttributeIfNotExists(target, 'role', 'tabpanel'); if (child.id) { - this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`); + this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`); } } _toggleDropDown(element, open) { @@ -6087,11 +6104,12 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): toast.js + * Bootstrap toast.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + /** * Constants */ @@ -6270,10 +6288,11 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.3.0-alpha1): index.umd.js + * Bootstrap index.umd.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + const index_umd = { Alert, Button, diff --git a/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map b/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map index 1dbf10d7f..681f25c4a 100644 --- a/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map +++ b/src/dashboard/Synapse.Dashboard/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // todo: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n let evt = new Event(event, { bubbles, cancelable: true })\n evt = hydrateObj(evt, args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index.js'\nimport Manipulator from '../dom/manipulator.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return parseSelector(selector)\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport { isDisabled } from './index.js'\nimport SelectorEngine from '../dom/selector-engine.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport BaseComponent from './base-component.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport BaseComponent from './base-component.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config.js'\nimport EventHandler from '../dom/event-handler.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport BaseComponent from './base-component.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport BaseComponent from './base-component.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n 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') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n 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));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport BaseComponent from './base-component.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport ScrollBarHelper from './util/scrollbar.js'\nimport BaseComponent from './base-component.js'\nimport Backdrop from './util/backdrop.js'\nimport FocusTrap from './util/focustrap.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY)\n }\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n event.preventDefault()\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\nimport EventHandler from './dom/event-handler.js'\nimport BaseComponent from './base-component.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport FocusTrap from './util/focustrap.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst 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\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport BaseComponent from './base-component.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' +\n '
' +\n '
' +\n '
',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // todo v6 remove this OR make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // todo: remove this check on v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // todo: on v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index.js'\nimport Tooltip from './tooltip.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport BaseComponent from './base-component.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both
Name