admin-lte 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -1
- package/README.md +6 -6
- package/dist/css/adminlte-docs.css +1 -1
- package/dist/css/adminlte-docs.css.map +1 -1
- package/dist/css/adminlte-docs.min.css +1 -1
- package/dist/css/adminlte-docs.min.css.map +1 -1
- package/dist/css/adminlte-docs.rtl.css +1 -1
- package/dist/css/adminlte-docs.rtl.css.map +1 -1
- package/dist/css/adminlte-docs.rtl.min.css +1 -1
- package/dist/css/adminlte-docs.rtl.min.css.map +1 -1
- package/dist/css/adminlte.css +131 -131
- package/dist/css/adminlte.css.map +1 -1
- package/dist/css/adminlte.min.css +2 -2
- package/dist/css/adminlte.min.css.map +1 -1
- package/dist/css/adminlte.rtl.css +131 -131
- package/dist/css/adminlte.rtl.css.map +1 -1
- package/dist/css/adminlte.rtl.min.css +2 -2
- package/dist/css/adminlte.rtl.min.css.map +1 -1
- package/dist/js/adminlte.esm.js +71 -30
- package/dist/js/adminlte.esm.js.map +1 -1
- package/dist/js/adminlte.esm.min.js +2 -2
- package/dist/js/adminlte.esm.min.js.map +1 -1
- package/dist/js/adminlte.js +72 -29
- package/dist/js/adminlte.js.map +1 -1
- package/dist/js/adminlte.min.js +2 -2
- package/dist/js/adminlte.min.js.map +1 -1
- package/dist/js/types/adminlte.d.ts +2 -1
- package/dist/js/types/base-component.d.ts +24 -0
- package/dist/js/types/color-mode.d.ts +24 -6
- package/dist/js/types/push-menu.d.ts +21 -0
- package/dist/js/types/util/index.d.ts +38 -1
- package/package.json +24 -23
- package/src/scss/adminlte-docs.scss +1 -1
- package/src/scss/adminlte.scss +1 -1
- package/src/ts/accessibility.ts +6 -2
- package/src/ts/adminlte.ts +5 -3
- package/src/ts/base-component.ts +30 -3
- package/src/ts/color-mode.ts +100 -20
- package/src/ts/push-menu.ts +37 -7
- package/src/ts/util/index.ts +79 -15
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,24 @@ All notable changes to AdminLTE will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [4.2.0] - 2026-08-06
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Advanced form pages:** `forms/advanced.html` demonstrates the recommended Tom Select and Flatpickr integrations (searchable single select, tag-style multi-select, option groups loaded on demand; date, date-time, range, and time pickers), and `forms/editors.html` demonstrates Quill 2 in both the snow (toolbar) and bubble (inline) themes. CDN assets are pinned to the versions recommended on the docs Integrations page and carry SRI hashes. Both pages are linked from the sidebar's Forms menu.
|
|
13
|
+
- **Top-nav layout demo:** `layout/top-nav.html` — a sidebar-less page whose primary navigation lives in the app-header as a plain Bootstrap `navbar-expand-lg` (collapse toggler on mobile, no PushMenu). No new CSS was needed: without an `.app-sidebar` in the markup, the `app-wrapper` grid's `auto` sidebar column collapses to zero width on its own.
|
|
14
|
+
- **Color mode: server-rendered themes, and an opt-out for applications with their own theming.** ColorMode now resolves the theme from the visitor's stored choice, then a theme the page declared itself in `<html data-bs-theme="light|dark">`, then the OS preference — so a theme rendered server-side from a cookie or a user record is no longer overwritten on load, and no longer lost the first time the OS preference changes. Applications that manage `data-bs-theme` themselves — including anyone using a custom Bootstrap theme name, which ColorMode cannot resolve — turn the module off entirely with `<html data-lte-color-mode="off">`: nothing is written on load, on a `[data-bs-theme-value]` toggle click, or when the OS preference changes, and the pre-paint snippet in `<head>` honours it too (#6084, reported by @cytech; #6093, thanks @dfsmania). The snippet now flags the values it resolves itself with `data-lte-theme-resolved`, so a computed theme is never mistaken for one the page declared.
|
|
15
|
+
- **`initialize()` / `teardown()` lifecycle API for client-side rendered layouts:** frameworks that build the layout after `DOMContentLoaded` into a persistent `<body>` (GWT and similar widget toolkits) can call `adminlte.initialize()` once the layout is attached — it tears down the previous cycle's listeners and re-runs every plugin's initialisation against the current DOM, and is safe to call repeatedly (#6083, thanks @themarioga). `teardown()` is the inverse, for apps that unmount the layout. Re-initialisation was hardened along the way: the accessibility module's per-field `invalid` listeners no longer stack across cycles, an `initialize()` call made while the document is still loading no longer suppresses the initial `DOMContentLoaded` pass, and calling `initialize()` from inside a lifecycle callback no longer recurses.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **Dev dependencies refreshed to their latest releases**, including two majors: `eslint-plugin-astro` 2 → 3 and `eslint-plugin-unicorn` 72 → 73, whose new `single-line-block-comment-style` rule prompted converting four one-line banner comments in `src/ts/util/index.ts` to line comments. Also Astro 7.1.6, ESLint 10.8, typescript-eslint 8.66, Sass 1.102, Rollup 4.62.4, Terser 5.49.2, PostCSS 8.5.25, happy-dom 20.11.1, `@astrojs/mdx` 7.0.5, plus concurrently, fs-extra and globals. TypeScript stays on 6.0.3: 7.0 has shipped, but both `typescript-eslint` (peer `>=4.8.4 <6.1.0`) and `@astrojs/check` (peer `^5 || ^6`) still cap it, so installing it fails dependency resolution outright. Nothing in `dist/` changed as a result. Supersedes #6085–#6092.
|
|
20
|
+
- Component docstrings corrected in `base-component.ts` and `push-menu.ts` (#6082, thanks @dfsmania), the `adminlte-docs.scss` banner is now version-synced by `npm version` along with the other source banners, and the README's screenshots were downscaled to WebP for faster cold-cache loads.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- **A sidebar rendered collapsed no longer springs open on load:** a page shipping `<body class="sidebar-collapse">` had that state overwritten by PushMenu's responsive pass during initialisation, so a deliberately collapsed sidebar expanded itself on wide screens. The responsive pass now runs only when the sidebar was not already collapsed in the markup (#6076, thanks @dfsmania).
|
|
25
|
+
- **The Color Mode docs page ran two switchers at once:** `docs/color-mode.html` still carried the pre-4.1 inline toggler, which bound its own handlers to the same `[data-bs-theme-value]` buttons as the bundled module and persisted to a different `localStorage` key (`theme` instead of `lte-theme`). It has been removed — the page now uses the shipped ColorMode like every other page.
|
|
9
26
|
|
|
10
27
|
## [4.1.0] - 2026-07-02
|
|
11
28
|
|
package/README.md
CHANGED
|
@@ -19,10 +19,10 @@ large desktops, and it's MIT-licensed.
|
|
|
19
19
|
|
|
20
20
|
<p align="center">
|
|
21
21
|
<a href="https://adminlte.io/themes/v4/">
|
|
22
|
-
<img alt="AdminLTE 4 dashboard — light mode" src=".github/assets/dashboard-light.
|
|
22
|
+
<img alt="AdminLTE 4 dashboard — light mode" src=".github/assets/dashboard-light.webp" width="49%">
|
|
23
23
|
</a>
|
|
24
24
|
<a href="https://adminlte.io/themes/v4/">
|
|
25
|
-
<img alt="AdminLTE 4 dashboard — dark mode" src=".github/assets/dashboard-dark.
|
|
25
|
+
<img alt="AdminLTE 4 dashboard — dark mode" src=".github/assets/dashboard-dark.webp" width="49%">
|
|
26
26
|
</a>
|
|
27
27
|
</p>
|
|
28
28
|
|
|
@@ -161,7 +161,7 @@ including editions built for the same stacks AdminLTE integrates with:
|
|
|
161
161
|
<tr>
|
|
162
162
|
<td align="center" width="50%">
|
|
163
163
|
<a href="https://dashboardpack.com/theme-details/admindek-html/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">
|
|
164
|
-
<img src=".github/assets/premium/admindek.
|
|
164
|
+
<img src=".github/assets/premium/admindek.webp" alt="Admindek — feature-rich Bootstrap 5 dashboard with dark mode" width="100%">
|
|
165
165
|
</a>
|
|
166
166
|
<br>
|
|
167
167
|
<a href="https://dashboardpack.com/theme-details/admindek-html/?utm_source=github&utm_medium=readme&utm_campaign=adminlte"><strong>Admindek</strong></a>
|
|
@@ -173,7 +173,7 @@ including editions built for the same stacks AdminLTE integrates with:
|
|
|
173
173
|
</td>
|
|
174
174
|
<td align="center" width="50%">
|
|
175
175
|
<a href="https://dashboardpack.com/theme-details/apex-dashboard-nextjs/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">
|
|
176
|
-
<img src=".github/assets/premium/apex.
|
|
176
|
+
<img src=".github/assets/premium/apex.webp" alt="Apex Dashboard — admin template available for Next.js, Laravel, Django and Angular" width="100%">
|
|
177
177
|
</a>
|
|
178
178
|
<br>
|
|
179
179
|
<a href="https://dashboardpack.com/theme-details/apex-dashboard-nextjs/?utm_source=github&utm_medium=readme&utm_campaign=adminlte"><strong>Apex Dashboard</strong></a>
|
|
@@ -188,7 +188,7 @@ including editions built for the same stacks AdminLTE integrates with:
|
|
|
188
188
|
<tr>
|
|
189
189
|
<td align="center" width="50%">
|
|
190
190
|
<a href="https://dashboardpack.com/theme-details/zenith-dashboard-django/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">
|
|
191
|
-
<img src=".github/assets/premium/zenith.
|
|
191
|
+
<img src=".github/assets/premium/zenith.webp" alt="Zenith — ultra-minimal admin dashboard, Django edition" width="100%">
|
|
192
192
|
</a>
|
|
193
193
|
<br>
|
|
194
194
|
<a href="https://dashboardpack.com/theme-details/zenith-dashboard-django/?utm_source=github&utm_medium=readme&utm_campaign=adminlte"><strong>Zenith Dashboard — Django</strong></a>
|
|
@@ -197,7 +197,7 @@ including editions built for the same stacks AdminLTE integrates with:
|
|
|
197
197
|
</td>
|
|
198
198
|
<td align="center" width="50%">
|
|
199
199
|
<a href="https://dashboardpack.com/theme-details/haze-dashboard-nuxt/?utm_source=github&utm_medium=readme&utm_campaign=adminlte">
|
|
200
|
-
<img src=".github/assets/premium/haze.
|
|
200
|
+
<img src=".github/assets/premium/haze.webp" alt="Haze — Nuxt 4 admin dashboard with 92+ pages and 5 dashboards" width="100%">
|
|
201
201
|
</a>
|
|
202
202
|
<br>
|
|
203
203
|
<a href="https://dashboardpack.com/theme-details/haze-dashboard-nuxt/?utm_source=github&utm_medium=readme&utm_campaign=adminlte"><strong>Haze — Nuxt</strong></a>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
@charset "UTF-8";
|
|
2
2
|
/*!
|
|
3
|
-
* AdminLTE v4.0
|
|
3
|
+
* AdminLTE v4.2.0 — documentation styles
|
|
4
4
|
* Styles for the documentation and FAQ pages only (body.docs-page /
|
|
5
5
|
* body.faq-page). Applications never need this file; it is loaded by the
|
|
6
6
|
* docs pages in addition to adminlte.css.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["adminlte-docs.css","../../src/scss/adminlte-docs.scss","../../src/scss/mixins/_animations.scss","../../src/scss/_docs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../node_modules/bootstrap/scss/mixins/_transition.scss"],"names":[],"mappings":"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","file":"adminlte-docs.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * AdminLTE v4.0.4 — documentation styles\n * Styles for the documentation and FAQ pages only (body.docs-page /\n * body.faq-page). Applications never need this file; it is loaded by the\n * docs pages in addition to adminlte.css.\n */\n@keyframes flipInX {\n 0% {\n opacity: 0;\n transition-timing-function: ease-in;\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n }\n 40% {\n transition-timing-function: ease-in;\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n }\n 60% {\n opacity: 1;\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n }\n 80% {\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n 100% {\n transform: perspective(400px);\n }\n}\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes shake {\n 0% {\n transform: translate(2px, 1px) rotate(0deg);\n }\n 10% {\n transform: translate(-1px, -2px) rotate(-2deg);\n }\n 20% {\n transform: translate(-3px, 0) rotate(3deg);\n }\n 30% {\n transform: translate(0, 2px) rotate(0deg);\n }\n 40% {\n transform: translate(1px, -1px) rotate(1deg);\n }\n 50% {\n transform: translate(-1px, 2px) rotate(-1deg);\n }\n 60% {\n transform: translate(-3px, 1px) rotate(0deg);\n }\n 70% {\n transform: translate(2px, 1px) rotate(-2deg);\n }\n 80% {\n transform: translate(-1px, -1px) rotate(4deg);\n }\n 90% {\n transform: translate(2px, 2px) rotate(0deg);\n }\n 100% {\n transform: translate(1px, -2px) rotate(-1deg);\n }\n}\n@keyframes wobble {\n 0% {\n transform: none;\n }\n 15% {\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n 30% {\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n 45% {\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n 60% {\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n 75% {\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n 100% {\n transform: none;\n }\n}\n.astro-code {\n padding: 0.75rem;\n border-radius: 0.375rem;\n}\n\n.docs-page .app-content > .container-fluid {\n max-width: 60rem;\n}\n@media (min-width: 1400px) {\n .docs-page .app-content > .container-fluid {\n max-width: 64rem;\n }\n}\n.docs-page .card > .card-body {\n padding: 1.5rem;\n font-size: 1rem;\n line-height: 1.7;\n color: var(--bs-body-color);\n}\n@media (min-width: 768px) {\n .docs-page .card > .card-body {\n padding: 2.5rem;\n }\n}\n.docs-page .card > .card-body h1,\n.docs-page .card > .card-body h2,\n.docs-page .card > .card-body h3,\n.docs-page .card > .card-body h4,\n.docs-page .card > .card-body h5,\n.docs-page .card > .card-body h6,\n.docs-page .card > .card-body .h1,\n.docs-page .card > .card-body .h2,\n.docs-page .card > .card-body .h3,\n.docs-page .card > .card-body .h4,\n.docs-page .card > .card-body .h5,\n.docs-page .card > .card-body .h6 {\n margin-top: 2em;\n margin-bottom: 0.5em;\n font-weight: 600;\n line-height: 1.3;\n color: var(--bs-emphasis-color);\n scroll-margin-top: 4rem;\n}\n.docs-page .card > .card-body h1:first-child,\n.docs-page .card > .card-body h2:first-child,\n.docs-page .card > .card-body h3:first-child,\n.docs-page .card > .card-body h4:first-child,\n.docs-page .card > .card-body h5:first-child,\n.docs-page .card > .card-body h6:first-child,\n.docs-page .card > .card-body .h1:first-child,\n.docs-page .card > .card-body .h2:first-child,\n.docs-page .card > .card-body .h3:first-child,\n.docs-page .card > .card-body .h4:first-child,\n.docs-page .card > .card-body .h5:first-child,\n.docs-page .card > .card-body .h6:first-child {\n margin-top: 0;\n}\n.docs-page .card > .card-body h2,\n.docs-page .card > .card-body .h2 {\n padding-bottom: 0.35em;\n font-size: 1.75rem;\n border-bottom: 1px solid var(--bs-border-color);\n}\n.docs-page .card > .card-body h3,\n.docs-page .card > .card-body .h3 {\n font-size: 1.4rem;\n}\n.docs-page .card > .card-body h4,\n.docs-page .card > .card-body .h4 {\n font-size: 1.2rem;\n}\n.docs-page .card > .card-body h5,\n.docs-page .card > .card-body .h5 {\n padding-top: 1.5em;\n margin-top: 2.5em;\n font-size: 1.3rem;\n border-top: 1px solid var(--bs-border-color);\n}\n.docs-page .card > .card-body h5:first-child,\n.docs-page .card > .card-body .h5:first-child {\n padding-top: 0;\n border-top: 0;\n}\n.docs-page .card > .card-body h6,\n.docs-page .card > .card-body .h6 {\n margin-top: 1.75em;\n font-size: 1.08rem;\n color: var(--bs-emphasis-color);\n}\n.docs-page .card > .card-body p,\n.docs-page .card > .card-body ul,\n.docs-page .card > .card-body ol,\n.docs-page .card > .card-body dl,\n.docs-page .card > .card-body blockquote,\n.docs-page .card > .card-body table {\n margin-bottom: 1.1rem;\n}\n.docs-page .card > .card-body ul,\n.docs-page .card > .card-body ol {\n padding-left: 1.5rem;\n}\n.docs-page .card > .card-body ul li,\n.docs-page .card > .card-body ol li {\n margin-bottom: 0.35rem;\n}\n.docs-page .card > .card-body ul ul,\n.docs-page .card > .card-body ul ol,\n.docs-page .card > .card-body ol ul,\n.docs-page .card > .card-body ol ol {\n margin-top: 0.35rem;\n margin-bottom: 0;\n}\n.docs-page .card > .card-body h2 + p,\n.docs-page .card > .card-body h3 + p,\n.docs-page .card > .card-body h5 + p {\n margin-top: 0;\n}\n.docs-page .card > .card-body p code,\n.docs-page .card > .card-body li code,\n.docs-page .card > .card-body td code,\n.docs-page .card > .card-body th code,\n.docs-page .card > .card-body h2 code,\n.docs-page .card > .card-body h3 code,\n.docs-page .card > .card-body h4 code,\n.docs-page .card > .card-body h5 code,\n.docs-page .card > .card-body h6 code {\n padding: 0.15em 0.4em;\n font-size: 0.875em;\n color: var(--bs-emphasis-color);\n background: var(--bs-tertiary-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 0.25rem;\n}\n.docs-page .card > .card-body pre.astro-code,\n.docs-page .card > .card-body pre {\n padding: 1rem 1.25rem;\n margin-top: 1.25rem;\n margin-bottom: 1.5rem;\n overflow-x: auto;\n font-size: 0.875rem;\n line-height: 1.6;\n border-radius: 0.375rem;\n}\n.docs-page .card > .card-body pre.astro-code code,\n.docs-page .card > .card-body pre code {\n padding: 0;\n background: transparent;\n border: 0;\n}\n.docs-page .card > .card-body table {\n width: 100%;\n margin-top: 1.25rem;\n margin-bottom: 1.5rem;\n overflow: hidden;\n font-size: 0.95rem;\n border-collapse: collapse;\n border: 1px solid var(--bs-border-color);\n border-radius: 0.25rem;\n}\n.docs-page .card > .card-body table th,\n.docs-page .card > .card-body table td {\n padding: 0.65rem 0.9rem;\n text-align: left;\n vertical-align: top;\n border-bottom: 1px solid var(--bs-border-color);\n}\n.docs-page .card > .card-body table th {\n font-weight: 600;\n color: var(--bs-emphasis-color);\n background: var(--bs-tertiary-bg);\n}\n.docs-page .card > .card-body table tr:last-child td {\n border-bottom: 0;\n}\n.docs-page .card > .card-body table code {\n white-space: nowrap;\n}\n.docs-page .card > .card-body blockquote {\n padding: 0.85rem 1.1rem;\n margin-top: 1.25rem;\n color: var(--bs-emphasis-color);\n background: var(--bs-info-bg-subtle);\n border-left: 4px solid var(--bs-info-border-subtle);\n border-radius: 0.25rem;\n}\n.docs-page .card > .card-body blockquote p:last-child {\n margin-bottom: 0;\n}\n.docs-page .card > .card-body blockquote code {\n background: rgba(0, 0, 0, 0.05);\n}\n.docs-page .card > .card-body a:not(.btn):not(.nav-link) {\n color: var(--bs-primary);\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-underline-offset: 3px;\n}\n.docs-page .card > .card-body a:not(.btn):not(.nav-link):hover {\n text-decoration-thickness: 2px;\n}\n.docs-page .card > .card-body hr {\n margin: 2.5rem 0;\n border: 0;\n border-top: 1px solid var(--bs-border-color);\n opacity: 1;\n}\n.docs-page .card > .card-body > p:first-child,\n.docs-page .card > .card-body > p:first-of-type {\n margin-bottom: 2rem;\n font-size: 1.125rem;\n line-height: 1.6;\n color: var(--bs-body-color);\n}\n.docs-page .card > .card-body details.faq-item {\n margin-bottom: 0.5rem;\n overflow: hidden;\n background: var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 0.375rem;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .docs-page .card > .card-body details.faq-item {\n transition: none;\n }\n}\n.docs-page .card > .card-body details.faq-item:hover {\n border-color: var(--bs-primary-border-subtle);\n}\n.docs-page .card > .card-body details.faq-item[open] {\n background: var(--bs-body-bg);\n border-color: var(--bs-primary-border-subtle);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n}\n.docs-page .card > .card-body details.faq-item summary {\n position: relative;\n padding: 0.9rem 3rem 0.9rem 1.1rem;\n font-size: 1rem;\n font-weight: 600;\n color: var(--bs-emphasis-color);\n list-style: none;\n cursor: pointer;\n user-select: none;\n transition: color 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .docs-page .card > .card-body details.faq-item summary {\n transition: none;\n }\n}\n.docs-page .card > .card-body details.faq-item summary::-webkit-details-marker {\n display: none;\n}\n.docs-page .card > .card-body details.faq-item summary::marker {\n content: \"\";\n}\n.docs-page .card > .card-body details.faq-item summary:hover {\n color: var(--bs-primary);\n}\n.docs-page .card > .card-body details.faq-item summary::after {\n position: absolute;\n top: 50%;\n right: 1.1rem;\n display: inline-block;\n width: 0.55rem;\n height: 0.55rem;\n margin-top: -0.4rem;\n content: \"\";\n border-right: 2px solid currentcolor;\n border-bottom: 2px solid currentcolor;\n opacity: 0.55;\n transform: rotate(45deg);\n transition: transform 0.2s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .docs-page .card > .card-body details.faq-item summary::after {\n transition: none;\n }\n}\n.docs-page .card > .card-body details.faq-item[open] > summary {\n color: var(--bs-primary);\n border-bottom: 1px solid var(--bs-border-color);\n}\n.docs-page .card > .card-body details.faq-item[open] > summary::after {\n margin-top: -0.15rem;\n opacity: 1;\n transform: rotate(-135deg);\n}\n.docs-page .card > .card-body details.faq-item > *:not(summary) {\n padding-right: 1.1rem;\n padding-left: 1.1rem;\n}\n.docs-page .card > .card-body details.faq-item > *:not(summary):first-of-type {\n padding-top: 1rem;\n}\n.docs-page .card > .card-body details.faq-item > *:not(summary):last-child {\n padding-bottom: 1rem;\n}\n.docs-page .card > .card-body details.faq-item p,\n.docs-page .card > .card-body details.faq-item ul,\n.docs-page .card > .card-body details.faq-item ol {\n margin-bottom: 0.65rem;\n}\n.docs-page .card > .card-body details.faq-item > *:last-child p:last-child,\n.docs-page .card > .card-body details.faq-item > p:last-child,\n.docs-page .card > .card-body details.faq-item > ul:last-child,\n.docs-page .card > .card-body details.faq-item > ol:last-child {\n margin-bottom: 0;\n}\n.docs-page .card > .card-body details.faq-item pre.astro-code,\n.docs-page .card > .card-body details.faq-item pre {\n margin-right: 0;\n margin-left: 0;\n}\n.docs-page[data-bs-theme=dark] .card > .card-body blockquote code, [data-bs-theme=dark] .docs-page .card > .card-body blockquote code {\n background: rgba(255, 255, 255, 0.08);\n}\n\n.faq-page .app-content > .container-fluid {\n max-width: 64rem;\n}\n@media (min-width: 1400px) {\n .faq-page .app-content > .container-fluid {\n max-width: 72rem;\n }\n}\n.faq-page .faq-hero {\n position: relative;\n padding: 3rem 1.5rem 2.5rem;\n margin-top: 1rem;\n overflow: hidden;\n background: radial-gradient(ellipse at top left, rgba(var(--bs-primary-rgb), 0.12), transparent 60%), radial-gradient(ellipse at bottom right, rgba(var(--bs-info-rgb), 0.1), transparent 65%), var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 1rem;\n}\n.faq-page .faq-hero-eyebrow {\n display: inline-flex;\n gap: 0.4rem;\n align-items: center;\n padding: 0.35rem 0.85rem;\n margin-bottom: 1rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--bs-primary);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n background: var(--bs-primary-bg-subtle);\n border: 1px solid var(--bs-primary-border-subtle);\n border-radius: 50rem;\n}\n.faq-page .faq-hero-eyebrow .bi {\n font-size: 0.9rem;\n}\n.faq-page .faq-hero-title {\n margin: 0 0 0.5rem;\n font-size: 2.25rem;\n font-weight: 700;\n line-height: 1.15;\n color: var(--bs-emphasis-color);\n}\n@media (min-width: 768px) {\n .faq-page .faq-hero-title {\n font-size: 2.75rem;\n }\n}\n.faq-page .faq-hero-lead {\n max-width: 36rem;\n margin: 0 auto 1.75rem;\n font-size: 1.05rem;\n line-height: 1.55;\n color: var(--bs-secondary-color);\n}\n.faq-page .faq-search {\n position: relative;\n max-width: 32rem;\n margin: 0 auto;\n}\n.faq-page .faq-search .form-control {\n height: 3rem;\n padding-right: 3rem;\n padding-left: 3rem;\n font-size: 1rem;\n background: var(--bs-body-bg);\n border-radius: 50rem;\n transition: box-shadow 0.15s ease, border-color 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-search .form-control {\n transition: none;\n }\n}\n.faq-page .faq-search .form-control:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.15);\n}\n.faq-page .faq-search-icon {\n position: absolute;\n top: 50%;\n left: 1.2rem;\n color: var(--bs-secondary-color);\n pointer-events: none;\n transform: translateY(-50%);\n}\n.faq-page .faq-search-clear {\n position: absolute;\n top: 50%;\n right: 0.65rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n color: var(--bs-secondary-color);\n background: var(--bs-tertiary-bg);\n border: 0;\n transform: translateY(-50%);\n border-radius: 50%;\n transition: background 0.15s ease, color 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-search-clear {\n transition: none;\n }\n}\n.faq-page .faq-search-clear:hover {\n color: var(--bs-body-color);\n background: var(--bs-secondary-bg);\n}\n.faq-page .faq-empty-state {\n max-width: 32rem;\n padding: 1rem;\n margin: 1.5rem auto 0;\n font-size: 0.95rem;\n color: var(--bs-secondary-color);\n background: var(--bs-tertiary-bg);\n border-radius: 0.375rem;\n}\n.faq-page .faq-empty-state .bi {\n margin-right: 0.35rem;\n}\n.faq-page .faq-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: center;\n}\n.faq-page .faq-chip {\n display: inline-flex;\n gap: 0.45rem;\n align-items: center;\n padding: 0.45rem 0.85rem;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--bs-body-color);\n text-decoration: none;\n background: var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 50rem;\n transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-chip {\n transition: none;\n }\n}\n.faq-page .faq-chip:hover {\n color: var(--bs-emphasis-color);\n background: var(--bs-tertiary-bg);\n transform: translateY(-1px);\n}\n.faq-page .faq-chip .bi {\n font-size: 1rem;\n}\n.faq-page .faq-chip-count {\n padding: 0 0.45rem;\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--bs-secondary-color);\n background: var(--bs-tertiary-bg);\n border-radius: 50rem;\n}\n.faq-page .faq-chip-primary:hover {\n color: var(--bs-primary-text-emphasis);\n background: var(--bs-primary-bg-subtle);\n border-color: var(--bs-primary-border-subtle);\n}\n.faq-page .faq-chip-primary:hover .faq-chip-count {\n color: var(--bs-primary-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-info:hover {\n color: var(--bs-info-text-emphasis);\n background: var(--bs-info-bg-subtle);\n border-color: var(--bs-info-border-subtle);\n}\n.faq-page .faq-chip-info:hover .faq-chip-count {\n color: var(--bs-info-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-warning:hover {\n color: var(--bs-warning-text-emphasis);\n background: var(--bs-warning-bg-subtle);\n border-color: var(--bs-warning-border-subtle);\n}\n.faq-page .faq-chip-warning:hover .faq-chip-count {\n color: var(--bs-warning-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-success:hover {\n color: var(--bs-success-text-emphasis);\n background: var(--bs-success-bg-subtle);\n border-color: var(--bs-success-border-subtle);\n}\n.faq-page .faq-chip-success:hover .faq-chip-count {\n color: var(--bs-success-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-danger:hover {\n color: var(--bs-danger-text-emphasis);\n background: var(--bs-danger-bg-subtle);\n border-color: var(--bs-danger-border-subtle);\n}\n.faq-page .faq-chip-danger:hover .faq-chip-count {\n color: var(--bs-danger-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-secondary:hover {\n color: var(--bs-secondary-text-emphasis);\n background: var(--bs-secondary-bg-subtle);\n border-color: var(--bs-secondary-border-subtle);\n}\n.faq-page .faq-chip-secondary:hover .faq-chip-count {\n color: var(--bs-secondary-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-section {\n margin-bottom: 2.5rem;\n scroll-margin-top: 5rem;\n}\n.faq-page .faq-section-header {\n display: flex;\n gap: 1rem;\n align-items: center;\n padding: 1rem 1.25rem;\n margin-bottom: 1rem;\n background: var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-left: 4px solid var(--bs-primary);\n border-radius: 0.375rem;\n}\n.faq-page .faq-section-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 2.75rem;\n height: 2.75rem;\n font-size: 1.35rem;\n color: var(--bs-primary);\n background: var(--bs-primary-bg-subtle);\n border-radius: 0.375rem;\n}\n.faq-page .faq-section-title {\n margin: 0;\n font-size: 1.4rem;\n font-weight: 600;\n line-height: 1.2;\n color: var(--bs-emphasis-color);\n}\n.faq-page .faq-section-count {\n margin: 0.1rem 0 0;\n font-size: 0.8rem;\n color: var(--bs-secondary-color);\n}\n.faq-page .faq-section-primary {\n border-left-color: var(--bs-primary);\n}\n.faq-page .faq-section-primary .faq-section-icon {\n color: var(--bs-primary-text-emphasis);\n background: var(--bs-primary-bg-subtle);\n}\n.faq-page .faq-section-info {\n border-left-color: var(--bs-info);\n}\n.faq-page .faq-section-info .faq-section-icon {\n color: var(--bs-info-text-emphasis);\n background: var(--bs-info-bg-subtle);\n}\n.faq-page .faq-section-warning {\n border-left-color: var(--bs-warning);\n}\n.faq-page .faq-section-warning .faq-section-icon {\n color: var(--bs-warning-text-emphasis);\n background: var(--bs-warning-bg-subtle);\n}\n.faq-page .faq-section-success {\n border-left-color: var(--bs-success);\n}\n.faq-page .faq-section-success .faq-section-icon {\n color: var(--bs-success-text-emphasis);\n background: var(--bs-success-bg-subtle);\n}\n.faq-page .faq-section-danger {\n border-left-color: var(--bs-danger);\n}\n.faq-page .faq-section-danger .faq-section-icon {\n color: var(--bs-danger-text-emphasis);\n background: var(--bs-danger-bg-subtle);\n}\n.faq-page .faq-section-secondary {\n border-left-color: var(--bs-secondary);\n}\n.faq-page .faq-section-secondary .faq-section-icon {\n color: var(--bs-secondary-text-emphasis);\n background: var(--bs-secondary-bg-subtle);\n}\n.faq-page .faq-section-items .faq-item {\n margin-bottom: 0.5rem;\n overflow: hidden;\n background: var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 0.375rem;\n transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-section-items .faq-item {\n transition: none;\n }\n}\n.faq-page .faq-section-items .faq-item:hover {\n border-color: var(--bs-primary-border-subtle);\n transform: translateX(2px);\n}\n.faq-page .faq-section-items .faq-item[open] {\n border-color: var(--bs-primary-border-subtle);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n transform: none;\n}\n.faq-page .faq-section-items .faq-item summary {\n display: flex;\n gap: 0.85rem;\n align-items: center;\n padding: 1rem 1.25rem;\n font-size: 1rem;\n font-weight: 500;\n color: var(--bs-emphasis-color);\n list-style: none;\n cursor: pointer;\n user-select: none;\n}\n.faq-page .faq-section-items .faq-item summary::-webkit-details-marker {\n display: none;\n}\n.faq-page .faq-section-items .faq-item summary::marker {\n content: \"\";\n}\n.faq-page .faq-section-items .faq-item summary::after {\n content: none;\n}\n.faq-page .faq-section-items .faq-item .faq-q-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n height: 1.75rem;\n font-size: 0.85rem;\n color: var(--bs-primary);\n background: var(--bs-primary-bg-subtle);\n border-radius: 50%;\n}\n.faq-page .faq-section-items .faq-item .faq-q-text {\n flex-grow: 1;\n}\n.faq-page .faq-section-items .faq-item .faq-q-chevron {\n flex-shrink: 0;\n color: var(--bs-secondary-color);\n transition: transform 0.2s ease, color 0.2s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-section-items .faq-item .faq-q-chevron {\n transition: none;\n }\n}\n.faq-page .faq-section-items .faq-item[open] .faq-q-chevron {\n color: var(--bs-primary);\n transform: rotate(180deg);\n}\n.faq-page .faq-section-items .faq-item[open] summary {\n color: var(--bs-primary);\n border-bottom: 1px solid var(--bs-border-color);\n}\n.faq-page .faq-section-items .faq-item .faq-answer {\n padding: 1.1rem 1.25rem 1.1rem 3.85rem;\n font-size: 0.95rem;\n line-height: 1.65;\n color: var(--bs-body-color);\n}\n.faq-page .faq-section-items .faq-item .faq-answer p:last-child,\n.faq-page .faq-section-items .faq-item .faq-answer ul:last-child,\n.faq-page .faq-section-items .faq-item .faq-answer ol:last-child,\n.faq-page .faq-section-items .faq-item .faq-answer pre:last-child {\n margin-bottom: 0;\n}\n.faq-page .faq-section-items .faq-item .faq-answer a {\n color: var(--bs-primary);\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n.faq-page .faq-section-items .faq-item .faq-answer a:hover {\n text-decoration-thickness: 2px;\n}\n.faq-page .faq-section-items .faq-item .faq-answer code {\n padding: 0.12em 0.35em;\n font-size: 0.875em;\n color: var(--bs-emphasis-color);\n background: var(--bs-tertiary-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 0.25rem;\n}\n.faq-page .faq-section-items .faq-item .faq-answer pre.astro-code,\n.faq-page .faq-section-items .faq-item .faq-answer pre {\n padding: 0.85rem 1rem;\n margin-top: 0.75rem;\n margin-bottom: 0.75rem;\n overflow-x: auto;\n font-size: 0.85rem;\n line-height: 1.55;\n border-radius: 0.25rem;\n}\n.faq-page .faq-section-items .faq-item .faq-answer pre.astro-code code,\n.faq-page .faq-section-items .faq-item .faq-answer pre code {\n padding: 0;\n background: transparent;\n border: 0;\n}\n.faq-page .faq-cta {\n padding: 2.5rem 1.5rem;\n text-align: center;\n background: radial-gradient(ellipse at top, rgba(var(--bs-primary-rgb), 0.08), transparent 60%), var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 1rem;\n}\n.faq-page .faq-cta-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n margin-bottom: 1rem;\n font-size: 1.6rem;\n color: var(--bs-primary);\n background: var(--bs-primary-bg-subtle);\n border-radius: 50%;\n}\n.faq-page .faq-cta h2 {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--bs-emphasis-color);\n}\n.faq-page .faq-cta p {\n max-width: 32rem;\n margin: 0 auto 1.5rem;\n color: var(--bs-secondary-color);\n}\n.faq-page .faq-cta-actions {\n display: inline-flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: center;\n}\n\n/*# sourceMappingURL=adminlte-docs.css.map */\n","/*!\n * AdminLTE v4.0.4 — documentation styles\n * Styles for the documentation and FAQ pages only (body.docs-page /\n * body.faq-page). Applications never need this file; it is loaded by the\n * docs pages in addition to adminlte.css.\n */\n\n// Bootstrap Configuration\n// ---------------------------------------------------\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap-overrides\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n\n// AdminLTE Configuration\n// ---------------------------------------------------\n@import \"variables\";\n@import \"variables-dark\";\n@import \"mixins\";\n\n// Documentation styles\n// ---------------------------------------------------\n@import \"docs\";\n","//\n// Mixins: Animation\n//\n\n\n@keyframes flipInX {\n 0% {\n opacity: 0;\n transition-timing-function: ease-in;\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n }\n\n 40% {\n transition-timing-function: ease-in;\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n }\n\n 60% {\n opacity: 1;\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n }\n\n 80% {\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n 100% {\n transform: perspective(400px);\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes shake {\n 0% {\n transform: translate(2px, 1px) rotate(0deg);\n }\n 10% {\n transform: translate(-1px, -2px) rotate(-2deg);\n }\n 20% {\n transform: translate(-3px, 0) rotate(3deg);\n }\n 30% {\n transform: translate(0, 2px) rotate(0deg);\n }\n 40% {\n transform: translate(1px, -1px) rotate(1deg);\n }\n 50% {\n transform: translate(-1px, 2px) rotate(-1deg);\n }\n 60% {\n transform: translate(-3px, 1px) rotate(0deg);\n }\n 70% {\n transform: translate(2px, 1px) rotate(-2deg);\n }\n 80% {\n transform: translate(-1px, -1px) rotate(4deg);\n }\n 90% {\n transform: translate(2px, 2px) rotate(0deg);\n }\n 100% {\n transform: translate(1px, -2px) rotate(-1deg);\n }\n}\n\n@keyframes wobble {\n 0% {\n transform: none;\n }\n\n 15% {\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n 100% {\n transform: none;\n }\n}\n","//\n// Component: Docs\n//\n// Visual treatment for documentation pages. Body class `.docs-page` opts in.\n// Demo pages are not affected.\n//\n\n// Inline code blocks rendered by MDX (Astro highlight default class)\n.astro-code {\n padding: .75rem;\n @include border-radius($border-radius);\n}\n\n.docs-page {\n // Constrain the docs card to a comfortable reading width.\n // Tables and code blocks inside can still scroll horizontally if needed.\n .app-content > .container-fluid {\n max-width: 60rem; // ~960px\n\n @include media-breakpoint-up(xxl) {\n max-width: 64rem;\n }\n }\n\n //\n // Card body — breathing room + prose typography.\n // Only applied inside docs content cards so demo-page card content\n // stays unchanged.\n //\n .card > .card-body {\n padding: 1.5rem;\n font-size: 1rem;\n line-height: 1.7;\n color: var(--#{$prefix}body-color);\n\n @include media-breakpoint-up(md) {\n padding: 2.5rem;\n }\n\n //\n // Heading hierarchy. The MDX content in src/html/components/docs/ uses\n // ##### (h5) as the dominant section heading and ###### (h6) as a\n // sub-heading (most visible in FAQ.mdx, where h5 is a topic and h6 is\n // a question). Style h5 as a major section and h6 as a sub-section so\n // the visual hierarchy matches the semantic one.\n //\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n .h1,\n .h2,\n .h3,\n .h4,\n .h5,\n .h6 {\n margin-top: 2em;\n margin-bottom: .5em;\n font-weight: 600;\n line-height: 1.3;\n color: var(--#{$prefix}emphasis-color);\n scroll-margin-top: 4rem; // anchor-link friendly\n\n &:first-child {\n margin-top: 0;\n }\n }\n\n h2,\n .h2 {\n padding-bottom: .35em;\n font-size: 1.75rem;\n border-bottom: 1px solid var(--#{$prefix}border-color);\n }\n\n h3,\n .h3 {\n font-size: 1.4rem;\n }\n\n h4,\n .h4 {\n font-size: 1.2rem;\n }\n\n // h5 is the dominant section heading across docs MDX files. Give it\n // a visible separator above so sections are easy to scan.\n h5,\n .h5 {\n padding-top: 1.5em;\n margin-top: 2.5em;\n font-size: 1.3rem;\n border-top: 1px solid var(--#{$prefix}border-color);\n\n &:first-child {\n padding-top: 0;\n border-top: 0;\n }\n }\n\n // h6 is the sub-section / FAQ question style. Smaller than h5 but\n // still distinctly heading-like, with a touch of accent colour to\n // separate from body text.\n h6,\n .h6 {\n margin-top: 1.75em;\n font-size: 1.08rem;\n color: var(--#{$prefix}emphasis-color);\n }\n\n //\n // Paragraphs and lists.\n //\n p,\n ul,\n ol,\n dl,\n blockquote,\n table {\n margin-bottom: 1.1rem;\n }\n\n ul,\n ol {\n padding-left: 1.5rem;\n\n li {\n margin-bottom: .35rem;\n }\n\n // Tighter nested lists\n ul,\n ol {\n margin-top: .35rem;\n margin-bottom: 0;\n }\n }\n\n // Lead-style first paragraph (just after a heading)\n h2 + p,\n h3 + p,\n h5 + p {\n margin-top: 0;\n }\n\n //\n // Inline code — pill style that complements MDX's syntax-highlighted blocks.\n //\n p code,\n li code,\n td code,\n th code,\n h2 code,\n h3 code,\n h4 code,\n h5 code,\n h6 code {\n padding: .15em .4em;\n font-size: .875em;\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}tertiary-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-sm);\n }\n\n //\n // Code blocks.\n //\n pre.astro-code,\n pre {\n padding: 1rem 1.25rem;\n margin-top: 1.25rem;\n margin-bottom: 1.5rem;\n overflow-x: auto;\n font-size: .875rem;\n line-height: 1.6;\n @include border-radius($border-radius);\n\n code {\n padding: 0;\n background: transparent;\n border: 0;\n }\n }\n\n //\n // Tables — reference-doc styling with hairline borders.\n //\n table {\n width: 100%;\n margin-top: 1.25rem;\n margin-bottom: 1.5rem;\n overflow: hidden;\n font-size: .95rem;\n border-collapse: collapse;\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-sm);\n\n th,\n td {\n padding: .65rem .9rem;\n text-align: left;\n vertical-align: top;\n border-bottom: 1px solid var(--#{$prefix}border-color);\n }\n\n th {\n font-weight: 600;\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}tertiary-bg);\n }\n\n tr:last-child td {\n border-bottom: 0;\n }\n\n code {\n white-space: nowrap;\n }\n }\n\n //\n // Blockquotes used as info callouts.\n //\n blockquote {\n padding: .85rem 1.1rem;\n margin-top: 1.25rem;\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}info-bg-subtle);\n border-left: 4px solid var(--#{$prefix}info-border-subtle);\n @include border-radius($border-radius-sm);\n\n p:last-child {\n margin-bottom: 0;\n }\n\n code {\n background: rgba(0, 0, 0, .05);\n }\n }\n\n //\n // Prose links — stand out more than Bootstrap defaults.\n //\n a:not(.btn):not(.nav-link) {\n color: var(--#{$prefix}primary);\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-underline-offset: 3px;\n\n &:hover {\n text-decoration-thickness: 2px;\n }\n }\n\n //\n // Horizontal rule — used as additional section separator.\n //\n hr {\n margin: 2.5rem 0;\n border: 0;\n border-top: 1px solid var(--#{$prefix}border-color);\n opacity: 1;\n }\n\n //\n // Lead paragraph — the first paragraph in any doc is a summary.\n // Visually heavier so it functions as a deck.\n //\n > p:first-child,\n > p:first-of-type {\n margin-bottom: 2rem;\n font-size: 1.125rem;\n line-height: 1.6;\n color: var(--#{$prefix}body-color);\n }\n\n //\n // FAQ / disclosure accordion — uses native <details>/<summary>.\n // Add `.faq-item` to <details> to opt in.\n //\n details.faq-item {\n margin-bottom: .5rem;\n overflow: hidden;\n background: var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius);\n @include transition(border-color .15s ease, box-shadow .15s ease);\n\n &:hover {\n border-color: var(--#{$prefix}primary-border-subtle);\n }\n\n &[open] {\n background: var(--#{$prefix}body-bg);\n border-color: var(--#{$prefix}primary-border-subtle);\n box-shadow: 0 1px 3px rgba(0, 0, 0, .04);\n }\n\n summary {\n position: relative;\n padding: .9rem 3rem .9rem 1.1rem;\n font-size: 1rem;\n font-weight: 600;\n color: var(--#{$prefix}emphasis-color);\n list-style: none;\n cursor: pointer;\n user-select: none;\n @include transition(color .15s ease);\n\n // Hide the default disclosure triangle in Webkit/Blink\n &::-webkit-details-marker {\n display: none;\n }\n\n // Hide the marker in modern Firefox too\n &::marker {\n content: \"\";\n }\n\n &:hover {\n color: var(--#{$prefix}primary);\n }\n\n // Right-side chevron, rotates on open\n &::after {\n position: absolute;\n top: 50%;\n right: 1.1rem;\n display: inline-block;\n width: .55rem;\n height: .55rem;\n margin-top: -.4rem;\n content: \"\";\n border-right: 2px solid currentcolor;\n border-bottom: 2px solid currentcolor;\n opacity: .55;\n transform: rotate(45deg);\n @include transition(transform .2s ease);\n }\n }\n\n &[open] > summary {\n color: var(--#{$prefix}primary);\n border-bottom: 1px solid var(--#{$prefix}border-color);\n\n &::after {\n margin-top: -.15rem;\n opacity: 1;\n transform: rotate(-135deg);\n }\n }\n\n // Content (everything after <summary>) gets the inner padding\n > *:not(summary) {\n padding-right: 1.1rem;\n padding-left: 1.1rem;\n }\n\n > *:not(summary):first-of-type {\n padding-top: 1rem;\n }\n\n > *:not(summary):last-child {\n padding-bottom: 1rem;\n }\n\n // Tighten paragraphs/lists inside an FAQ answer\n p,\n ul,\n ol {\n margin-bottom: .65rem;\n }\n\n > *:last-child p:last-child,\n > p:last-child,\n > ul:last-child,\n > ol:last-child {\n margin-bottom: 0;\n }\n\n // Code blocks inside an FAQ answer get a less-distracting bg\n pre.astro-code,\n pre {\n margin-right: 0;\n margin-left: 0;\n }\n }\n }\n\n // Dark-mode tweak: blockquote info bg needs more contrast on dark\n &[data-bs-theme=\"dark\"],\n [data-bs-theme=\"dark\"] & {\n .card > .card-body blockquote code {\n background: rgba(255, 255, 255, .08);\n }\n }\n}\n\n//\n// FAQ page — custom layout that breaks out of the standard docs card\n// to give the FAQ a more distinctive visual identity. Opt in via\n// body.faq-page (set in pages/docs/faq.astro).\n//\n\n.faq-page {\n // The FAQ doesn't use the standard card wrapper used by other docs,\n // so the container can stretch wider for the chip strip and section\n // grid.\n .app-content > .container-fluid {\n max-width: 64rem;\n\n @include media-breakpoint-up(xxl) {\n max-width: 72rem;\n }\n }\n\n // --- Hero -------------------------------------------------------------\n .faq-hero {\n position: relative;\n padding: 3rem 1.5rem 2.5rem;\n margin-top: 1rem;\n overflow: hidden;\n background: radial-gradient(ellipse at top left, rgba(var(--#{$prefix}primary-rgb), .12), transparent 60%), radial-gradient(ellipse at bottom right, rgba(var(--#{$prefix}info-rgb), .1), transparent 65%), var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-xl);\n }\n\n .faq-hero-eyebrow {\n display: inline-flex;\n gap: .4rem;\n align-items: center;\n padding: .35rem .85rem;\n margin-bottom: 1rem;\n font-size: .75rem;\n font-weight: 600;\n color: var(--#{$prefix}primary);\n text-transform: uppercase;\n letter-spacing: .08em;\n background: var(--#{$prefix}primary-bg-subtle);\n border: 1px solid var(--#{$prefix}primary-border-subtle);\n @include border-radius(50rem);\n\n .bi {\n font-size: .9rem;\n }\n }\n\n .faq-hero-title {\n margin: 0 0 .5rem;\n font-size: 2.25rem;\n font-weight: 700;\n line-height: 1.15;\n color: var(--#{$prefix}emphasis-color);\n\n @include media-breakpoint-up(md) {\n font-size: 2.75rem;\n }\n }\n\n .faq-hero-lead {\n max-width: 36rem;\n margin: 0 auto 1.75rem;\n font-size: 1.05rem;\n line-height: 1.55;\n color: var(--#{$prefix}secondary-color);\n }\n\n .faq-search {\n position: relative;\n max-width: 32rem;\n margin: 0 auto;\n\n .form-control {\n height: 3rem;\n padding-right: 3rem;\n padding-left: 3rem;\n font-size: 1rem;\n background: var(--#{$prefix}body-bg);\n @include border-radius(50rem);\n @include transition(box-shadow .15s ease, border-color .15s ease);\n\n &:focus {\n box-shadow: 0 0 0 .25rem rgba(var(--#{$prefix}primary-rgb), .15);\n }\n }\n }\n\n .faq-search-icon {\n position: absolute;\n top: 50%;\n left: 1.2rem;\n color: var(--#{$prefix}secondary-color);\n pointer-events: none;\n transform: translateY(-50%);\n }\n\n .faq-search-clear {\n position: absolute;\n top: 50%;\n right: .65rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n color: var(--#{$prefix}secondary-color);\n background: var(--#{$prefix}tertiary-bg);\n border: 0;\n transform: translateY(-50%);\n @include border-radius(50%);\n @include transition(background .15s ease, color .15s ease);\n\n &:hover {\n color: var(--#{$prefix}body-color);\n background: var(--#{$prefix}secondary-bg);\n }\n }\n\n .faq-empty-state {\n max-width: 32rem;\n padding: 1rem;\n margin: 1.5rem auto 0;\n font-size: .95rem;\n color: var(--#{$prefix}secondary-color);\n background: var(--#{$prefix}tertiary-bg);\n @include border-radius($border-radius);\n\n .bi {\n margin-right: .35rem;\n }\n }\n\n // --- Section nav chips ------------------------------------------------\n .faq-chips {\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n justify-content: center;\n }\n\n .faq-chip {\n display: inline-flex;\n gap: .45rem;\n align-items: center;\n padding: .45rem .85rem;\n font-size: .875rem;\n font-weight: 500;\n color: var(--#{$prefix}body-color);\n text-decoration: none;\n background: var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius(50rem);\n @include transition(transform .15s ease, border-color .15s ease, background-color .15s ease, color .15s ease);\n\n &:hover {\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}tertiary-bg);\n transform: translateY(-1px);\n }\n\n .bi {\n font-size: 1rem;\n }\n }\n\n .faq-chip-count {\n padding: 0 .45rem;\n font-size: .7rem;\n font-weight: 600;\n color: var(--#{$prefix}secondary-color);\n background: var(--#{$prefix}tertiary-bg);\n @include border-radius(50rem);\n }\n\n // Per-section chip accent on hover/active\n @each $tone in (primary, info, warning, success, danger, secondary) {\n .faq-chip-#{$tone}:hover {\n color: var(--#{$prefix}#{$tone}-text-emphasis);\n background: var(--#{$prefix}#{$tone}-bg-subtle);\n border-color: var(--#{$prefix}#{$tone}-border-subtle);\n\n .faq-chip-count {\n color: var(--#{$prefix}#{$tone}-text-emphasis);\n background: rgba(0, 0, 0, .06);\n }\n }\n }\n\n // --- Sections ---------------------------------------------------------\n .faq-section {\n margin-bottom: 2.5rem;\n scroll-margin-top: 5rem;\n }\n\n .faq-section-header {\n display: flex;\n gap: 1rem;\n align-items: center;\n padding: 1rem 1.25rem;\n margin-bottom: 1rem;\n background: var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n border-left: 4px solid var(--#{$prefix}primary);\n @include border-radius($border-radius);\n }\n\n .faq-section-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 2.75rem;\n height: 2.75rem;\n font-size: 1.35rem;\n color: var(--#{$prefix}primary);\n background: var(--#{$prefix}primary-bg-subtle);\n @include border-radius($border-radius);\n }\n\n .faq-section-title {\n margin: 0;\n font-size: 1.4rem;\n font-weight: 600;\n line-height: 1.2;\n color: var(--#{$prefix}emphasis-color);\n }\n\n .faq-section-count {\n margin: .1rem 0 0;\n font-size: .8rem;\n color: var(--#{$prefix}secondary-color);\n }\n\n // Per-section tone accents\n @each $tone in (primary, info, warning, success, danger, secondary) {\n .faq-section-#{$tone} {\n border-left-color: var(--#{$prefix}#{$tone});\n\n .faq-section-icon {\n color: var(--#{$prefix}#{$tone}-text-emphasis);\n background: var(--#{$prefix}#{$tone}-bg-subtle);\n }\n }\n }\n\n // --- FAQ items (override the generic .docs-page details styling) ------\n .faq-section-items .faq-item {\n margin-bottom: .5rem;\n overflow: hidden;\n background: var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius);\n @include transition(border-color .15s ease, box-shadow .15s ease, transform .15s ease);\n\n &:hover {\n border-color: var(--#{$prefix}primary-border-subtle);\n transform: translateX(2px);\n }\n\n &[open] {\n border-color: var(--#{$prefix}primary-border-subtle);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .04);\n transform: none;\n }\n\n summary {\n display: flex;\n gap: .85rem;\n align-items: center;\n padding: 1rem 1.25rem;\n font-size: 1rem;\n font-weight: 500;\n color: var(--#{$prefix}emphasis-color);\n list-style: none;\n cursor: pointer;\n user-select: none;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::marker {\n content: \"\";\n }\n\n &::after {\n content: none; // disable the generic chevron, we use our own\n }\n }\n\n .faq-q-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n height: 1.75rem;\n font-size: .85rem;\n color: var(--#{$prefix}primary);\n background: var(--#{$prefix}primary-bg-subtle);\n @include border-radius(50%);\n }\n\n .faq-q-text {\n flex-grow: 1;\n }\n\n .faq-q-chevron {\n flex-shrink: 0;\n color: var(--#{$prefix}secondary-color);\n @include transition(transform .2s ease, color .2s ease);\n }\n\n &[open] .faq-q-chevron {\n color: var(--#{$prefix}primary);\n transform: rotate(180deg);\n }\n\n &[open] summary {\n color: var(--#{$prefix}primary);\n border-bottom: 1px solid var(--#{$prefix}border-color);\n }\n\n .faq-answer {\n padding: 1.1rem 1.25rem 1.1rem 3.85rem; // align with the question text (icon + gap)\n font-size: .95rem;\n line-height: 1.65;\n color: var(--#{$prefix}body-color);\n\n p:last-child,\n ul:last-child,\n ol:last-child,\n pre:last-child {\n margin-bottom: 0;\n }\n\n a {\n color: var(--#{$prefix}primary);\n text-decoration: underline;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-thickness: 2px;\n }\n }\n\n code {\n padding: .12em .35em;\n font-size: .875em;\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}tertiary-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-sm);\n }\n\n pre.astro-code,\n pre {\n padding: .85rem 1rem;\n margin-top: .75rem;\n margin-bottom: .75rem;\n overflow-x: auto;\n font-size: .85rem;\n line-height: 1.55;\n @include border-radius($border-radius-sm);\n\n code {\n padding: 0;\n background: transparent;\n border: 0;\n }\n }\n }\n }\n\n // --- CTA footer -------------------------------------------------------\n .faq-cta {\n padding: 2.5rem 1.5rem;\n text-align: center;\n background: radial-gradient(ellipse at top, rgba(var(--#{$prefix}primary-rgb), .08), transparent 60%), var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-xl);\n }\n\n .faq-cta-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n margin-bottom: 1rem;\n font-size: 1.6rem;\n color: var(--#{$prefix}primary);\n background: var(--#{$prefix}primary-bg-subtle);\n @include border-radius(50%);\n }\n\n .faq-cta h2 {\n margin: 0 0 .5rem;\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--#{$prefix}emphasis-color);\n }\n\n .faq-cta p {\n max-width: 32rem;\n margin: 0 auto 1.5rem;\n color: var(--#{$prefix}secondary-color);\n }\n\n .faq-cta-actions {\n display: inline-flex;\n flex-wrap: wrap;\n gap: .5rem;\n justify-content: center;\n }\n}\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n $return: ();\n @each $value in $radius {\n @if type-of($value) == number {\n $return: append($return, max($value, 0));\n } @else {\n $return: append($return, $value);\n }\n }\n @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: valid-radius($radius);\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n// scss-docs-end border-radius-mixins\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n @if length($transition) == 0 {\n $transition: $transition-base;\n }\n\n @if length($transition) > 1 {\n @each $value in $transition {\n @if $value == null or $value == none {\n @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n }\n }\n }\n\n @if $enable-transitions {\n @if nth($transition, 1) != null {\n transition: $transition;\n }\n\n @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["adminlte-docs.css","../../src/scss/adminlte-docs.scss","../../src/scss/mixins/_animations.scss","../../src/scss/_docs.scss","../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../node_modules/bootstrap/scss/mixins/_transition.scss"],"names":[],"mappings":"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","file":"adminlte-docs.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * AdminLTE v4.2.0 — documentation styles\n * Styles for the documentation and FAQ pages only (body.docs-page /\n * body.faq-page). Applications never need this file; it is loaded by the\n * docs pages in addition to adminlte.css.\n */\n@keyframes flipInX {\n 0% {\n opacity: 0;\n transition-timing-function: ease-in;\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n }\n 40% {\n transition-timing-function: ease-in;\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n }\n 60% {\n opacity: 1;\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n }\n 80% {\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n 100% {\n transform: perspective(400px);\n }\n}\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes shake {\n 0% {\n transform: translate(2px, 1px) rotate(0deg);\n }\n 10% {\n transform: translate(-1px, -2px) rotate(-2deg);\n }\n 20% {\n transform: translate(-3px, 0) rotate(3deg);\n }\n 30% {\n transform: translate(0, 2px) rotate(0deg);\n }\n 40% {\n transform: translate(1px, -1px) rotate(1deg);\n }\n 50% {\n transform: translate(-1px, 2px) rotate(-1deg);\n }\n 60% {\n transform: translate(-3px, 1px) rotate(0deg);\n }\n 70% {\n transform: translate(2px, 1px) rotate(-2deg);\n }\n 80% {\n transform: translate(-1px, -1px) rotate(4deg);\n }\n 90% {\n transform: translate(2px, 2px) rotate(0deg);\n }\n 100% {\n transform: translate(1px, -2px) rotate(-1deg);\n }\n}\n@keyframes wobble {\n 0% {\n transform: none;\n }\n 15% {\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n 30% {\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n 45% {\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n 60% {\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n 75% {\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n 100% {\n transform: none;\n }\n}\n.astro-code {\n padding: 0.75rem;\n border-radius: 0.375rem;\n}\n\n.docs-page .app-content > .container-fluid {\n max-width: 60rem;\n}\n@media (min-width: 1400px) {\n .docs-page .app-content > .container-fluid {\n max-width: 64rem;\n }\n}\n.docs-page .card > .card-body {\n padding: 1.5rem;\n font-size: 1rem;\n line-height: 1.7;\n color: var(--bs-body-color);\n}\n@media (min-width: 768px) {\n .docs-page .card > .card-body {\n padding: 2.5rem;\n }\n}\n.docs-page .card > .card-body h1,\n.docs-page .card > .card-body h2,\n.docs-page .card > .card-body h3,\n.docs-page .card > .card-body h4,\n.docs-page .card > .card-body h5,\n.docs-page .card > .card-body h6,\n.docs-page .card > .card-body .h1,\n.docs-page .card > .card-body .h2,\n.docs-page .card > .card-body .h3,\n.docs-page .card > .card-body .h4,\n.docs-page .card > .card-body .h5,\n.docs-page .card > .card-body .h6 {\n margin-top: 2em;\n margin-bottom: 0.5em;\n font-weight: 600;\n line-height: 1.3;\n color: var(--bs-emphasis-color);\n scroll-margin-top: 4rem;\n}\n.docs-page .card > .card-body h1:first-child,\n.docs-page .card > .card-body h2:first-child,\n.docs-page .card > .card-body h3:first-child,\n.docs-page .card > .card-body h4:first-child,\n.docs-page .card > .card-body h5:first-child,\n.docs-page .card > .card-body h6:first-child,\n.docs-page .card > .card-body .h1:first-child,\n.docs-page .card > .card-body .h2:first-child,\n.docs-page .card > .card-body .h3:first-child,\n.docs-page .card > .card-body .h4:first-child,\n.docs-page .card > .card-body .h5:first-child,\n.docs-page .card > .card-body .h6:first-child {\n margin-top: 0;\n}\n.docs-page .card > .card-body h2,\n.docs-page .card > .card-body .h2 {\n padding-bottom: 0.35em;\n font-size: 1.75rem;\n border-bottom: 1px solid var(--bs-border-color);\n}\n.docs-page .card > .card-body h3,\n.docs-page .card > .card-body .h3 {\n font-size: 1.4rem;\n}\n.docs-page .card > .card-body h4,\n.docs-page .card > .card-body .h4 {\n font-size: 1.2rem;\n}\n.docs-page .card > .card-body h5,\n.docs-page .card > .card-body .h5 {\n padding-top: 1.5em;\n margin-top: 2.5em;\n font-size: 1.3rem;\n border-top: 1px solid var(--bs-border-color);\n}\n.docs-page .card > .card-body h5:first-child,\n.docs-page .card > .card-body .h5:first-child {\n padding-top: 0;\n border-top: 0;\n}\n.docs-page .card > .card-body h6,\n.docs-page .card > .card-body .h6 {\n margin-top: 1.75em;\n font-size: 1.08rem;\n color: var(--bs-emphasis-color);\n}\n.docs-page .card > .card-body p,\n.docs-page .card > .card-body ul,\n.docs-page .card > .card-body ol,\n.docs-page .card > .card-body dl,\n.docs-page .card > .card-body blockquote,\n.docs-page .card > .card-body table {\n margin-bottom: 1.1rem;\n}\n.docs-page .card > .card-body ul,\n.docs-page .card > .card-body ol {\n padding-left: 1.5rem;\n}\n.docs-page .card > .card-body ul li,\n.docs-page .card > .card-body ol li {\n margin-bottom: 0.35rem;\n}\n.docs-page .card > .card-body ul ul,\n.docs-page .card > .card-body ul ol,\n.docs-page .card > .card-body ol ul,\n.docs-page .card > .card-body ol ol {\n margin-top: 0.35rem;\n margin-bottom: 0;\n}\n.docs-page .card > .card-body h2 + p,\n.docs-page .card > .card-body h3 + p,\n.docs-page .card > .card-body h5 + p {\n margin-top: 0;\n}\n.docs-page .card > .card-body p code,\n.docs-page .card > .card-body li code,\n.docs-page .card > .card-body td code,\n.docs-page .card > .card-body th code,\n.docs-page .card > .card-body h2 code,\n.docs-page .card > .card-body h3 code,\n.docs-page .card > .card-body h4 code,\n.docs-page .card > .card-body h5 code,\n.docs-page .card > .card-body h6 code {\n padding: 0.15em 0.4em;\n font-size: 0.875em;\n color: var(--bs-emphasis-color);\n background: var(--bs-tertiary-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 0.25rem;\n}\n.docs-page .card > .card-body pre.astro-code,\n.docs-page .card > .card-body pre {\n padding: 1rem 1.25rem;\n margin-top: 1.25rem;\n margin-bottom: 1.5rem;\n overflow-x: auto;\n font-size: 0.875rem;\n line-height: 1.6;\n border-radius: 0.375rem;\n}\n.docs-page .card > .card-body pre.astro-code code,\n.docs-page .card > .card-body pre code {\n padding: 0;\n background: transparent;\n border: 0;\n}\n.docs-page .card > .card-body table {\n width: 100%;\n margin-top: 1.25rem;\n margin-bottom: 1.5rem;\n overflow: hidden;\n font-size: 0.95rem;\n border-collapse: collapse;\n border: 1px solid var(--bs-border-color);\n border-radius: 0.25rem;\n}\n.docs-page .card > .card-body table th,\n.docs-page .card > .card-body table td {\n padding: 0.65rem 0.9rem;\n text-align: left;\n vertical-align: top;\n border-bottom: 1px solid var(--bs-border-color);\n}\n.docs-page .card > .card-body table th {\n font-weight: 600;\n color: var(--bs-emphasis-color);\n background: var(--bs-tertiary-bg);\n}\n.docs-page .card > .card-body table tr:last-child td {\n border-bottom: 0;\n}\n.docs-page .card > .card-body table code {\n white-space: nowrap;\n}\n.docs-page .card > .card-body blockquote {\n padding: 0.85rem 1.1rem;\n margin-top: 1.25rem;\n color: var(--bs-emphasis-color);\n background: var(--bs-info-bg-subtle);\n border-left: 4px solid var(--bs-info-border-subtle);\n border-radius: 0.25rem;\n}\n.docs-page .card > .card-body blockquote p:last-child {\n margin-bottom: 0;\n}\n.docs-page .card > .card-body blockquote code {\n background: rgba(0, 0, 0, 0.05);\n}\n.docs-page .card > .card-body a:not(.btn):not(.nav-link) {\n color: var(--bs-primary);\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-underline-offset: 3px;\n}\n.docs-page .card > .card-body a:not(.btn):not(.nav-link):hover {\n text-decoration-thickness: 2px;\n}\n.docs-page .card > .card-body hr {\n margin: 2.5rem 0;\n border: 0;\n border-top: 1px solid var(--bs-border-color);\n opacity: 1;\n}\n.docs-page .card > .card-body > p:first-child,\n.docs-page .card > .card-body > p:first-of-type {\n margin-bottom: 2rem;\n font-size: 1.125rem;\n line-height: 1.6;\n color: var(--bs-body-color);\n}\n.docs-page .card > .card-body details.faq-item {\n margin-bottom: 0.5rem;\n overflow: hidden;\n background: var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 0.375rem;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .docs-page .card > .card-body details.faq-item {\n transition: none;\n }\n}\n.docs-page .card > .card-body details.faq-item:hover {\n border-color: var(--bs-primary-border-subtle);\n}\n.docs-page .card > .card-body details.faq-item[open] {\n background: var(--bs-body-bg);\n border-color: var(--bs-primary-border-subtle);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n}\n.docs-page .card > .card-body details.faq-item summary {\n position: relative;\n padding: 0.9rem 3rem 0.9rem 1.1rem;\n font-size: 1rem;\n font-weight: 600;\n color: var(--bs-emphasis-color);\n list-style: none;\n cursor: pointer;\n user-select: none;\n transition: color 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .docs-page .card > .card-body details.faq-item summary {\n transition: none;\n }\n}\n.docs-page .card > .card-body details.faq-item summary::-webkit-details-marker {\n display: none;\n}\n.docs-page .card > .card-body details.faq-item summary::marker {\n content: \"\";\n}\n.docs-page .card > .card-body details.faq-item summary:hover {\n color: var(--bs-primary);\n}\n.docs-page .card > .card-body details.faq-item summary::after {\n position: absolute;\n top: 50%;\n right: 1.1rem;\n display: inline-block;\n width: 0.55rem;\n height: 0.55rem;\n margin-top: -0.4rem;\n content: \"\";\n border-right: 2px solid currentcolor;\n border-bottom: 2px solid currentcolor;\n opacity: 0.55;\n transform: rotate(45deg);\n transition: transform 0.2s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .docs-page .card > .card-body details.faq-item summary::after {\n transition: none;\n }\n}\n.docs-page .card > .card-body details.faq-item[open] > summary {\n color: var(--bs-primary);\n border-bottom: 1px solid var(--bs-border-color);\n}\n.docs-page .card > .card-body details.faq-item[open] > summary::after {\n margin-top: -0.15rem;\n opacity: 1;\n transform: rotate(-135deg);\n}\n.docs-page .card > .card-body details.faq-item > *:not(summary) {\n padding-right: 1.1rem;\n padding-left: 1.1rem;\n}\n.docs-page .card > .card-body details.faq-item > *:not(summary):first-of-type {\n padding-top: 1rem;\n}\n.docs-page .card > .card-body details.faq-item > *:not(summary):last-child {\n padding-bottom: 1rem;\n}\n.docs-page .card > .card-body details.faq-item p,\n.docs-page .card > .card-body details.faq-item ul,\n.docs-page .card > .card-body details.faq-item ol {\n margin-bottom: 0.65rem;\n}\n.docs-page .card > .card-body details.faq-item > *:last-child p:last-child,\n.docs-page .card > .card-body details.faq-item > p:last-child,\n.docs-page .card > .card-body details.faq-item > ul:last-child,\n.docs-page .card > .card-body details.faq-item > ol:last-child {\n margin-bottom: 0;\n}\n.docs-page .card > .card-body details.faq-item pre.astro-code,\n.docs-page .card > .card-body details.faq-item pre {\n margin-right: 0;\n margin-left: 0;\n}\n.docs-page[data-bs-theme=dark] .card > .card-body blockquote code, [data-bs-theme=dark] .docs-page .card > .card-body blockquote code {\n background: rgba(255, 255, 255, 0.08);\n}\n\n.faq-page .app-content > .container-fluid {\n max-width: 64rem;\n}\n@media (min-width: 1400px) {\n .faq-page .app-content > .container-fluid {\n max-width: 72rem;\n }\n}\n.faq-page .faq-hero {\n position: relative;\n padding: 3rem 1.5rem 2.5rem;\n margin-top: 1rem;\n overflow: hidden;\n background: radial-gradient(ellipse at top left, rgba(var(--bs-primary-rgb), 0.12), transparent 60%), radial-gradient(ellipse at bottom right, rgba(var(--bs-info-rgb), 0.1), transparent 65%), var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 1rem;\n}\n.faq-page .faq-hero-eyebrow {\n display: inline-flex;\n gap: 0.4rem;\n align-items: center;\n padding: 0.35rem 0.85rem;\n margin-bottom: 1rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--bs-primary);\n text-transform: uppercase;\n letter-spacing: 0.08em;\n background: var(--bs-primary-bg-subtle);\n border: 1px solid var(--bs-primary-border-subtle);\n border-radius: 50rem;\n}\n.faq-page .faq-hero-eyebrow .bi {\n font-size: 0.9rem;\n}\n.faq-page .faq-hero-title {\n margin: 0 0 0.5rem;\n font-size: 2.25rem;\n font-weight: 700;\n line-height: 1.15;\n color: var(--bs-emphasis-color);\n}\n@media (min-width: 768px) {\n .faq-page .faq-hero-title {\n font-size: 2.75rem;\n }\n}\n.faq-page .faq-hero-lead {\n max-width: 36rem;\n margin: 0 auto 1.75rem;\n font-size: 1.05rem;\n line-height: 1.55;\n color: var(--bs-secondary-color);\n}\n.faq-page .faq-search {\n position: relative;\n max-width: 32rem;\n margin: 0 auto;\n}\n.faq-page .faq-search .form-control {\n height: 3rem;\n padding-right: 3rem;\n padding-left: 3rem;\n font-size: 1rem;\n background: var(--bs-body-bg);\n border-radius: 50rem;\n transition: box-shadow 0.15s ease, border-color 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-search .form-control {\n transition: none;\n }\n}\n.faq-page .faq-search .form-control:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.15);\n}\n.faq-page .faq-search-icon {\n position: absolute;\n top: 50%;\n left: 1.2rem;\n color: var(--bs-secondary-color);\n pointer-events: none;\n transform: translateY(-50%);\n}\n.faq-page .faq-search-clear {\n position: absolute;\n top: 50%;\n right: 0.65rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n color: var(--bs-secondary-color);\n background: var(--bs-tertiary-bg);\n border: 0;\n transform: translateY(-50%);\n border-radius: 50%;\n transition: background 0.15s ease, color 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-search-clear {\n transition: none;\n }\n}\n.faq-page .faq-search-clear:hover {\n color: var(--bs-body-color);\n background: var(--bs-secondary-bg);\n}\n.faq-page .faq-empty-state {\n max-width: 32rem;\n padding: 1rem;\n margin: 1.5rem auto 0;\n font-size: 0.95rem;\n color: var(--bs-secondary-color);\n background: var(--bs-tertiary-bg);\n border-radius: 0.375rem;\n}\n.faq-page .faq-empty-state .bi {\n margin-right: 0.35rem;\n}\n.faq-page .faq-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: center;\n}\n.faq-page .faq-chip {\n display: inline-flex;\n gap: 0.45rem;\n align-items: center;\n padding: 0.45rem 0.85rem;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--bs-body-color);\n text-decoration: none;\n background: var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 50rem;\n transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-chip {\n transition: none;\n }\n}\n.faq-page .faq-chip:hover {\n color: var(--bs-emphasis-color);\n background: var(--bs-tertiary-bg);\n transform: translateY(-1px);\n}\n.faq-page .faq-chip .bi {\n font-size: 1rem;\n}\n.faq-page .faq-chip-count {\n padding: 0 0.45rem;\n font-size: 0.7rem;\n font-weight: 600;\n color: var(--bs-secondary-color);\n background: var(--bs-tertiary-bg);\n border-radius: 50rem;\n}\n.faq-page .faq-chip-primary:hover {\n color: var(--bs-primary-text-emphasis);\n background: var(--bs-primary-bg-subtle);\n border-color: var(--bs-primary-border-subtle);\n}\n.faq-page .faq-chip-primary:hover .faq-chip-count {\n color: var(--bs-primary-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-info:hover {\n color: var(--bs-info-text-emphasis);\n background: var(--bs-info-bg-subtle);\n border-color: var(--bs-info-border-subtle);\n}\n.faq-page .faq-chip-info:hover .faq-chip-count {\n color: var(--bs-info-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-warning:hover {\n color: var(--bs-warning-text-emphasis);\n background: var(--bs-warning-bg-subtle);\n border-color: var(--bs-warning-border-subtle);\n}\n.faq-page .faq-chip-warning:hover .faq-chip-count {\n color: var(--bs-warning-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-success:hover {\n color: var(--bs-success-text-emphasis);\n background: var(--bs-success-bg-subtle);\n border-color: var(--bs-success-border-subtle);\n}\n.faq-page .faq-chip-success:hover .faq-chip-count {\n color: var(--bs-success-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-danger:hover {\n color: var(--bs-danger-text-emphasis);\n background: var(--bs-danger-bg-subtle);\n border-color: var(--bs-danger-border-subtle);\n}\n.faq-page .faq-chip-danger:hover .faq-chip-count {\n color: var(--bs-danger-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-chip-secondary:hover {\n color: var(--bs-secondary-text-emphasis);\n background: var(--bs-secondary-bg-subtle);\n border-color: var(--bs-secondary-border-subtle);\n}\n.faq-page .faq-chip-secondary:hover .faq-chip-count {\n color: var(--bs-secondary-text-emphasis);\n background: rgba(0, 0, 0, 0.06);\n}\n.faq-page .faq-section {\n margin-bottom: 2.5rem;\n scroll-margin-top: 5rem;\n}\n.faq-page .faq-section-header {\n display: flex;\n gap: 1rem;\n align-items: center;\n padding: 1rem 1.25rem;\n margin-bottom: 1rem;\n background: var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-left: 4px solid var(--bs-primary);\n border-radius: 0.375rem;\n}\n.faq-page .faq-section-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 2.75rem;\n height: 2.75rem;\n font-size: 1.35rem;\n color: var(--bs-primary);\n background: var(--bs-primary-bg-subtle);\n border-radius: 0.375rem;\n}\n.faq-page .faq-section-title {\n margin: 0;\n font-size: 1.4rem;\n font-weight: 600;\n line-height: 1.2;\n color: var(--bs-emphasis-color);\n}\n.faq-page .faq-section-count {\n margin: 0.1rem 0 0;\n font-size: 0.8rem;\n color: var(--bs-secondary-color);\n}\n.faq-page .faq-section-primary {\n border-left-color: var(--bs-primary);\n}\n.faq-page .faq-section-primary .faq-section-icon {\n color: var(--bs-primary-text-emphasis);\n background: var(--bs-primary-bg-subtle);\n}\n.faq-page .faq-section-info {\n border-left-color: var(--bs-info);\n}\n.faq-page .faq-section-info .faq-section-icon {\n color: var(--bs-info-text-emphasis);\n background: var(--bs-info-bg-subtle);\n}\n.faq-page .faq-section-warning {\n border-left-color: var(--bs-warning);\n}\n.faq-page .faq-section-warning .faq-section-icon {\n color: var(--bs-warning-text-emphasis);\n background: var(--bs-warning-bg-subtle);\n}\n.faq-page .faq-section-success {\n border-left-color: var(--bs-success);\n}\n.faq-page .faq-section-success .faq-section-icon {\n color: var(--bs-success-text-emphasis);\n background: var(--bs-success-bg-subtle);\n}\n.faq-page .faq-section-danger {\n border-left-color: var(--bs-danger);\n}\n.faq-page .faq-section-danger .faq-section-icon {\n color: var(--bs-danger-text-emphasis);\n background: var(--bs-danger-bg-subtle);\n}\n.faq-page .faq-section-secondary {\n border-left-color: var(--bs-secondary);\n}\n.faq-page .faq-section-secondary .faq-section-icon {\n color: var(--bs-secondary-text-emphasis);\n background: var(--bs-secondary-bg-subtle);\n}\n.faq-page .faq-section-items .faq-item {\n margin-bottom: 0.5rem;\n overflow: hidden;\n background: var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 0.375rem;\n transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-section-items .faq-item {\n transition: none;\n }\n}\n.faq-page .faq-section-items .faq-item:hover {\n border-color: var(--bs-primary-border-subtle);\n transform: translateX(2px);\n}\n.faq-page .faq-section-items .faq-item[open] {\n border-color: var(--bs-primary-border-subtle);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n transform: none;\n}\n.faq-page .faq-section-items .faq-item summary {\n display: flex;\n gap: 0.85rem;\n align-items: center;\n padding: 1rem 1.25rem;\n font-size: 1rem;\n font-weight: 500;\n color: var(--bs-emphasis-color);\n list-style: none;\n cursor: pointer;\n user-select: none;\n}\n.faq-page .faq-section-items .faq-item summary::-webkit-details-marker {\n display: none;\n}\n.faq-page .faq-section-items .faq-item summary::marker {\n content: \"\";\n}\n.faq-page .faq-section-items .faq-item summary::after {\n content: none;\n}\n.faq-page .faq-section-items .faq-item .faq-q-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n height: 1.75rem;\n font-size: 0.85rem;\n color: var(--bs-primary);\n background: var(--bs-primary-bg-subtle);\n border-radius: 50%;\n}\n.faq-page .faq-section-items .faq-item .faq-q-text {\n flex-grow: 1;\n}\n.faq-page .faq-section-items .faq-item .faq-q-chevron {\n flex-shrink: 0;\n color: var(--bs-secondary-color);\n transition: transform 0.2s ease, color 0.2s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .faq-page .faq-section-items .faq-item .faq-q-chevron {\n transition: none;\n }\n}\n.faq-page .faq-section-items .faq-item[open] .faq-q-chevron {\n color: var(--bs-primary);\n transform: rotate(180deg);\n}\n.faq-page .faq-section-items .faq-item[open] summary {\n color: var(--bs-primary);\n border-bottom: 1px solid var(--bs-border-color);\n}\n.faq-page .faq-section-items .faq-item .faq-answer {\n padding: 1.1rem 1.25rem 1.1rem 3.85rem;\n font-size: 0.95rem;\n line-height: 1.65;\n color: var(--bs-body-color);\n}\n.faq-page .faq-section-items .faq-item .faq-answer p:last-child,\n.faq-page .faq-section-items .faq-item .faq-answer ul:last-child,\n.faq-page .faq-section-items .faq-item .faq-answer ol:last-child,\n.faq-page .faq-section-items .faq-item .faq-answer pre:last-child {\n margin-bottom: 0;\n}\n.faq-page .faq-section-items .faq-item .faq-answer a {\n color: var(--bs-primary);\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n.faq-page .faq-section-items .faq-item .faq-answer a:hover {\n text-decoration-thickness: 2px;\n}\n.faq-page .faq-section-items .faq-item .faq-answer code {\n padding: 0.12em 0.35em;\n font-size: 0.875em;\n color: var(--bs-emphasis-color);\n background: var(--bs-tertiary-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 0.25rem;\n}\n.faq-page .faq-section-items .faq-item .faq-answer pre.astro-code,\n.faq-page .faq-section-items .faq-item .faq-answer pre {\n padding: 0.85rem 1rem;\n margin-top: 0.75rem;\n margin-bottom: 0.75rem;\n overflow-x: auto;\n font-size: 0.85rem;\n line-height: 1.55;\n border-radius: 0.25rem;\n}\n.faq-page .faq-section-items .faq-item .faq-answer pre.astro-code code,\n.faq-page .faq-section-items .faq-item .faq-answer pre code {\n padding: 0;\n background: transparent;\n border: 0;\n}\n.faq-page .faq-cta {\n padding: 2.5rem 1.5rem;\n text-align: center;\n background: radial-gradient(ellipse at top, rgba(var(--bs-primary-rgb), 0.08), transparent 60%), var(--bs-body-bg);\n border: 1px solid var(--bs-border-color);\n border-radius: 1rem;\n}\n.faq-page .faq-cta-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n margin-bottom: 1rem;\n font-size: 1.6rem;\n color: var(--bs-primary);\n background: var(--bs-primary-bg-subtle);\n border-radius: 50%;\n}\n.faq-page .faq-cta h2 {\n margin: 0 0 0.5rem;\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--bs-emphasis-color);\n}\n.faq-page .faq-cta p {\n max-width: 32rem;\n margin: 0 auto 1.5rem;\n color: var(--bs-secondary-color);\n}\n.faq-page .faq-cta-actions {\n display: inline-flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: center;\n}\n\n/*# sourceMappingURL=adminlte-docs.css.map */\n","/*!\n * AdminLTE v4.2.0 — documentation styles\n * Styles for the documentation and FAQ pages only (body.docs-page /\n * body.faq-page). Applications never need this file; it is loaded by the\n * docs pages in addition to adminlte.css.\n */\n\n// Bootstrap Configuration\n// ---------------------------------------------------\n@import \"bootstrap/scss/functions\";\n@import \"bootstrap-overrides\";\n@import \"bootstrap/scss/variables\";\n@import \"bootstrap/scss/variables-dark\";\n@import \"bootstrap/scss/maps\";\n@import \"bootstrap/scss/mixins\";\n\n// AdminLTE Configuration\n// ---------------------------------------------------\n@import \"variables\";\n@import \"variables-dark\";\n@import \"mixins\";\n\n// Documentation styles\n// ---------------------------------------------------\n@import \"docs\";\n","//\n// Mixins: Animation\n//\n\n\n@keyframes flipInX {\n 0% {\n opacity: 0;\n transition-timing-function: ease-in;\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n }\n\n 40% {\n transition-timing-function: ease-in;\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n }\n\n 60% {\n opacity: 1;\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n }\n\n 80% {\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n 100% {\n transform: perspective(400px);\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes shake {\n 0% {\n transform: translate(2px, 1px) rotate(0deg);\n }\n 10% {\n transform: translate(-1px, -2px) rotate(-2deg);\n }\n 20% {\n transform: translate(-3px, 0) rotate(3deg);\n }\n 30% {\n transform: translate(0, 2px) rotate(0deg);\n }\n 40% {\n transform: translate(1px, -1px) rotate(1deg);\n }\n 50% {\n transform: translate(-1px, 2px) rotate(-1deg);\n }\n 60% {\n transform: translate(-3px, 1px) rotate(0deg);\n }\n 70% {\n transform: translate(2px, 1px) rotate(-2deg);\n }\n 80% {\n transform: translate(-1px, -1px) rotate(4deg);\n }\n 90% {\n transform: translate(2px, 2px) rotate(0deg);\n }\n 100% {\n transform: translate(1px, -2px) rotate(-1deg);\n }\n}\n\n@keyframes wobble {\n 0% {\n transform: none;\n }\n\n 15% {\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n 100% {\n transform: none;\n }\n}\n","//\n// Component: Docs\n//\n// Visual treatment for documentation pages. Body class `.docs-page` opts in.\n// Demo pages are not affected.\n//\n\n// Inline code blocks rendered by MDX (Astro highlight default class)\n.astro-code {\n padding: .75rem;\n @include border-radius($border-radius);\n}\n\n.docs-page {\n // Constrain the docs card to a comfortable reading width.\n // Tables and code blocks inside can still scroll horizontally if needed.\n .app-content > .container-fluid {\n max-width: 60rem; // ~960px\n\n @include media-breakpoint-up(xxl) {\n max-width: 64rem;\n }\n }\n\n //\n // Card body — breathing room + prose typography.\n // Only applied inside docs content cards so demo-page card content\n // stays unchanged.\n //\n .card > .card-body {\n padding: 1.5rem;\n font-size: 1rem;\n line-height: 1.7;\n color: var(--#{$prefix}body-color);\n\n @include media-breakpoint-up(md) {\n padding: 2.5rem;\n }\n\n //\n // Heading hierarchy. The MDX content in src/html/components/docs/ uses\n // ##### (h5) as the dominant section heading and ###### (h6) as a\n // sub-heading (most visible in FAQ.mdx, where h5 is a topic and h6 is\n // a question). Style h5 as a major section and h6 as a sub-section so\n // the visual hierarchy matches the semantic one.\n //\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n .h1,\n .h2,\n .h3,\n .h4,\n .h5,\n .h6 {\n margin-top: 2em;\n margin-bottom: .5em;\n font-weight: 600;\n line-height: 1.3;\n color: var(--#{$prefix}emphasis-color);\n scroll-margin-top: 4rem; // anchor-link friendly\n\n &:first-child {\n margin-top: 0;\n }\n }\n\n h2,\n .h2 {\n padding-bottom: .35em;\n font-size: 1.75rem;\n border-bottom: 1px solid var(--#{$prefix}border-color);\n }\n\n h3,\n .h3 {\n font-size: 1.4rem;\n }\n\n h4,\n .h4 {\n font-size: 1.2rem;\n }\n\n // h5 is the dominant section heading across docs MDX files. Give it\n // a visible separator above so sections are easy to scan.\n h5,\n .h5 {\n padding-top: 1.5em;\n margin-top: 2.5em;\n font-size: 1.3rem;\n border-top: 1px solid var(--#{$prefix}border-color);\n\n &:first-child {\n padding-top: 0;\n border-top: 0;\n }\n }\n\n // h6 is the sub-section / FAQ question style. Smaller than h5 but\n // still distinctly heading-like, with a touch of accent colour to\n // separate from body text.\n h6,\n .h6 {\n margin-top: 1.75em;\n font-size: 1.08rem;\n color: var(--#{$prefix}emphasis-color);\n }\n\n //\n // Paragraphs and lists.\n //\n p,\n ul,\n ol,\n dl,\n blockquote,\n table {\n margin-bottom: 1.1rem;\n }\n\n ul,\n ol {\n padding-left: 1.5rem;\n\n li {\n margin-bottom: .35rem;\n }\n\n // Tighter nested lists\n ul,\n ol {\n margin-top: .35rem;\n margin-bottom: 0;\n }\n }\n\n // Lead-style first paragraph (just after a heading)\n h2 + p,\n h3 + p,\n h5 + p {\n margin-top: 0;\n }\n\n //\n // Inline code — pill style that complements MDX's syntax-highlighted blocks.\n //\n p code,\n li code,\n td code,\n th code,\n h2 code,\n h3 code,\n h4 code,\n h5 code,\n h6 code {\n padding: .15em .4em;\n font-size: .875em;\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}tertiary-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-sm);\n }\n\n //\n // Code blocks.\n //\n pre.astro-code,\n pre {\n padding: 1rem 1.25rem;\n margin-top: 1.25rem;\n margin-bottom: 1.5rem;\n overflow-x: auto;\n font-size: .875rem;\n line-height: 1.6;\n @include border-radius($border-radius);\n\n code {\n padding: 0;\n background: transparent;\n border: 0;\n }\n }\n\n //\n // Tables — reference-doc styling with hairline borders.\n //\n table {\n width: 100%;\n margin-top: 1.25rem;\n margin-bottom: 1.5rem;\n overflow: hidden;\n font-size: .95rem;\n border-collapse: collapse;\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-sm);\n\n th,\n td {\n padding: .65rem .9rem;\n text-align: left;\n vertical-align: top;\n border-bottom: 1px solid var(--#{$prefix}border-color);\n }\n\n th {\n font-weight: 600;\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}tertiary-bg);\n }\n\n tr:last-child td {\n border-bottom: 0;\n }\n\n code {\n white-space: nowrap;\n }\n }\n\n //\n // Blockquotes used as info callouts.\n //\n blockquote {\n padding: .85rem 1.1rem;\n margin-top: 1.25rem;\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}info-bg-subtle);\n border-left: 4px solid var(--#{$prefix}info-border-subtle);\n @include border-radius($border-radius-sm);\n\n p:last-child {\n margin-bottom: 0;\n }\n\n code {\n background: rgba(0, 0, 0, .05);\n }\n }\n\n //\n // Prose links — stand out more than Bootstrap defaults.\n //\n a:not(.btn):not(.nav-link) {\n color: var(--#{$prefix}primary);\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-underline-offset: 3px;\n\n &:hover {\n text-decoration-thickness: 2px;\n }\n }\n\n //\n // Horizontal rule — used as additional section separator.\n //\n hr {\n margin: 2.5rem 0;\n border: 0;\n border-top: 1px solid var(--#{$prefix}border-color);\n opacity: 1;\n }\n\n //\n // Lead paragraph — the first paragraph in any doc is a summary.\n // Visually heavier so it functions as a deck.\n //\n > p:first-child,\n > p:first-of-type {\n margin-bottom: 2rem;\n font-size: 1.125rem;\n line-height: 1.6;\n color: var(--#{$prefix}body-color);\n }\n\n //\n // FAQ / disclosure accordion — uses native <details>/<summary>.\n // Add `.faq-item` to <details> to opt in.\n //\n details.faq-item {\n margin-bottom: .5rem;\n overflow: hidden;\n background: var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius);\n @include transition(border-color .15s ease, box-shadow .15s ease);\n\n &:hover {\n border-color: var(--#{$prefix}primary-border-subtle);\n }\n\n &[open] {\n background: var(--#{$prefix}body-bg);\n border-color: var(--#{$prefix}primary-border-subtle);\n box-shadow: 0 1px 3px rgba(0, 0, 0, .04);\n }\n\n summary {\n position: relative;\n padding: .9rem 3rem .9rem 1.1rem;\n font-size: 1rem;\n font-weight: 600;\n color: var(--#{$prefix}emphasis-color);\n list-style: none;\n cursor: pointer;\n user-select: none;\n @include transition(color .15s ease);\n\n // Hide the default disclosure triangle in Webkit/Blink\n &::-webkit-details-marker {\n display: none;\n }\n\n // Hide the marker in modern Firefox too\n &::marker {\n content: \"\";\n }\n\n &:hover {\n color: var(--#{$prefix}primary);\n }\n\n // Right-side chevron, rotates on open\n &::after {\n position: absolute;\n top: 50%;\n right: 1.1rem;\n display: inline-block;\n width: .55rem;\n height: .55rem;\n margin-top: -.4rem;\n content: \"\";\n border-right: 2px solid currentcolor;\n border-bottom: 2px solid currentcolor;\n opacity: .55;\n transform: rotate(45deg);\n @include transition(transform .2s ease);\n }\n }\n\n &[open] > summary {\n color: var(--#{$prefix}primary);\n border-bottom: 1px solid var(--#{$prefix}border-color);\n\n &::after {\n margin-top: -.15rem;\n opacity: 1;\n transform: rotate(-135deg);\n }\n }\n\n // Content (everything after <summary>) gets the inner padding\n > *:not(summary) {\n padding-right: 1.1rem;\n padding-left: 1.1rem;\n }\n\n > *:not(summary):first-of-type {\n padding-top: 1rem;\n }\n\n > *:not(summary):last-child {\n padding-bottom: 1rem;\n }\n\n // Tighten paragraphs/lists inside an FAQ answer\n p,\n ul,\n ol {\n margin-bottom: .65rem;\n }\n\n > *:last-child p:last-child,\n > p:last-child,\n > ul:last-child,\n > ol:last-child {\n margin-bottom: 0;\n }\n\n // Code blocks inside an FAQ answer get a less-distracting bg\n pre.astro-code,\n pre {\n margin-right: 0;\n margin-left: 0;\n }\n }\n }\n\n // Dark-mode tweak: blockquote info bg needs more contrast on dark\n &[data-bs-theme=\"dark\"],\n [data-bs-theme=\"dark\"] & {\n .card > .card-body blockquote code {\n background: rgba(255, 255, 255, .08);\n }\n }\n}\n\n//\n// FAQ page — custom layout that breaks out of the standard docs card\n// to give the FAQ a more distinctive visual identity. Opt in via\n// body.faq-page (set in pages/docs/faq.astro).\n//\n\n.faq-page {\n // The FAQ doesn't use the standard card wrapper used by other docs,\n // so the container can stretch wider for the chip strip and section\n // grid.\n .app-content > .container-fluid {\n max-width: 64rem;\n\n @include media-breakpoint-up(xxl) {\n max-width: 72rem;\n }\n }\n\n // --- Hero -------------------------------------------------------------\n .faq-hero {\n position: relative;\n padding: 3rem 1.5rem 2.5rem;\n margin-top: 1rem;\n overflow: hidden;\n background: radial-gradient(ellipse at top left, rgba(var(--#{$prefix}primary-rgb), .12), transparent 60%), radial-gradient(ellipse at bottom right, rgba(var(--#{$prefix}info-rgb), .1), transparent 65%), var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-xl);\n }\n\n .faq-hero-eyebrow {\n display: inline-flex;\n gap: .4rem;\n align-items: center;\n padding: .35rem .85rem;\n margin-bottom: 1rem;\n font-size: .75rem;\n font-weight: 600;\n color: var(--#{$prefix}primary);\n text-transform: uppercase;\n letter-spacing: .08em;\n background: var(--#{$prefix}primary-bg-subtle);\n border: 1px solid var(--#{$prefix}primary-border-subtle);\n @include border-radius(50rem);\n\n .bi {\n font-size: .9rem;\n }\n }\n\n .faq-hero-title {\n margin: 0 0 .5rem;\n font-size: 2.25rem;\n font-weight: 700;\n line-height: 1.15;\n color: var(--#{$prefix}emphasis-color);\n\n @include media-breakpoint-up(md) {\n font-size: 2.75rem;\n }\n }\n\n .faq-hero-lead {\n max-width: 36rem;\n margin: 0 auto 1.75rem;\n font-size: 1.05rem;\n line-height: 1.55;\n color: var(--#{$prefix}secondary-color);\n }\n\n .faq-search {\n position: relative;\n max-width: 32rem;\n margin: 0 auto;\n\n .form-control {\n height: 3rem;\n padding-right: 3rem;\n padding-left: 3rem;\n font-size: 1rem;\n background: var(--#{$prefix}body-bg);\n @include border-radius(50rem);\n @include transition(box-shadow .15s ease, border-color .15s ease);\n\n &:focus {\n box-shadow: 0 0 0 .25rem rgba(var(--#{$prefix}primary-rgb), .15);\n }\n }\n }\n\n .faq-search-icon {\n position: absolute;\n top: 50%;\n left: 1.2rem;\n color: var(--#{$prefix}secondary-color);\n pointer-events: none;\n transform: translateY(-50%);\n }\n\n .faq-search-clear {\n position: absolute;\n top: 50%;\n right: .65rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n color: var(--#{$prefix}secondary-color);\n background: var(--#{$prefix}tertiary-bg);\n border: 0;\n transform: translateY(-50%);\n @include border-radius(50%);\n @include transition(background .15s ease, color .15s ease);\n\n &:hover {\n color: var(--#{$prefix}body-color);\n background: var(--#{$prefix}secondary-bg);\n }\n }\n\n .faq-empty-state {\n max-width: 32rem;\n padding: 1rem;\n margin: 1.5rem auto 0;\n font-size: .95rem;\n color: var(--#{$prefix}secondary-color);\n background: var(--#{$prefix}tertiary-bg);\n @include border-radius($border-radius);\n\n .bi {\n margin-right: .35rem;\n }\n }\n\n // --- Section nav chips ------------------------------------------------\n .faq-chips {\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n justify-content: center;\n }\n\n .faq-chip {\n display: inline-flex;\n gap: .45rem;\n align-items: center;\n padding: .45rem .85rem;\n font-size: .875rem;\n font-weight: 500;\n color: var(--#{$prefix}body-color);\n text-decoration: none;\n background: var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius(50rem);\n @include transition(transform .15s ease, border-color .15s ease, background-color .15s ease, color .15s ease);\n\n &:hover {\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}tertiary-bg);\n transform: translateY(-1px);\n }\n\n .bi {\n font-size: 1rem;\n }\n }\n\n .faq-chip-count {\n padding: 0 .45rem;\n font-size: .7rem;\n font-weight: 600;\n color: var(--#{$prefix}secondary-color);\n background: var(--#{$prefix}tertiary-bg);\n @include border-radius(50rem);\n }\n\n // Per-section chip accent on hover/active\n @each $tone in (primary, info, warning, success, danger, secondary) {\n .faq-chip-#{$tone}:hover {\n color: var(--#{$prefix}#{$tone}-text-emphasis);\n background: var(--#{$prefix}#{$tone}-bg-subtle);\n border-color: var(--#{$prefix}#{$tone}-border-subtle);\n\n .faq-chip-count {\n color: var(--#{$prefix}#{$tone}-text-emphasis);\n background: rgba(0, 0, 0, .06);\n }\n }\n }\n\n // --- Sections ---------------------------------------------------------\n .faq-section {\n margin-bottom: 2.5rem;\n scroll-margin-top: 5rem;\n }\n\n .faq-section-header {\n display: flex;\n gap: 1rem;\n align-items: center;\n padding: 1rem 1.25rem;\n margin-bottom: 1rem;\n background: var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n border-left: 4px solid var(--#{$prefix}primary);\n @include border-radius($border-radius);\n }\n\n .faq-section-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 2.75rem;\n height: 2.75rem;\n font-size: 1.35rem;\n color: var(--#{$prefix}primary);\n background: var(--#{$prefix}primary-bg-subtle);\n @include border-radius($border-radius);\n }\n\n .faq-section-title {\n margin: 0;\n font-size: 1.4rem;\n font-weight: 600;\n line-height: 1.2;\n color: var(--#{$prefix}emphasis-color);\n }\n\n .faq-section-count {\n margin: .1rem 0 0;\n font-size: .8rem;\n color: var(--#{$prefix}secondary-color);\n }\n\n // Per-section tone accents\n @each $tone in (primary, info, warning, success, danger, secondary) {\n .faq-section-#{$tone} {\n border-left-color: var(--#{$prefix}#{$tone});\n\n .faq-section-icon {\n color: var(--#{$prefix}#{$tone}-text-emphasis);\n background: var(--#{$prefix}#{$tone}-bg-subtle);\n }\n }\n }\n\n // --- FAQ items (override the generic .docs-page details styling) ------\n .faq-section-items .faq-item {\n margin-bottom: .5rem;\n overflow: hidden;\n background: var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius);\n @include transition(border-color .15s ease, box-shadow .15s ease, transform .15s ease);\n\n &:hover {\n border-color: var(--#{$prefix}primary-border-subtle);\n transform: translateX(2px);\n }\n\n &[open] {\n border-color: var(--#{$prefix}primary-border-subtle);\n box-shadow: 0 2px 8px rgba(0, 0, 0, .04);\n transform: none;\n }\n\n summary {\n display: flex;\n gap: .85rem;\n align-items: center;\n padding: 1rem 1.25rem;\n font-size: 1rem;\n font-weight: 500;\n color: var(--#{$prefix}emphasis-color);\n list-style: none;\n cursor: pointer;\n user-select: none;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::marker {\n content: \"\";\n }\n\n &::after {\n content: none; // disable the generic chevron, we use our own\n }\n }\n\n .faq-q-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n height: 1.75rem;\n font-size: .85rem;\n color: var(--#{$prefix}primary);\n background: var(--#{$prefix}primary-bg-subtle);\n @include border-radius(50%);\n }\n\n .faq-q-text {\n flex-grow: 1;\n }\n\n .faq-q-chevron {\n flex-shrink: 0;\n color: var(--#{$prefix}secondary-color);\n @include transition(transform .2s ease, color .2s ease);\n }\n\n &[open] .faq-q-chevron {\n color: var(--#{$prefix}primary);\n transform: rotate(180deg);\n }\n\n &[open] summary {\n color: var(--#{$prefix}primary);\n border-bottom: 1px solid var(--#{$prefix}border-color);\n }\n\n .faq-answer {\n padding: 1.1rem 1.25rem 1.1rem 3.85rem; // align with the question text (icon + gap)\n font-size: .95rem;\n line-height: 1.65;\n color: var(--#{$prefix}body-color);\n\n p:last-child,\n ul:last-child,\n ol:last-child,\n pre:last-child {\n margin-bottom: 0;\n }\n\n a {\n color: var(--#{$prefix}primary);\n text-decoration: underline;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-thickness: 2px;\n }\n }\n\n code {\n padding: .12em .35em;\n font-size: .875em;\n color: var(--#{$prefix}emphasis-color);\n background: var(--#{$prefix}tertiary-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-sm);\n }\n\n pre.astro-code,\n pre {\n padding: .85rem 1rem;\n margin-top: .75rem;\n margin-bottom: .75rem;\n overflow-x: auto;\n font-size: .85rem;\n line-height: 1.55;\n @include border-radius($border-radius-sm);\n\n code {\n padding: 0;\n background: transparent;\n border: 0;\n }\n }\n }\n }\n\n // --- CTA footer -------------------------------------------------------\n .faq-cta {\n padding: 2.5rem 1.5rem;\n text-align: center;\n background: radial-gradient(ellipse at top, rgba(var(--#{$prefix}primary-rgb), .08), transparent 60%), var(--#{$prefix}body-bg);\n border: 1px solid var(--#{$prefix}border-color);\n @include border-radius($border-radius-xl);\n }\n\n .faq-cta-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n margin-bottom: 1rem;\n font-size: 1.6rem;\n color: var(--#{$prefix}primary);\n background: var(--#{$prefix}primary-bg-subtle);\n @include border-radius(50%);\n }\n\n .faq-cta h2 {\n margin: 0 0 .5rem;\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--#{$prefix}emphasis-color);\n }\n\n .faq-cta p {\n max-width: 32rem;\n margin: 0 auto 1.5rem;\n color: var(--#{$prefix}secondary-color);\n }\n\n .faq-cta-actions {\n display: inline-flex;\n flex-wrap: wrap;\n gap: .5rem;\n justify-content: center;\n }\n}\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n $return: ();\n @each $value in $radius {\n @if type-of($value) == number {\n $return: append($return, max($value, 0));\n } @else {\n $return: append($return, $value);\n }\n }\n @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: valid-radius($radius);\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n// scss-docs-end border-radius-mixins\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n @if length($transition) == 0 {\n $transition: $transition-base;\n }\n\n @if length($transition) > 1 {\n @each $value in $transition {\n @if $value == null or $value == none {\n @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n }\n }\n }\n\n @if $enable-transitions {\n @if nth($transition, 1) != null {\n transition: $transition;\n }\n\n @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@charset "UTF-8";/*!
|
|
2
|
-
* AdminLTE v4.0
|
|
2
|
+
* AdminLTE v4.2.0 — documentation styles
|
|
3
3
|
* Styles for the documentation and FAQ pages only (body.docs-page /
|
|
4
4
|
* body.faq-page). Applications never need this file; it is loaded by the
|
|
5
5
|
* docs pages in addition to adminlte.css.
|