@optionfactory/fml 9.0.0-rc1 → 9.0.0-rc10
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/README.md +3 -4
- package/dist/custom-elements.json +119 -6
- package/dist/fml.css +8 -8
- package/dist/fml.css.map +1 -1
- package/dist/fml.iife.js +579 -116
- package/dist/fml.iife.js.map +1 -1
- package/dist/fml.iife.min.js +1 -1
- package/dist/fml.iife.min.js.map +1 -1
- package/dist/ful.css +8 -8
- package/dist/ful.css.map +1 -1
- package/dist/ful.d.mts +179 -7
- package/dist/ful.iife.js +576 -115
- package/dist/ful.iife.js.map +1 -1
- package/dist/ful.iife.min.js +1 -1
- package/dist/ful.iife.min.js.map +1 -1
- package/dist/ful.min.mjs +1 -1
- package/dist/ful.min.mjs.map +1 -1
- package/dist/ful.mjs +575 -116
- package/dist/ful.mjs.map +1 -1
- package/dist/vscode.html-custom-data.json +63 -3
- package/dist/web-types.json +135 -7
- package/package.json +1 -1
package/dist/ful.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ful.css","sources":["../src/ful/chrome/theme.css","../src/ful/forms/errors.css","../src/ful/forms/form.css","../src/ful/chrome/buttons.css","../src/ful/chrome/sections.css","../src/ful/chrome/pre-render.css","../src/ful/forms/input.css","../src/ful/forms/files.css","../src/ful/forms/select.css","../src/ful/forms/radio.css","../src/ful/forms/checkbox.css","../src/ful/chrome/spinner.css","../src/ful/navigation/table.css","../src/ful/forms/filters.css","../src/ful/disclosures/info.css","../src/ful/disclosures/drawer.css","../src/ful/disclosures/toast.css","../src/ful/navigation/tabs.css","../src/ful/disclosures/accordion.css","../src/ful/navigation/wizard.css","../src/ful/chrome/hidden.css"],"sourcesContent":["/**\n * The cascade contract. Everything ful ships lives in a layer, so any rule a\n * consuming page writes outside one wins over all of it whatever its\n * specificity, and a page that layers its own styles decides by declaring its\n * layer after these. `ful.hidden` comes last so hiding beats the chrome that\n * would otherwise lay an element out, which is the job an `!important` used to\n * do here.\n */\n@layer ful.theme, ful.components, ful.hidden;\n\n@layer ful.theme {\n @property --ful-border-width {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 1px;\n }\n\n @property --ful-border-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 0.375rem;\n }\n\n @property --ful-scrollbar-width {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 12px;\n }\n\n @property --ful-scrollbar-border-width {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 1px;\n }\n\n :root {\n --ful-color: light-dark(#212529, #dee2e6);\n --ful-bg: light-dark(#fff, #212529);\n --ful-muted-color: light-dark(#495057, #adb5bd);\n\n --ful-border-width: 1px;\n --ful-border-radius: 0.375rem;\n --ful-border-color: light-dark(#dee2e6, #495057);\n\n --ful-disabled-bg: light-dark(#e9ecef, #343a40);\n --ful-selected-bg: light-dark(#f8f9fa, #343a40);\n\n --ful-active-color: white;\n --ful-active-bg: #007376;\n --ful-accent-ink: light-dark(var(--ful-active-bg), color-mix(in srgb, var(--ful-active-bg) 55%, white));\n\n --ful-focus-border-color: color-mix(in srgb, var(--ful-active-bg) 75%, white);\n --ful-focus-box-shadow: 0 0 0 0.25rem color-mix(in srgb, var(--ful-active-bg) 25%, transparent);\n\n --ful-backdrop-color: rgb(0 0 0 / 50%);\n\n --ful-invalid-color: light-dark(#dc3545, #ea868f);\n --ful-invalid-border-color: var(--ful-invalid-color);\n --ful-invalid-box-shadow: 0 0 0 0.25rem color-mix(in srgb, var(--ful-invalid-color) 25%, transparent);\n\n --ful-error-color: #58151c;\n --ful-error-bg: #f8d7da;\n --ful-error-border-color: #f1aeb5;\n\n --ful-warning-color: #664d03;\n --ful-warning-bg: #fff3cd;\n --ful-warning-border-color: #ffe69c;\n\n --ful-scrollbar-bg: var(--ful-disabled-bg);\n --ful-scrollbar-thumb-bg: var(--ful-active-bg);\n --ful-scrollbar-width: 12px;\n --ful-scrollbar-border-width: 1px;\n\n --ful-controls-bg: var(--ful-bg);\n --ful-controls-border-width: var(--ful-border-width);\n --ful-controls-border-radius: var(--ful-border-radius);\n --ful-controls-border-color: var(--ful-border-color);\n --ful-controls-height: calc(1.5em + 0.75rem + 2px);\n\n --ful-spinner-icon-width: 1rem;\n --ful-spinner-icon-height: 1rem;\n --ful-spinner-icon-border-width: 0.2em;\n --ful-spinner-icon-animation-speed: 0.75s;\n --ful-spinner-icon-animation-name: spinner-border;\n --ful-spinner-icon-color: currentcolor;\n }\n}\n","@layer ful.components {\n ful-errors {\n --ful-errors-color: var(--ful-error-color);\n --ful-errors-bg: var(--ful-error-bg);\n --ful-errors-border-color: var(--ful-error-border-color);\n\n display: block;\n padding: 1rem;\n margin-bottom: 1rem;\n color: var(--ful-errors-color);\n background-color: var(--ful-errors-bg);\n border: 1px solid var(--ful-errors-border-color);\n border-radius: var(--ful-border-radius);\n }\n\n ful-field-error {\n --ful-field-error-invalid-color: var(--ful-invalid-color);\n display: none;\n font-size: 0.875rem;\n\n :invalid & {\n display: block;\n margin-top: 0.25rem;\n color: var(--ful-field-error-invalid-color);\n }\n }\n\n ful-field-warnings {\n display: none;\n &:not(:empty) {\n display: block;\n }\n }\n\n ful-field-warning {\n display: block;\n margin: 0.5rem 0;\n padding: 15px;\n color: var(--ful-warning-color);\n background-color: var(--ful-warning-bg);\n border-color: var(--ful-warning-border-color);\n border-radius: 8px;\n animation: show-and-hide 5s ease forwards;\n animation-composition: initial;\n }\n\n @keyframes show-and-hide {\n 0% {\n opacity: 0;\n display: block;\n }\n\n 3% {\n opacity: 1;\n }\n\n 90% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n display: none;\n }\n }\n}\n","@layer ful.components {\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n *:has(> ful-control-group) {\n display: block;\n }\n\n *:has(> ful-control-group) > label,\n *:has(> fieldset > ful-radio-list) > fieldset > legend {\n /*inline-block: an info slot carrying a tooltip rides the label's line,\n and nothing moves when there is none, the control group being block*/\n display: inline-block;\n margin: 0 0.25rem 0.5rem 0;\n color: var(--ful-color);\n }\n\n *:has(> ful-control-group)[required] > label::before,\n *:has(> ful-choice)[required] > ful-choice > label::before,\n *:has(> fieldset > ful-radio-list)[required] > fieldset > legend::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n ful-control-group {\n position: relative;\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n color: var(--ful-color);\n background-color: var(--ful-controls-bg);\n border: var(--ful-controls-border-width) solid var(--ful-controls-border-color);\n border-radius: var(--ful-controls-border-radius);\n\n &:has(:focus-visible):not(:has([popover] :focus-visible)) {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n & > input,\n & > textarea {\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n color: inherit;\n background-color: transparent;\n border: 0;\n border-radius: 0;\n\n &:focus {\n outline: 0;\n }\n }\n\n & > ful-affix:first-child {\n border-top-left-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n border-bottom-left-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n }\n\n & > ful-affix:last-child,\n & > ful-affix:has(+ ful-dropdown) {\n border-top-right-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n border-bottom-right-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n }\n }\n\n ful-affix {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n min-width: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: var(--ful-color);\n white-space: nowrap;\n background-color: var(--ful-selected-bg);\n border: 0;\n border-radius: 0;\n }\n\n ful-control {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n min-width: 0;\n min-height: var(--ful-controls-height);\n cursor: text;\n border: 0;\n border-radius: 0;\n }\n\n :invalid > ful-control-group {\n border-color: var(--ful-invalid-border-color);\n\n &:has(:focus-visible) {\n box-shadow: var(--ful-invalid-box-shadow);\n }\n }\n\n :disabled > ful-control-group {\n background-color: var(--ful-disabled-bg);\n }\n\n /**\n * A submit held off while the form is busy keeps its focus, so it is marked\n * aria-disabled rather than disabled. Unstyled buttons would otherwise lose the\n * platform's own disabled look: .ful-button already dims both spellings.\n */\n ful-form [aria-disabled=\"true\"] {\n opacity: 0.65;\n cursor: default;\n }\n\n ful-badge {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n margin: 5px 0;\n padding: 5px 7px;\n line-height: 1em;\n color: var(--ful-color);\n white-space: nowrap;\n cursor: pointer;\n background-color: var(--ful-selected-bg);\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n\n &:hover {\n background-color: var(--ful-disabled-bg);\n }\n\n &:focus-visible {\n border-color: var(--ful-focus-border-color);\n outline: 0;\n }\n }\n\n ful-choice {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 0;\n\n & > label {\n margin: 0;\n cursor: pointer;\n flex: 1 1 0;\n min-width: 0;\n }\n\n & input[type=\"checkbox\"] {\n width: 1em;\n height: 1em;\n margin: 0;\n font-size: inherit;\n accent-color: var(--ful-active-bg);\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n &[switch] input[type=\"checkbox\"] {\n appearance: none;\n position: relative;\n width: 2em;\n height: 1em;\n margin: 0;\n cursor: pointer;\n background-color: var(--ful-border-color);\n border-radius: 1em;\n transition: background-color 0.15s ease-in-out;\n\n &::before {\n content: \"\";\n display: block;\n width: 1em;\n height: 1em;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15);\n transition: translate 0.15s ease-in-out;\n }\n\n &:checked {\n background-color: var(--ful-active-bg);\n\n &::before {\n translate: 1em 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n &,\n &::before {\n transition: none;\n }\n }\n }\n }\n\n *:has(> ful-choice):invalid ful-choice input[type=\"checkbox\"] {\n outline: 1px solid var(--ful-invalid-border-color);\n outline-offset: 2px;\n }\n\n ful-icon,\n ful-sorter::before {\n background-color: currentcolor;\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: contain;\n }\n\n ful-icon {\n display: inline-block;\n width: 1em;\n height: 1em;\n vertical-align: -0.125em;\n\n &[name=\"search\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0'/></svg>\");\n }\n\n &[name=\"chevron-left\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n }\n\n &[name=\"chevron-right\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n }\n\n &[name=\"chevron-down\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>\");\n }\n\n &[name=\"arrow-clockwise\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2z'/><path d='M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466'/></svg>\");\n }\n\n &[name=\"x-lg\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'/></svg>\");\n }\n\n &[name=\"info-circle\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/><path d='m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0'/></svg>\");\n }\n\n &[name=\"info-circle-fill\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2'/></svg>\");\n }\n\n &[name=\"upload\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5'/><path d='M7.646 1.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 2.707V11.5a.5.5 0 0 1-1 0V2.707L5.354 4.854a.5.5 0 1 1-.708-.708z'/></svg>\");\n }\n\n &[name=\"arrow-down\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1'/></svg>\");\n }\n\n &[name=\"arrow-up\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5'/></svg>\");\n }\n\n &[name=\"inbox\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M4.98 4a.5.5 0 0 0-.39.188L1.54 8H6a.5.5 0 0 1 .5.5 1.5 1.5 0 1 0 3 0A.5.5 0 0 1 10 8h4.46l-3.05-3.812A.5.5 0 0 0 11.02 4zm9.954 5H10.45a2.5 2.5 0 0 1-4.9 0H1.066l.32 2.562a.5.5 0 0 0 .497.438h12.234a.5.5 0 0 0 .496-.438zM3.809 3.563A1.5 1.5 0 0 1 4.981 3h6.038a1.5 1.5 0 0 1 1.172.563l3.7 4.625a.5.5 0 0 1 .105.374l-.39 3.124A1.5 1.5 0 0 1 14.117 13H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .106-.374z'/></svg>\");\n }\n\n &[name=\"star\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z'/></svg>\");\n }\n }\n\n *:has(> ful-pagination-bar) {\n display: block;\n margin-top: auto;\n }\n\n ful-pagination-bar {\n display: block;\n user-select: none;\n\n & ul {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n margin: 0.5rem 0 0;\n padding: 0;\n list-style: none;\n }\n\n & li[data-ref=\"index\"] {\n margin-left: 0;\n margin-right: auto;\n color: var(--ful-color);\n }\n\n & li[data-ref=\"reload\"] button {\n border: 0;\n font-size: 1.25rem;\n }\n\n & button {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 2.25rem;\n height: 2.25rem;\n padding: 0 0.5rem;\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n text-decoration: none;\n background-color: transparent;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n cursor: pointer;\n }\n\n & button:hover {\n background-color: var(--ful-selected-bg);\n }\n\n & button:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n\n & button:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n ful-table-wrapper {\n & table {\n width: 100%;\n margin-bottom: 1rem;\n color: var(--ful-color);\n border-collapse: collapse;\n }\n\n & caption {\n padding: 0.5rem 0;\n color: var(--ful-color);\n text-align: left;\n caption-side: bottom;\n }\n\n & :is(th, td) {\n padding: 0.5rem;\n vertical-align: top;\n border-bottom: var(--ful-border-width) solid var(--ful-border-color);\n }\n\n & thead th {\n border-bottom-width: calc(2 * var(--ful-border-width));\n }\n\n & td[colspan] {\n padding: 1.5rem;\n text-align: center;\n vertical-align: middle;\n }\n\n & tbody[data-ref=\"feedback\"] {\n & > tr > td > div {\n padding: 1rem;\n color: var(--ful-error-color);\n background-color: var(--ful-error-bg);\n border: var(--ful-border-width) solid var(--ful-error-border-color);\n border-radius: var(--ful-border-radius);\n }\n\n & p {\n margin: 0 0 0.5rem;\n font-weight: 600;\n }\n }\n }\n\n ful-sorter {\n &::before {\n content: \"\";\n display: inline-block;\n width: 1em;\n height: 1em;\n vertical-align: text-top;\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1'/></svg>\");\n }\n\n &:not([order])::before {\n opacity: 0.35;\n }\n\n &[order=\"desc\"]::before {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5'/></svg>\");\n }\n }\n}\n","@layer ful.components {\n .ful-button {\n --ful-button-height: var(--ful-controls-height);\n --ful-button-border-width: var(--ful-controls-border-width);\n --ful-button-border-radius: var(--ful-controls-border-radius);\n --ful-button-color: var(--ful-active-color);\n --ful-button-bg: var(--ful-active-bg);\n --ful-button-border-color: var(--ful-button-bg);\n --ful-button-hover-bg: color-mix(in srgb, var(--ful-active-bg) 85%, black);\n --ful-button-hover-color: var(--ful-button-color);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n min-height: var(--ful-button-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n text-decoration: none;\n color: var(--ful-button-color);\n background-color: var(--ful-button-bg);\n border: var(--ful-button-border-width) solid var(--ful-button-border-color);\n border-radius: var(--ful-button-border-radius);\n cursor: pointer;\n\n &:hover {\n color: var(--ful-button-hover-color);\n background-color: var(--ful-button-hover-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n opacity: 0.5;\n pointer-events: none;\n }\n\n &.ghost {\n --ful-button-color: var(--ful-accent-ink);\n --ful-button-bg: transparent;\n --ful-button-border-color: var(--ful-accent-ink);\n --ful-button-hover-color: var(--ful-active-color);\n --ful-button-hover-bg: var(--ful-active-bg);\n }\n\n &.soft {\n --ful-button-color: var(--ful-color);\n --ful-button-bg: var(--ful-selected-bg);\n --ful-button-border-color: var(--ful-controls-border-color);\n --ful-button-hover-color: var(--ful-active-color);\n --ful-button-hover-bg: var(--ful-active-bg);\n }\n\n &.small {\n --ful-button-height: calc(1.25em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n }\n }\n}\n","@layer ful.components {\n :is(ful-tabs, ful-wizard, ful-dialog, ful-drawer) {\n & [loading=\"\"] {\n position: relative;\n }\n\n & [loading=\"\"]::after {\n content: \"\";\n position: absolute;\n inset: 0;\n margin: auto;\n width: var(--ful-spinner-icon-width);\n height: var(--ful-spinner-icon-height);\n border-radius: 50%;\n border: var(--ful-spinner-icon-border-width) solid var(--ful-spinner-icon-color);\n border-inline-end-color: transparent;\n animation: var(--ful-spinner-icon-animation-speed) linear infinite var(--ful-spinner-icon-animation-name);\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n }\n\n & .ful-section-error {\n margin-bottom: 1rem;\n padding: 1rem;\n white-space: pre-line;\n color: var(--ful-error-color);\n background-color: var(--ful-error-bg);\n border: var(--ful-border-width) solid var(--ful-error-border-color);\n border-radius: var(--ful-border-radius);\n }\n }\n}\n","@layer ful.components {\n /**\n * An element whose own markup is misleading before it renders stays\n * invisible until it does: a select's slotted <select> paints as a native\n * dropdown, a dialog's body sits in the page flow, a tab host shows every\n * panel at once. An element whose markup already reads correctly is left\n * alone, ful-form being the case that matters, since hiding it would hide\n * the fields and the submit button that were about to paint correctly.\n *\n * :is() rather than a plain selector list, because a list is all or nothing:\n * one bad selector among these would drop the rule for every one of them,\n * where :is() ignores the bad argument alone. Its specificity, the most\n * specific argument's, decides nothing here, the layer order settling every\n * contest before specificity is consulted.\n *\n * The list is ful's own, and a field of your own joins it by carrying the\n * .ful-input class, or opts in on its own tag:\n * x-rating:not(:state(rendered)) { visibility: hidden }\n */\n :is(\n ful-input,\n .ful-input,\n ful-input-file,\n ful-input-local-date,\n ful-input-local-time,\n ful-input-instant,\n ful-checkbox,\n ful-radio-group,\n ful-select,\n ful-filter-text,\n ful-filter-number,\n ful-filter-boolean,\n ful-filter-local-date,\n ful-filter-instant,\n ful-tabs,\n ful-wizard,\n ful-tooltip,\n ful-dialog,\n ful-drawer,\n ful-table,\n ful-pagination\n ):not(:state(rendered)) {\n visibility: hidden;\n }\n}\n","@layer ful.components {\n *:has(> ful-control-group > input, > ful-control-group > textarea) {\n &[uppercase] input,\n &[uppercase] textarea {\n text-transform: uppercase;\n }\n }\n\n ful-item-list {\n --ful-item-list-item-color: var(--ful-active-color);\n --ful-item-list-item-border-radius: var(--ful-border-radius);\n --ful-item-list-item-bg: var(--ful-active-bg);\n\n display: grid;\n /*\n room for a focused row's outline to sit in: at the four pixels this was,\n the ring landed on the rows either side and read as a smudge between them\n rather than as a ring around one\n */\n gap: 0.5rem;\n\n & > ful-item:first-child {\n margin-top: 0.5rem;\n }\n\n & > ful-item:last-child {\n margin-bottom: 0.5rem;\n }\n\n & > ful-item > div {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n min-width: 0;\n /*\n a row stands as tall as a control, the outer height of a control\n group rather than the inner one, so a field that is nothing but its\n item list lines up with an ordinary input beside it in a form. A\n longer list runs past it, which there is no helping, but the first\n row is where the eye looks for the control\n */\n min-height: calc(var(--ful-controls-height) + 2 * var(--ful-controls-border-width));\n padding: 5px 0.25rem 5px 0.5rem;\n color: var(--ful-item-list-item-color);\n border-radius: var(--ful-item-list-item-border-radius);\n background-color: var(--ful-item-list-item-bg);\n\n /*\n an outline rather than the theme's box-shadow ring, which is the one\n place in the library that departs from it and does so because the row\n is filled with the accent: a translucent ring of the same accent reads\n as a smudge against it, while an outline set off from the row shows\n the page through the gap and stays a ring. The offset also means the\n gap is whatever is actually behind the row, so a list on a dimmed or\n coloured surface needs no second rule.\n\n It replaced a halo of --ful-active-color at 40 percent, which is #fff\n in both themes: invisible on a light page, a glare on a dark one, and\n the remove button clears its own outline and leans on this for the\n indicator. Keyed on :focus-visible through :has, the way .ful-button\n keys its own, so a click does not raise a ring only the keyboard should\n */\n &:has(:focus-visible) {\n outline: 2px solid var(--ful-active-bg);\n outline-offset: 2px;\n }\n\n & > span {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n }\n\n & > span + span {\n flex: 0 0 auto;\n font-size: 0.875em;\n opacity: 0.75;\n }\n\n & > button {\n flex: 0 0 auto;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: calc(var(--ful-controls-height) - 0.625rem);\n height: calc(var(--ful-controls-height) - 0.625rem);\n padding: 0;\n font-size: inherit;\n font-family: inherit;\n color: inherit;\n background-color: transparent;\n border: 0;\n border-radius: calc(var(--ful-item-list-item-border-radius) - 0.1875rem);\n cursor: pointer;\n\n & ful-icon {\n width: 1em;\n height: 1em;\n }\n\n &:hover {\n background-color: color-mix(in srgb, var(--ful-invalid-color) 25%, transparent);\n }\n\n &:focus-visible {\n outline: 0;\n }\n }\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-control-group > input[type=\"file\"]) {\n & > ful-control-group > input[type=\"file\"] {\n padding-left: 0;\n }\n\n & > ful-control-group > input[type=\"file\"]::file-selector-button {\n margin: -0.375rem 0.75rem -0.375rem 0;\n padding: 0.375rem 0.75rem;\n height: var(--ful-controls-height);\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n background-color: var(--ful-selected-bg);\n border: 0;\n cursor: pointer;\n }\n\n & > ful-control-group > input[type=\"file\"]:first-child::file-selector-button {\n border-start-start-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n border-end-start-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n }\n\n & > ful-control-group > input[type=\"file\"]::file-selector-button:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n & > ful-control-group > input[type=\"file\"]:focus::file-selector-button {\n outline: 0;\n }\n\n /*\n the picker button follows the two claims apart, as the control group does.\n Readonly drops it: the value is fixed, so the button is an affordance for\n a gesture that will never be offered, and the input takes back the padding\n it used to sit flush against. Disabled keeps it and dims it, the way the\n platform dims its own, disabled saying the control is unavailable rather\n than absent. The input stays under both, showing the name of the file\n chosen, which is the one thing here there is to read\n */\n &[readonly] > ful-control-group > input[type=\"file\"]::file-selector-button {\n display: none;\n }\n\n &[readonly] > ful-control-group > input[type=\"file\"] {\n padding-left: 0.75rem;\n }\n\n /*opacity rather than a colour: --ful-disabled-bg is what the control group\n beside it already carries, so a button painted in it would disappear into\n the field. It is how a disabled button is dimmed elsewhere in the library*/\n &:disabled > ful-control-group > input[type=\"file\"]::file-selector-button {\n opacity: 0.5;\n cursor: default;\n }\n\n & > .default-dropzone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n min-height: 100px;\n margin-top: 0.5rem;\n padding: 1.5rem;\n color: var(--ful-color);\n text-align: center;\n background-color: var(--ful-bg);\n border: var(--ful-controls-border-width) dashed var(--ful-controls-border-color);\n border-radius: var(--ful-controls-border-radius);\n }\n\n /*\n both variants open the picker when clicked, so both say so. Only the\n default one is themed; a slotted dropzone is the author's own chrome and\n gets the cursor alone\n */\n & > .default-dropzone,\n & > .dropzone {\n cursor: pointer;\n }\n\n & > .default-dropzone:hover {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n &[dragover] > .default-dropzone {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n border-color: var(--ful-active-bg);\n box-shadow: none;\n }\n\n &[noinput] > ful-control-group {\n display: none;\n }\n\n /*\n a dropzone is an affordance and nothing besides: unlike a readonly text\n input, which still shows the value it will not let you change, it holds\n nothing to read. A field that will take neither a click nor a drop shows\n none at all, rather than a dashed hundred pixels inviting a gesture it\n refuses. The files already chosen stay where they were, in the item list\n */\n &:not([dropzone]) > .default-dropzone,\n &:not([dropzone]) > .dropzone,\n &[readonly] > .default-dropzone,\n &[readonly] > .dropzone,\n &:disabled > .default-dropzone,\n &:disabled > .dropzone {\n display: none;\n }\n\n &:not([item-list]) > ful-item-list {\n display: none;\n }\n\n &[readonly] {\n & > ful-item-list {\n pointer-events: none;\n }\n\n & > ful-control-group > input {\n pointer-events: none;\n }\n }\n\n &:disabled > ful-item-list {\n pointer-events: none;\n }\n\n /*\n a readonly field with an item list is the list, as it is on ful-select: the\n value is fixed and the rows already carry the names, so the control group\n holds nothing they do not. A disabled field keeps it, dimmed, disabled\n saying the control is there and unavailable rather than absent. Without an\n item list the input stays either way, being the only place a name appears\n */\n &[item-list][readonly] {\n & > ful-control-group {\n display: none;\n }\n\n /*\n the list stands where the control stood, so it starts and ends where\n the control group would have: the margins that space a list under a\n control have nothing to sit under here\n */\n & > ful-item-list > ful-item:first-child {\n margin-top: 0;\n }\n\n & > ful-item-list > ful-item:last-child {\n margin-bottom: 0;\n }\n }\n\n /*\n the remove button on each row goes the same way as the dropzone and the\n picker button: it is an affordance for a gesture the field refuses while\n a claim holds, and the row's name and size, which are what there is to\n read, stay\n */\n &[readonly] > ful-item-list ful-item button,\n &:disabled > ful-item-list ful-item button {\n display: none;\n }\n\n &[readonly] > ful-item-list > ful-item > div,\n &:disabled > ful-item-list > ful-item > div {\n padding-right: 0.5rem;\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-control-group > ful-dropdown) {\n cursor: pointer;\n\n &:not([item-list]) > ful-item-list {\n display: none;\n }\n\n &[item-list] ful-control-group ful-badge {\n display: none;\n }\n\n & > ful-control-group > ful-control {\n cursor: pointer;\n padding-left: 5px;\n padding-right: 2.25rem;\n overflow: hidden;\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n background-position: right 0.75rem center;\n background-repeat: no-repeat;\n background-size: 16px 12px;\n\n & > ful-badge + ful-badge {\n margin-left: 3px;\n }\n }\n\n /*\n readonly only: the value is fixed and the rows already carry it, so the\n control is noise. A disabled field keeps its control, dimmed, because\n disabled says the control is there and unavailable rather than absent,\n and a form that re-enables it must not make the page jump\n */\n &[item-list][readonly] {\n & > ful-control-group {\n display: none;\n }\n\n /*\n the list stands where the control stood, so it starts and ends where\n the control group would have: the margins that space a list under a\n control have nothing to sit under here\n */\n & > ful-item-list > ful-item:first-child {\n margin-top: 0;\n }\n\n & > ful-item-list > ful-item:last-child {\n margin-bottom: 0;\n }\n }\n\n /*\n the remove button is an affordance for a gesture both claims refuse, so\n it goes under either one, and the row takes back the space it held\n */\n &[readonly] > ful-item-list button,\n &:disabled > ful-item-list button {\n display: none;\n }\n\n &[readonly] > ful-item-list > ful-item > div,\n &:disabled > ful-item-list > ful-item > div {\n padding-right: 0.5rem;\n }\n\n &:disabled,\n &[readonly] {\n cursor: default;\n }\n\n &:disabled > ful-control-group > ful-control,\n &[readonly] > ful-control-group > ful-control {\n background-size: 0;\n cursor: default;\n }\n\n & > ful-control-group > ful-control > input {\n flex: 1 1 auto;\n width: 1em;\n min-width: 1em;\n margin: 0;\n padding: 0.375rem 0 0.375rem 7px;\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n background-color: transparent;\n border: 0;\n outline: 0;\n }\n }\n\n ful-dropdown {\n --ful-dropdown-color: var(--ful-color);\n --ful-dropdown-selected-bg: var(--ful-selected-bg);\n --ful-dropdown-active-bg: var(--ful-active-bg);\n --ful-dropdown-border-width: var(--ful-border-width);\n --ful-dropdown-border-radius: var(--ful-border-radius);\n --ful-dropdown-border-color: var(--ful-border-color);\n --ful-dropdown-background-color: var(--ful-bg);\n --ful-dropdown-scrollbar-width: var(--ful-scrollbar-width);\n --ful-dropdown-scrollbar-border-width: var(--ful-scrollbar-border-width);\n --ful-dropdown-scrollbar-bg: var(--ful-scrollbar-bg);\n --ful-dropdown-scrollbar-thumb-bg: var(--ful-scrollbar-thumb-bg);\n\n padding: 0.5rem 0;\n margin: 0.3rem 0 0;\n\n background-color: var(--ful-dropdown-background-color);\n background-clip: padding-box;\n border: var(--ful-dropdown-border-width) solid var(--ful-dropdown-border-color);\n border-radius: var(--ful-dropdown-border-radius);\n\n &:popover-open {\n display: block;\n top: anchor(bottom);\n left: anchor(left);\n width: anchor-size(width);\n }\n\n p[data-ref=\"empty\"] {\n margin: 0;\n padding: 0.5rem 0.751rem;\n color: var(--ful-dropdown-color);\n opacity: 0.65;\n }\n\n menu {\n height: auto;\n max-height: 200px;\n overflow-y: auto;\n padding: 0;\n margin: 0;\n\n &::-webkit-scrollbar {\n width: 12px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: var(--ful-dropdown-scrollbar-bg);\n border-radius: var(--ful-dropdown-scrollbar-width);\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: var(--ful-dropdown-scrollbar-width);\n background-color: var(--ful-dropdown-active-bg);\n border: var(--ful-dropdown-scrollbar-border-width) solid var(--ful-dropdown-scrollbar-bg);\n }\n }\n\n li {\n padding: 0.5rem 0.751rem;\n color: var(--ful-dropdown-color);\n display: block;\n border: 0;\n cursor: pointer;\n }\n\n li:hover,\n li[selected] {\n color: var(--ful-dropdown-color);\n background-color: var(--ful-dropdown-selected-bg);\n }\n\n li[picked] {\n background-color: color-mix(in srgb, var(--ful-dropdown-active-bg) 12%, transparent);\n box-shadow: inset 0.2rem 0 0 var(--ful-dropdown-active-bg);\n }\n\n li:active {\n color: #fff;\n background-color: var(--ful-dropdown-active-bg);\n }\n }\n}\n","@layer ful.components {\n *:has(> fieldset > ful-radio-list) {\n --ful-radio-group-label-border-color: var(--ful-border-color);\n --ful-radio-group-label-bg: inherit;\n --ful-radio-group-label-checked-border-color: var(--ful-accent-ink);\n --ful-radio-group-label-checked-bg: light-dark(#eefbfb, var(--ful-selected-bg));\n --ful-radio-group-label-disabled-border-color: var(--ful-border-color);\n --ful-radio-group-label-disabled-bg: var(--ful-disabled-bg);\n --ful-radio-group-active-bg: var(--ful-active-bg);\n\n display: block;\n\n &[required] > fieldset > legend::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n & > fieldset {\n display: block;\n min-width: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n\n & > legend {\n font-size: 16px;\n width: 100%;\n padding: 0;\n line-height: inherit;\n }\n }\n\n &.horizontal > fieldset > ful-radio-list {\n gap: 16px;\n grid-template-columns: 1fr 1fr;\n }\n\n &:invalid > fieldset > ful-radio-list label {\n border-color: var(--ful-radio-group-active-bg);\n }\n }\n\n ful-radio-list {\n display: grid;\n gap: 10px;\n grid-template-columns: 1fr;\n\n & label {\n display: flex;\n align-items: center;\n border: 1px solid var(--ful-radio-group-label-border-color);\n background-color: var(--ful-radio-group-label-bg);\n border-radius: 4px;\n padding: 8px 10px;\n height: 100%;\n cursor: pointer;\n\n & > div {\n flex: 1;\n }\n }\n\n & label:has(input[type=\"radio\"]:checked) {\n background-color: var(--ful-radio-group-label-checked-bg);\n border-color: var(--ful-radio-group-label-checked-border-color);\n }\n\n & label:has(input[type=\"radio\"]:disabled) {\n background-color: var(--ful-radio-group-label-disabled-bg);\n border-color: var(--ful-radio-group-label-disabled-border-color);\n }\n\n & input[type=\"radio\"] {\n margin-left: 8px;\n margin-right: 12px;\n height: 16px;\n width: 16px;\n vertical-align: text-bottom;\n accent-color: var(--ful-accent-ink);\n }\n\n & input[type=\"radio\"]:focus-visible {\n outline: 0;\n }\n\n & label:has(input[type=\"radio\"]:focus-visible) {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n ful-radio {\n display: none;\n }\n}\n","@layer ful.components {\n *:has(> ful-choice) {\n display: block;\n }\n}\n","@layer ful.components {\n /**\n * The text a spinner announces: present for assistive technology, taken out of\n * the layout so the ring stays the only thing on screen. A spinner with no such\n * text is a live region with nothing to read.\n */\n ful-spinner > .ful-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n\n ful-spinner {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n\n &::after {\n content: \"\";\n flex: 0 0 auto;\n display: inline-block;\n width: var(--ful-spinner-icon-width);\n height: var(--ful-spinner-icon-height);\n border-radius: 50%;\n border: var(--ful-spinner-icon-border-width) solid var(--ful-spinner-icon-color);\n border-right-color: transparent;\n animation: var(--ful-spinner-icon-animation-speed) linear infinite var(--ful-spinner-icon-animation-name);\n }\n\n @media (prefers-reduced-motion: reduce) {\n &::after {\n animation: none;\n }\n }\n\n &.centered {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &.big {\n --ful-spinner-icon-width: 2rem;\n --ful-spinner-icon-height: 2rem;\n --ful-spinner-icon-border-width: 0.25rem;\n }\n\n &.bigger {\n --ful-spinner-icon-width: 4rem;\n --ful-spinner-icon-height: 4rem;\n --ful-spinner-icon-border-width: 0.5rem;\n }\n\n &.backdrop {\n --ful-spinner-icon-width: 4rem;\n --ful-spinner-icon-height: 4rem;\n --ful-spinner-icon-border-width: 0.5rem;\n\n z-index: 2000;\n position: fixed;\n inset: 0;\n display: grid;\n place-items: center;\n background-color: rgb(167 167 167 / 80%);\n\n &::before {\n content: \"\";\n grid-area: 1 / 1;\n width: calc(var(--ful-spinner-icon-width) + 4rem);\n height: calc(var(--ful-spinner-icon-height) + 4rem);\n background-color: var(--ful-bg);\n border-radius: 1rem;\n }\n\n &::after {\n grid-area: 1 / 1;\n }\n }\n }\n\n body:has(ful-spinner.backdrop:not([hidden])) {\n overflow: hidden;\n }\n\n @keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-table-wrapper) {\n display: block;\n\n & tbody[data-ref=\"initial\"],\n & tbody[data-ref=\"loading\"],\n & tbody[data-ref=\"feedback\"] {\n height: 360px;\n padding: 1.5rem;\n\n & td {\n & p {\n margin-top: 1rem;\n }\n }\n }\n }\n\n ful-sorter {\n display: block;\n\n &:not(:state(rendered)) {\n visibility: hidden;\n }\n\n cursor: pointer;\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n}\n","@layer ful.components {\n ful-affix:has(> button[data-ref=\"operator\"], > button[data-ref=\"sensitivity\"]) {\n padding: 0;\n min-width: 4rem;\n overflow: hidden;\n\n & > button[data-ref=\"operator\"],\n & > button[data-ref=\"sensitivity\"] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 1 auto;\n align-self: stretch;\n padding: 0.375rem 0.75rem;\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: 0;\n cursor: pointer;\n }\n\n & > button[data-ref=\"operator\"] {\n min-width: 4rem;\n }\n\n & > button[data-ref=\"sensitivity\"] {\n min-width: 2.5rem;\n }\n\n & > button[data-ref=\"operator\"]:hover,\n & > button[data-ref=\"sensitivity\"]:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n & > button[data-ref=\"operator\"]:focus,\n & > button[data-ref=\"sensitivity\"]:focus {\n outline: 0;\n }\n\n & > button[data-ref=\"operator\"]:focus-visible,\n & > button[data-ref=\"sensitivity\"]:focus-visible {\n background-color: color-mix(in srgb, var(--ful-active-bg) 20%, transparent);\n }\n\n & > button[data-ref=\"operator\"]:disabled,\n & > button[data-ref=\"sensitivity\"]:disabled {\n cursor: default;\n opacity: 0.5;\n }\n }\n\n ful-control-group > ful-control > input {\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n background-color: transparent;\n border: 0;\n border-radius: 0;\n }\n\n ful-control-group > ful-control > input:focus {\n outline: 0;\n }\n\n ful-control-group > button[data-ref=\"value\"] {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 auto;\n min-width: 0;\n padding: 0.375rem 2rem 0.375rem 0.75rem;\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n white-space: nowrap;\n text-align: left;\n background-color: transparent;\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n background-position: right 0.75rem center;\n background-repeat: no-repeat;\n background-size: 16px 12px;\n border: 0;\n border-radius: 0;\n cursor: pointer;\n }\n\n ful-control-group > button[data-ref=\"value\"]:focus {\n outline: 0;\n }\n\n ful-control-group > button[data-ref=\"value\"]:disabled {\n cursor: default;\n opacity: 0.5;\n background-size: 0;\n }\n\n ful-affix:has(> button[data-ref=\"operator\"], > button[data-ref=\"sensitivity\"]) > ul[popover],\n ful-control-group > button[data-ref=\"value\"] + ul[popover] {\n top: anchor(bottom);\n left: anchor(left);\n margin: 0.3rem 0 0;\n min-width: 6rem;\n padding: 0.5rem 0;\n list-style: none;\n color: var(--ful-color);\n background-color: var(--ful-bg);\n background-clip: padding-box;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n\n &:popover-open {\n display: block;\n }\n\n & > li > a {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 1rem;\n color: var(--ful-color);\n text-decoration: none;\n cursor: pointer;\n\n & > span:first-child {\n flex: 0 0 2.25em;\n text-align: center;\n }\n }\n\n & > li > a:hover {\n background-color: var(--ful-selected-bg);\n }\n\n & > li > a:focus-visible {\n background-color: var(--ful-selected-bg);\n outline: 0;\n }\n\n & > li > a:active {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n }\n}\n","@layer ful.components {\n button:has(+ ful-note),\n .ful-tip {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n /*\n * a button does not inherit the page's font, and the correction below is\n * written in units the font defines, so it has to read the same font the\n * label does\n */\n font: inherit;\n /*\n * middle puts the box's centre on the midpoint of the x-height, while a\n * line of text reads as centred on its cap height, which sits higher, so\n * the icon rode about a tenth of an em low beside its label. The\n * correction is half the difference between the two, taken from the font\n * in use rather than guessed: the offset is paint only, so the label's\n * line box does not move\n */\n position: relative;\n top: calc((1ex - 1cap) / 2);\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n border: 0;\n border-radius: 50%;\n background: none;\n color: var(--ful-muted-color, var(--ful-color));\n cursor: pointer;\n\n & ful-icon {\n width: 1rem;\n height: 1rem;\n }\n\n &:hover {\n color: var(--ful-accent-ink);\n background-color: color-mix(in srgb, var(--ful-active-bg) 12%, transparent);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n ful-note,\n .ful-note {\n /* the space between the note and its invoker, which the callout points across */\n --ful-note-gap: 0.5rem;\n --ful-note-callout-size: 0.5rem;\n /*how near a corner the callout may sit before it would leave the border's curve*/\n --ful-note-callout-edge: calc(var(--ful-border-radius) + var(--ful-note-callout-size));\n\n display: none;\n max-width: 20rem;\n padding: 0.5rem 0.75rem;\n color: var(--ful-color);\n background-color: var(--ful-bg);\n background-clip: padding-box;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n font-size: 0.875rem;\n margin: var(--ful-note-gap) 0 0;\n\n &:popover-open {\n display: block;\n /*\n * the platform gives every popover overflow: auto, which clips the\n * callout back inside the box: a note is a line or two of text with\n * no height to scroll, so it is the overflow that goes\n */\n overflow: visible;\n }\n\n /*\n * The callout: a square straddling the edge that faces the invoker,\n * rotated a quarter turn so a corner points at it, carrying a border on\n * the two sides that end up outside the note and none on the two inside,\n * where its background covers the note's own border and the two become\n * one shape. Only a popover gets one, both because it is the only note\n * with an invoker to point at and because it is the only one the platform\n * positions: a plain .ful-note is static, and giving it a position here\n * would take the popover's own placement away from it.\n */\n &:popover-open::after {\n content: \"\";\n position: absolute;\n width: var(--ful-note-callout-size);\n height: var(--ful-note-callout-size);\n background-color: inherit;\n border: 0 solid var(--ful-border-color);\n rotate: 45deg;\n }\n\n /*\n * below the invoker: the callout sits on the top edge and points up.\n *\n * It points at the invoker rather than at the middle of the note, which\n * are the same spot until the viewport pushes the note sideways and the\n * two come apart by more than the note is wide. The wiring measures where\n * the invoker's centre falls and writes it into the two custom properties\n * below, in both placements: a pseudo-element cannot read the anchor\n * itself, its containing block being the note rather than the page, and\n * an anchor outside that is not one it may name. The clamp keeps the\n * callout off the rounded corners\n */\n &:popover-open::after {\n top: calc(var(--ful-note-callout-size) / -2 - var(--ful-border-width) / 2);\n left: clamp(\n var(--ful-note-callout-edge),\n var(--ful-note-callout-inline, 50%),\n calc(100% - var(--ful-note-callout-edge))\n );\n translate: -50% 0;\n border-block-start-width: var(--ful-border-width);\n border-inline-start-width: var(--ful-border-width);\n }\n\n &[placement=\"top\"]:popover-open {\n margin: 0 0 var(--ful-note-gap);\n\n &::after {\n top: auto;\n bottom: calc(var(--ful-note-callout-size) / -2 - var(--ful-border-width) / 2);\n border-block-start-width: 0;\n border-inline-start-width: 0;\n border-block-end-width: var(--ful-border-width);\n border-inline-end-width: var(--ful-border-width);\n }\n }\n\n &[placement=\"right\"]:popover-open {\n margin: 0 0 0 var(--ful-note-gap);\n\n &::after {\n top: clamp(\n var(--ful-note-callout-edge),\n var(--ful-note-callout-block, 50%),\n calc(100% - var(--ful-note-callout-edge))\n );\n left: calc(var(--ful-note-callout-size) / -2 - var(--ful-border-width) / 2);\n translate: 0 -50%;\n border-block-start-width: 0;\n border-inline-start-width: var(--ful-border-width);\n border-block-end-width: var(--ful-border-width);\n }\n }\n\n &[placement=\"left\"]:popover-open {\n margin: 0 var(--ful-note-gap) 0 0;\n\n &::after {\n top: clamp(\n var(--ful-note-callout-edge),\n var(--ful-note-callout-block, 50%),\n calc(100% - var(--ful-note-callout-edge))\n );\n left: auto;\n right: calc(var(--ful-note-callout-size) / -2 - var(--ful-border-width) / 2);\n translate: 0 -50%;\n border-block-start-width: var(--ful-border-width);\n border-inline-end-width: var(--ful-border-width);\n border-inline-start-width: 0;\n }\n }\n }\n\n dialog.ful-dialog {\n --ful-dialog-width: min(90vw, 32rem);\n\n width: var(--ful-dialog-width);\n padding: 0;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n background-color: var(--ful-bg);\n color: var(--ful-color);\n\n &::backdrop {\n background-color: var(--ful-backdrop-color);\n }\n\n & > header {\n padding: 1rem 1.25rem 0.5rem;\n\n & h2 {\n margin: 0;\n font-size: 1.125rem;\n }\n }\n\n & > [data-ref=\"body\"] {\n padding: 0.5rem 1.25rem;\n }\n\n & > footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n padding: 0.5rem 1.25rem 1rem;\n\n & > button {\n padding: 0.375rem 0.75rem;\n height: var(--ful-controls-height);\n border: var(--ful-controls-border-width) solid var(--ful-controls-border-color);\n border-radius: var(--ful-controls-border-radius);\n background-color: var(--ful-selected-bg);\n color: var(--ful-color);\n cursor: pointer;\n\n &:hover {\n background-color: var(--ful-active-bg);\n color: var(--ful-active-color);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n }\n }\n}\n","@layer ful.components {\n dialog.ful-drawer {\n --ful-drawer-width: min(90vw, 28rem);\n\n @media (max-width: 30rem) {\n --ful-drawer-width: 100vw;\n border-radius: 0;\n }\n\n position: fixed;\n inset-block: 0;\n /* the ua sheet pins both inline insets to 0; leaving start at 0 while\n end is 0 over-constrains a definite width, and the start edge wins,\n which is the opposite side from the one asked for */\n inset-inline-start: auto;\n inset-inline-end: 0;\n width: var(--ful-drawer-width);\n max-width: 100vw;\n height: 100dvh;\n max-height: 100dvh;\n margin: 0;\n padding: 0;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-start-start-radius: var(--ful-border-radius);\n border-end-start-radius: var(--ful-border-radius);\n background-color: var(--ful-bg);\n color: var(--ful-color);\n\n &::backdrop {\n background-color: var(--ful-backdrop-color);\n }\n\n &[open] {\n display: flex;\n flex-direction: column;\n animation: ful-drawer-slide-in 0.2s ease-out;\n }\n\n & > header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 1rem 1.25rem 0.5rem;\n\n & h2 {\n margin: 0;\n font-size: 1.125rem;\n }\n\n & > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n border: 0;\n border-radius: var(--ful-border-radius);\n background: none;\n color: var(--ful-muted-color, var(--ful-color));\n cursor: pointer;\n\n & ful-icon {\n width: 1em;\n height: 1em;\n }\n\n &:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n }\n\n & > section {\n padding: 0.5rem 1.25rem 1rem;\n overflow-y: auto;\n\n /*\n the wait fills the space it is waiting in, so the spinner sits in the\n middle of the drawer rather than under the header. The error does not:\n it is a bordered panel around a line or two of text, and growing it to\n the height of the drawer painted most of the panel as empty colour\n with the message floating in the centre\n */\n &[data-ref=\"loading\"] {\n display: grid;\n place-items: center;\n flex-grow: 1;\n }\n\n &[data-ref=\"error\"] {\n margin: 0 1.25rem;\n padding: 1rem;\n white-space: pre-line;\n color: var(--ful-error-color);\n background-color: var(--ful-error-bg);\n border: var(--ful-border-width) solid var(--ful-error-border-color);\n border-radius: var(--ful-border-radius);\n }\n }\n\n &[placement=\"start\"] {\n inset-inline-end: auto;\n inset-inline-start: 0;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n border-start-end-radius: var(--ful-border-radius);\n border-end-end-radius: var(--ful-border-radius);\n\n &[open] {\n animation-name: ful-drawer-slide-in-start;\n }\n }\n\n &:dir(rtl)[open] {\n animation-name: ful-drawer-slide-in-start;\n }\n\n &[placement=\"start\"]:dir(rtl)[open] {\n animation-name: ful-drawer-slide-in;\n }\n }\n\n @keyframes ful-drawer-slide-in {\n from {\n transform: translateX(1rem);\n opacity: 0;\n }\n }\n\n @keyframes ful-drawer-slide-in-start {\n from {\n transform: translateX(-1rem);\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n dialog.ful-drawer[open] {\n animation: none;\n }\n }\n}\n","@layer ful.components {\n ful-toasts:not(:has(> ful-toast)) {\n display: none;\n }\n\n *:has(> ful-toast) {\n --ful-toasts-max-width: min(90vw, 24rem);\n\n position: fixed;\n top: 1rem;\n inset-inline-end: 1rem;\n z-index: 1200;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.5rem;\n max-width: var(--ful-toasts-max-width);\n\n & > ful-toast {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n padding: 0.625rem 0.75rem;\n border: var(--ful-controls-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-controls-border-radius);\n background-color: var(--ful-bg);\n color: var(--ful-color);\n white-space: pre-line;\n animation: ful-toast-in 0.2s ease-out;\n\n & > div:first-child {\n flex-grow: 1;\n }\n\n & > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border: 0;\n border-radius: var(--ful-border-radius);\n background: none;\n color: inherit;\n cursor: pointer;\n\n & ful-icon {\n width: 1em;\n height: 1em;\n }\n\n &:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n &.success {\n border-color: var(--ful-accent-ink);\n color: var(--ful-accent-ink);\n }\n\n &.warning {\n border-color: var(--ful-warning-border-color);\n background-color: var(--ful-warning-bg);\n color: var(--ful-warning-color);\n }\n\n &.error {\n border-color: var(--ful-error-border-color);\n background-color: var(--ful-error-bg);\n color: var(--ful-error-color);\n }\n\n &.ful-toast-out {\n animation: ful-toast-out 0.2s ease-in forwards;\n }\n }\n }\n\n @keyframes ful-toast-in {\n from {\n transform: translateY(-0.5rem);\n opacity: 0;\n }\n }\n\n @keyframes ful-toast-out {\n to {\n transform: translateY(-0.5rem);\n opacity: 0;\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-tablist) {\n display: block;\n }\n\n ful-tablist {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n border-block-end: var(--ful-border-width) solid var(--ful-border-color);\n\n & > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n color: var(--ful-muted-color, var(--ful-color));\n background: none;\n border: var(--ful-border-width) solid transparent;\n border-start-start-radius: var(--ful-border-radius);\n border-start-end-radius: var(--ful-border-radius);\n cursor: pointer;\n\n &:hover {\n color: var(--ful-color);\n background-color: var(--ful-selected-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n &[aria-selected=\"true\"] {\n color: var(--ful-color);\n background-color: var(--ful-bg);\n border-color: var(--ful-border-color) var(--ful-border-color) transparent;\n font-weight: 600;\n }\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-accordion-group) {\n display: block;\n }\n\n ful-accordion-group {\n display: block;\n\n & > details {\n color: var(--ful-color);\n background-color: var(--ful-bg);\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n\n & + details {\n margin-top: 0.5rem;\n }\n\n &:has(> summary:focus-visible) {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n & > summary {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n cursor: pointer;\n list-style: none;\n outline: 0;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::after {\n content: \"\";\n margin-inline-start: auto;\n flex: 0 0 auto;\n width: 1em;\n height: 1em;\n background-color: currentcolor;\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>\");\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: contain;\n transition: rotate 0.2s ease-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n }\n\n &[open] > summary::after {\n rotate: 180deg;\n }\n\n & > :not(summary) {\n padding: 0.5rem 0.75rem 0.75rem;\n }\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-steps) {\n display: flex;\n flex-direction: column;\n\n & > section:not([aria-current=\"step\"]) {\n display: none;\n }\n }\n\n ful-steps {\n display: block;\n\n & ol {\n display: flex;\n flex-wrap: wrap;\n margin: 0 0 1rem;\n padding: 0;\n list-style: none;\n }\n\n & li:not([aria-current=\"step\"]) {\n display: none;\n }\n\n & li[aria-current=\"step\"] {\n display: flex;\n align-items: center;\n flex: 0 1 auto;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.5rem;\n font-weight: 700;\n color: var(--ful-accent-ink);\n }\n }\n\n ful-wizard {\n &[progress=\"timeline\"] {\n & ful-steps li {\n display: flex;\n justify-content: center;\n flex: 1 1 auto;\n min-width: min(100%, 8rem);\n text-align: center;\n color: var(--ful-accent-ink);\n border-block-end: calc(2 * var(--ful-border-width)) solid var(--ful-accent-ink);\n }\n\n & ful-steps li[aria-current=\"step\"] ~ li {\n color: color-mix(in srgb, var(--ful-color) 65%, var(--ful-bg));\n border-block-end-color: var(--ful-border-color);\n }\n }\n\n &[progress=\"dots\"] {\n & ful-steps ol {\n gap: 0.375rem;\n margin-block-end: 1rem;\n }\n\n & ful-steps li {\n display: block;\n flex: 0 0 auto;\n min-width: 0;\n min-height: 0;\n width: 0.5rem;\n height: 0.5rem;\n padding: 0;\n font-size: 0;\n border-radius: 50%;\n background-color: var(--ful-accent-ink);\n }\n\n & ful-steps li[aria-current=\"step\"] {\n background-color: var(--ful-active-bg);\n box-shadow: 0 0 0 0.125rem color-mix(in srgb, var(--ful-active-bg) 35%, transparent);\n }\n\n & ful-steps li[aria-current=\"step\"] ~ li {\n background-color: var(--ful-border-color);\n }\n }\n\n &[progress=\"none\"] {\n & ful-steps {\n display: none;\n }\n }\n }\n}\n","/**\n * Hiding wins over the chrome. `[hidden]` is the platform's own way of saying an\n * element is not rendered, and the library lays several of its parts out with\n * `display:`, which would otherwise beat it. The last layer settles that without\n * an `!important`, so a consuming page can still override it with a plain rule.\n */\n@layer ful.hidden {\n [hidden] {\n display: none;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ful.css","sources":["../src/ful/chrome/theme.css","../src/ful/forms/errors.css","../src/ful/forms/form.css","../src/ful/chrome/buttons.css","../src/ful/chrome/sections.css","../src/ful/chrome/pre-render.css","../src/ful/forms/input.css","../src/ful/forms/files.css","../src/ful/forms/select.css","../src/ful/forms/radio.css","../src/ful/forms/checkbox.css","../src/ful/chrome/spinner.css","../src/ful/navigation/table.css","../src/ful/forms/filters.css","../src/ful/disclosures/info.css","../src/ful/disclosures/drawer.css","../src/ful/disclosures/toast.css","../src/ful/navigation/tabs.css","../src/ful/disclosures/accordion.css","../src/ful/navigation/wizard.css","../src/ful/chrome/hidden.css"],"sourcesContent":["/**\n * The cascade contract. Everything ful ships lives in a layer, so any rule a\n * consuming page writes outside one wins over all of it whatever its\n * specificity, and a page that layers its own styles decides by declaring its\n * layer after these. `ful.hidden` comes last so hiding beats the chrome that\n * would otherwise lay an element out, which is the job an `!important` used to\n * do here.\n */\n@layer ful.theme, ful.components, ful.hidden;\n\n@layer ful.theme {\n @property --ful-border-width {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 1px;\n }\n\n @property --ful-border-radius {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 0.375rem;\n }\n\n @property --ful-scrollbar-width {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 12px;\n }\n\n @property --ful-scrollbar-border-width {\n syntax: \"<length>\";\n inherits: true;\n initial-value: 1px;\n }\n\n :root {\n --ful-color: light-dark(#212529, #dee2e6);\n --ful-bg: light-dark(#fff, #212529);\n --ful-muted-color: light-dark(#495057, #adb5bd);\n\n --ful-border-width: 1px;\n --ful-border-radius: 0.375rem;\n --ful-border-color: light-dark(#dee2e6, #495057);\n\n --ful-disabled-bg: light-dark(#e9ecef, #343a40);\n --ful-selected-bg: light-dark(#f8f9fa, #343a40);\n\n --ful-active-color: white;\n --ful-active-bg: #007376;\n --ful-accent-ink: light-dark(var(--ful-active-bg), color-mix(in srgb, var(--ful-active-bg) 55%, white));\n\n --ful-focus-border-color: color-mix(in srgb, var(--ful-active-bg) 75%, white);\n --ful-focus-box-shadow: 0 0 0 0.25rem color-mix(in srgb, var(--ful-active-bg) 25%, transparent);\n\n --ful-backdrop-color: rgb(0 0 0 / 50%);\n\n --ful-invalid-color: light-dark(#dc3545, #ea868f);\n --ful-invalid-border-color: var(--ful-invalid-color);\n --ful-invalid-box-shadow: 0 0 0 0.25rem color-mix(in srgb, var(--ful-invalid-color) 25%, transparent);\n\n --ful-error-color: #58151c;\n --ful-error-bg: #f8d7da;\n --ful-error-border-color: #f1aeb5;\n\n --ful-warning-color: #664d03;\n --ful-warning-bg: #fff3cd;\n --ful-warning-border-color: #ffe69c;\n\n --ful-scrollbar-bg: var(--ful-disabled-bg);\n --ful-scrollbar-thumb-bg: var(--ful-active-bg);\n --ful-scrollbar-width: 12px;\n --ful-scrollbar-border-width: 1px;\n\n --ful-controls-bg: var(--ful-bg);\n --ful-controls-border-width: var(--ful-border-width);\n --ful-controls-border-radius: var(--ful-border-radius);\n --ful-controls-border-color: var(--ful-border-color);\n --ful-controls-height: calc(1.5em + 0.75rem + 2px);\n\n --ful-spinner-icon-width: 1rem;\n --ful-spinner-icon-height: 1rem;\n --ful-spinner-icon-border-width: 0.2em;\n --ful-spinner-icon-animation-speed: 0.75s;\n --ful-spinner-icon-animation-name: spinner-border;\n --ful-spinner-icon-color: currentcolor;\n }\n}\n","@layer ful.components {\n ful-errors {\n --ful-errors-color: var(--ful-error-color);\n --ful-errors-bg: var(--ful-error-bg);\n --ful-errors-border-color: var(--ful-error-border-color);\n\n display: block;\n padding: 1rem;\n margin-bottom: 1rem;\n color: var(--ful-errors-color);\n background-color: var(--ful-errors-bg);\n border: 1px solid var(--ful-errors-border-color);\n border-radius: var(--ful-border-radius);\n }\n\n ful-field-error {\n --ful-field-error-invalid-color: var(--ful-invalid-color);\n display: none;\n font-size: 0.875rem;\n\n :invalid & {\n display: block;\n margin-top: 0.25rem;\n color: var(--ful-field-error-invalid-color);\n }\n }\n\n ful-field-warnings {\n display: none;\n &:not(:empty) {\n display: block;\n }\n }\n\n ful-field-warning {\n display: block;\n margin: 0.5rem 0;\n padding: 15px;\n color: var(--ful-warning-color);\n background-color: var(--ful-warning-bg);\n border-color: var(--ful-warning-border-color);\n border-radius: 8px;\n animation: show-and-hide 5s ease forwards;\n animation-composition: initial;\n }\n\n @keyframes show-and-hide {\n 0% {\n opacity: 0;\n display: block;\n }\n\n 3% {\n opacity: 1;\n }\n\n 90% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n display: none;\n }\n }\n}\n","@layer ful.components {\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n *:has(> ful-control-group) {\n display: block;\n }\n\n *:has(> ful-control-group) > label,\n *:has(> fieldset > ful-radio-list) > fieldset > legend {\n /*inline-block: an info slot carrying a tooltip rides the label's line,\n and nothing moves when there is none, the control group being block*/\n display: inline-block;\n margin: 0 0.25rem 0.5rem 0;\n color: var(--ful-color);\n }\n\n *:has(> ful-control-group)[required] > label::before,\n *:has(> ful-choice)[required] > ful-choice > label::before,\n *:has(> fieldset > ful-radio-list)[required] > fieldset > legend::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n ful-control-group {\n position: relative;\n display: flex;\n flex-wrap: nowrap;\n width: 100%;\n color: var(--ful-color);\n background-color: var(--ful-controls-bg);\n border: var(--ful-controls-border-width) solid var(--ful-controls-border-color);\n border-radius: var(--ful-controls-border-radius);\n\n &:has(:focus-visible):not(:has([popover] :focus-visible)) {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n & > input,\n & > textarea {\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n color: inherit;\n background-color: transparent;\n border: 0;\n border-radius: 0;\n\n &:focus {\n outline: 0;\n }\n }\n\n & > ful-affix:first-child {\n border-top-left-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n border-bottom-left-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n }\n\n & > ful-affix:last-child,\n & > ful-affix:has(+ ful-dropdown) {\n border-top-right-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n border-bottom-right-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n }\n }\n\n ful-affix {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n min-width: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: var(--ful-color);\n white-space: nowrap;\n background-color: var(--ful-selected-bg);\n border: 0;\n border-radius: 0;\n }\n\n /*\n * An affix holding a button is the button: the cell gives up the padding it\n * carries for text and an icon, and the button fills it in both axes. Left to\n * the affix's own layout a button is padded like text, which makes the field\n * taller than its neighbours, and centred inside a cell at least a control\n * wide, which leaves the affix's own ground showing down the side of it. Both\n * grow with the theme's control height and corner radius.\n *\n * The filters' operator and sensitivity buttons had this to themselves,\n * keyed on their data-ref. Every button in an affix needs it, an application's\n * own included: the affix is documented as a place to put one.\n */\n ful-affix:has(> button) {\n padding: 0;\n overflow: hidden;\n }\n\n ful-affix > button {\n display: flex;\n flex: 1 1 auto;\n align-self: stretch;\n align-items: center;\n justify-content: center;\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: 0;\n cursor: pointer;\n }\n\n /**\n * The cell owns the geometry of whatever button sits in it. A button carrying\n * .ful-button keeps the accent colours, which is the point of reaching for the\n * class, but the class outranks the element selector above and would keep its\n * own border and corner radius too, rounding a corner inside a cell that has\n * already drawn one and drawing a border where the group has one.\n */\n ful-affix > button.ful-button {\n border: 0;\n border-radius: 0;\n }\n\n ful-control {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n min-width: 0;\n min-height: var(--ful-controls-height);\n cursor: text;\n border: 0;\n border-radius: 0;\n }\n\n :invalid > ful-control-group {\n border-color: var(--ful-invalid-border-color);\n\n /**\n * The border colour is restated and the popover guard repeated from the\n * focus rule above: that rule's :not(:has(...)) carries the specificity of\n * its argument, so without both the focus ring would repaint an invalid\n * field in the focus colour and the field would read as healthy while the\n * caret is in it.\n */\n &:has(:focus-visible):not(:has([popover] :focus-visible)) {\n border-color: var(--ful-invalid-border-color);\n box-shadow: var(--ful-invalid-box-shadow);\n }\n }\n\n :disabled > ful-control-group {\n background-color: var(--ful-disabled-bg);\n }\n\n /**\n * A submit held off while the form is busy keeps its focus, so it is marked\n * aria-disabled rather than disabled. Unstyled buttons would otherwise lose the\n * platform's own disabled look: .ful-button already dims both spellings.\n */\n ful-form [aria-disabled=\"true\"] {\n opacity: 0.65;\n cursor: default;\n }\n\n ful-badge {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n margin: 5px 0;\n padding: 5px 7px;\n line-height: 1em;\n color: var(--ful-color);\n white-space: nowrap;\n cursor: pointer;\n background-color: var(--ful-selected-bg);\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n\n &:hover {\n background-color: var(--ful-disabled-bg);\n }\n\n &:focus-visible {\n border-color: var(--ful-focus-border-color);\n outline: 0;\n }\n }\n\n ful-choice {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 0;\n\n & > label {\n margin: 0;\n cursor: pointer;\n flex: 1 1 0;\n min-width: 0;\n }\n\n & input[type=\"checkbox\"] {\n width: 1em;\n height: 1em;\n margin: 0;\n font-size: inherit;\n accent-color: var(--ful-active-bg);\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n &[switch] input[type=\"checkbox\"] {\n appearance: none;\n position: relative;\n width: 2em;\n height: 1em;\n margin: 0;\n cursor: pointer;\n background-color: var(--ful-border-color);\n border-radius: 1em;\n transition: background-color 0.15s ease-in-out;\n\n &::before {\n content: \"\";\n display: block;\n width: 1em;\n height: 1em;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15);\n transition: translate 0.15s ease-in-out;\n }\n\n &:checked {\n background-color: var(--ful-active-bg);\n\n &::before {\n translate: 1em 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n &,\n &::before {\n transition: none;\n }\n }\n }\n }\n\n *:has(> ful-choice):invalid ful-choice input[type=\"checkbox\"] {\n outline: 1px solid var(--ful-invalid-border-color);\n outline-offset: 2px;\n }\n\n ful-icon,\n ful-sorter::before {\n background-color: currentcolor;\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: contain;\n }\n\n ful-icon {\n display: inline-block;\n width: 1em;\n height: 1em;\n vertical-align: -0.125em;\n\n &[name=\"search\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0'/></svg>\");\n }\n\n &[name=\"chevron-left\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n }\n\n &[name=\"chevron-right\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n }\n\n &[name=\"chevron-down\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>\");\n }\n\n &[name=\"arrow-clockwise\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2z'/><path d='M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466'/></svg>\");\n }\n\n &[name=\"x-lg\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'/></svg>\");\n }\n\n &[name=\"info-circle\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/><path d='m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0'/></svg>\");\n }\n\n &[name=\"info-circle-fill\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2'/></svg>\");\n }\n\n &[name=\"upload\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5'/><path d='M7.646 1.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 2.707V11.5a.5.5 0 0 1-1 0V2.707L5.354 4.854a.5.5 0 1 1-.708-.708z'/></svg>\");\n }\n\n &[name=\"arrow-down\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1'/></svg>\");\n }\n\n &[name=\"arrow-up\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5'/></svg>\");\n }\n\n &[name=\"inbox\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M4.98 4a.5.5 0 0 0-.39.188L1.54 8H6a.5.5 0 0 1 .5.5 1.5 1.5 0 1 0 3 0A.5.5 0 0 1 10 8h4.46l-3.05-3.812A.5.5 0 0 0 11.02 4zm9.954 5H10.45a2.5 2.5 0 0 1-4.9 0H1.066l.32 2.562a.5.5 0 0 0 .497.438h12.234a.5.5 0 0 0 .496-.438zM3.809 3.563A1.5 1.5 0 0 1 4.981 3h6.038a1.5 1.5 0 0 1 1.172.563l3.7 4.625a.5.5 0 0 1 .105.374l-.39 3.124A1.5 1.5 0 0 1 14.117 13H1.883a1.5 1.5 0 0 1-1.489-1.314l-.39-3.124a.5.5 0 0 1 .106-.374z'/></svg>\");\n }\n\n &[name=\"star\"] {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path d='M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z'/></svg>\");\n }\n }\n\n *:has(> ful-pagination-bar) {\n display: block;\n margin-top: auto;\n }\n\n ful-pagination-bar {\n display: block;\n user-select: none;\n\n & ul {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n margin: 0.5rem 0 0;\n padding: 0;\n list-style: none;\n }\n\n & li[data-ref=\"index\"] {\n margin-left: 0;\n margin-right: auto;\n color: var(--ful-color);\n }\n\n & li[data-ref=\"reload\"] button {\n border: 0;\n font-size: 1.25rem;\n }\n\n & button {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 2.25rem;\n height: 2.25rem;\n padding: 0 0.5rem;\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n text-decoration: none;\n background-color: transparent;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n cursor: pointer;\n }\n\n & button:hover {\n background-color: var(--ful-selected-bg);\n }\n\n & button:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n\n & button:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n ful-table-wrapper {\n & table {\n width: 100%;\n margin-bottom: 1rem;\n color: var(--ful-color);\n border-collapse: collapse;\n }\n\n & caption {\n padding: 0.5rem 0;\n color: var(--ful-color);\n text-align: left;\n caption-side: bottom;\n }\n\n & :is(th, td) {\n padding: 0.5rem;\n vertical-align: top;\n border-bottom: var(--ful-border-width) solid var(--ful-border-color);\n }\n\n & thead th {\n border-bottom-width: calc(2 * var(--ful-border-width));\n }\n\n & td[colspan] {\n padding: 1.5rem;\n text-align: center;\n vertical-align: middle;\n }\n\n & tbody[data-ref=\"feedback\"] {\n & > tr > td > div {\n padding: 1rem;\n color: var(--ful-error-color);\n background-color: var(--ful-error-bg);\n border: var(--ful-border-width) solid var(--ful-error-border-color);\n border-radius: var(--ful-border-radius);\n }\n\n & p {\n margin: 0 0 0.5rem;\n font-weight: 600;\n }\n }\n }\n\n ful-sorter {\n &::before {\n content: \"\";\n display: inline-block;\n width: 1em;\n height: 1em;\n vertical-align: text-top;\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1'/></svg>\");\n }\n\n &:not([order])::before {\n opacity: 0.35;\n }\n\n &[order=\"desc\"]::before {\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5'/></svg>\");\n }\n }\n}\n","@layer ful.components {\n .ful-button {\n --ful-button-height: var(--ful-controls-height);\n --ful-button-border-width: var(--ful-controls-border-width);\n --ful-button-border-radius: var(--ful-controls-border-radius);\n --ful-button-color: var(--ful-active-color);\n --ful-button-bg: var(--ful-active-bg);\n --ful-button-border-color: var(--ful-button-bg);\n --ful-button-hover-bg: color-mix(in srgb, var(--ful-active-bg) 85%, black);\n --ful-button-hover-color: var(--ful-button-color);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n min-height: var(--ful-button-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n text-decoration: none;\n color: var(--ful-button-color);\n background-color: var(--ful-button-bg);\n border: var(--ful-button-border-width) solid var(--ful-button-border-color);\n border-radius: var(--ful-button-border-radius);\n cursor: pointer;\n\n &:hover {\n color: var(--ful-button-hover-color);\n background-color: var(--ful-button-hover-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n &:disabled,\n &[aria-disabled=\"true\"] {\n opacity: 0.5;\n pointer-events: none;\n }\n\n &.ghost {\n --ful-button-color: var(--ful-accent-ink);\n --ful-button-bg: transparent;\n --ful-button-border-color: var(--ful-accent-ink);\n --ful-button-hover-color: var(--ful-active-color);\n --ful-button-hover-bg: var(--ful-active-bg);\n }\n\n &.soft {\n --ful-button-color: var(--ful-color);\n --ful-button-bg: var(--ful-selected-bg);\n --ful-button-border-color: var(--ful-controls-border-color);\n --ful-button-hover-color: var(--ful-active-color);\n --ful-button-hover-bg: var(--ful-active-bg);\n }\n\n &.small {\n --ful-button-height: calc(1.25em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n }\n }\n}\n","@layer ful.components {\n :is(ful-tabs, ful-wizard, ful-dialog, ful-drawer) {\n & [loading=\"\"] {\n position: relative;\n }\n\n & [loading=\"\"]::after {\n content: \"\";\n position: absolute;\n inset: 0;\n margin: auto;\n width: var(--ful-spinner-icon-width);\n height: var(--ful-spinner-icon-height);\n border-radius: 50%;\n border: var(--ful-spinner-icon-border-width) solid var(--ful-spinner-icon-color);\n border-inline-end-color: transparent;\n animation: var(--ful-spinner-icon-animation-speed) linear infinite var(--ful-spinner-icon-animation-name);\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n }\n\n & .ful-section-error {\n margin-bottom: 1rem;\n padding: 1rem;\n white-space: pre-line;\n color: var(--ful-error-color);\n background-color: var(--ful-error-bg);\n border: var(--ful-border-width) solid var(--ful-error-border-color);\n border-radius: var(--ful-border-radius);\n }\n }\n}\n","@layer ful.components {\n /**\n * An element whose own markup is misleading before it renders stays\n * invisible until it does: a select's slotted <select> paints as a native\n * dropdown, a dialog's body sits in the page flow, a tab host shows every\n * panel at once. An element whose markup already reads correctly is left\n * alone, ful-form being the case that matters, since hiding it would hide\n * the fields and the submit button that were about to paint correctly.\n *\n * :is() rather than a plain selector list, because a list is all or nothing:\n * one bad selector among these would drop the rule for every one of them,\n * where :is() ignores the bad argument alone. Its specificity, the most\n * specific argument's, decides nothing here, the layer order settling every\n * contest before specificity is consulted.\n *\n * The list is ful's own, and a field of your own joins it by carrying the\n * .ful-input class, or opts in on its own tag:\n * x-rating:not(:state(rendered)) { visibility: hidden }\n */\n :is(\n ful-input,\n .ful-input,\n ful-input-file,\n ful-input-local-date,\n ful-input-local-time,\n ful-input-instant,\n ful-checkbox,\n ful-radio-group,\n ful-select,\n ful-filter-text,\n ful-filter-number,\n ful-filter-boolean,\n ful-filter-local-date,\n ful-filter-instant,\n ful-tabs,\n ful-wizard,\n ful-tooltip,\n ful-dialog,\n ful-drawer,\n ful-table,\n ful-pagination\n ):not(:state(rendered)) {\n visibility: hidden;\n }\n}\n","@layer ful.components {\n *:has(> ful-control-group > input, > ful-control-group > textarea) {\n &[uppercase] input,\n &[uppercase] textarea {\n text-transform: uppercase;\n }\n }\n\n ful-item-list {\n --ful-item-list-item-color: var(--ful-active-color);\n --ful-item-list-item-border-radius: var(--ful-border-radius);\n --ful-item-list-item-bg: var(--ful-active-bg);\n\n display: grid;\n /*\n room for a focused row's outline to sit in: at the four pixels this was,\n the ring landed on the rows either side and read as a smudge between them\n rather than as a ring around one\n */\n gap: 0.5rem;\n\n & > ful-item:first-child {\n margin-top: 0.5rem;\n }\n\n & > ful-item:last-child {\n margin-bottom: 0.5rem;\n }\n\n & > ful-item > div {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n min-width: 0;\n /*\n a row stands as tall as a control, the outer height of a control\n group rather than the inner one, so a field that is nothing but its\n item list lines up with an ordinary input beside it in a form. A\n longer list runs past it, which there is no helping, but the first\n row is where the eye looks for the control\n */\n min-height: calc(var(--ful-controls-height) + 2 * var(--ful-controls-border-width));\n padding: 5px 0.25rem 5px 0.5rem;\n color: var(--ful-item-list-item-color);\n border-radius: var(--ful-item-list-item-border-radius);\n background-color: var(--ful-item-list-item-bg);\n\n /*\n an outline rather than the theme's box-shadow ring, which is the one\n place in the library that departs from it and does so because the row\n is filled with the accent: a translucent ring of the same accent reads\n as a smudge against it, while an outline set off from the row shows\n the page through the gap and stays a ring. The offset also means the\n gap is whatever is actually behind the row, so a list on a dimmed or\n coloured surface needs no second rule.\n\n It replaced a halo of --ful-active-color at 40 percent, which is #fff\n in both themes: invisible on a light page, a glare on a dark one, and\n the remove button clears its own outline and leans on this for the\n indicator. Keyed on :focus-visible through :has, the way .ful-button\n keys its own, so a click does not raise a ring only the keyboard should\n */\n &:has(:focus-visible) {\n outline: 2px solid var(--ful-active-bg);\n outline-offset: 2px;\n }\n\n & > span {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n }\n\n & > span + span {\n flex: 0 0 auto;\n font-size: 0.875em;\n opacity: 0.75;\n }\n\n & > button {\n flex: 0 0 auto;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: calc(var(--ful-controls-height) - 0.625rem);\n height: calc(var(--ful-controls-height) - 0.625rem);\n padding: 0;\n font-size: inherit;\n font-family: inherit;\n color: inherit;\n background-color: transparent;\n border: 0;\n border-radius: calc(var(--ful-item-list-item-border-radius) - 0.1875rem);\n cursor: pointer;\n\n & ful-icon {\n width: 1em;\n height: 1em;\n }\n\n &:hover {\n background-color: color-mix(in srgb, var(--ful-invalid-color) 25%, transparent);\n }\n\n &:focus-visible {\n outline: 0;\n }\n }\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-control-group > input[type=\"file\"]) {\n & > ful-control-group > input[type=\"file\"] {\n padding-left: 0;\n }\n\n & > ful-control-group > input[type=\"file\"]::file-selector-button {\n margin: -0.375rem 0.75rem -0.375rem 0;\n padding: 0.375rem 0.75rem;\n height: var(--ful-controls-height);\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n background-color: var(--ful-selected-bg);\n border: 0;\n cursor: pointer;\n }\n\n & > ful-control-group > input[type=\"file\"]:first-child::file-selector-button {\n border-start-start-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n border-end-start-radius: calc(var(--ful-controls-border-radius) - var(--ful-controls-border-width));\n }\n\n & > ful-control-group > input[type=\"file\"]::file-selector-button:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n & > ful-control-group > input[type=\"file\"]:focus::file-selector-button {\n outline: 0;\n }\n\n /*\n the picker button follows the two claims apart, as the control group does.\n Readonly drops it: the value is fixed, so the button is an affordance for\n a gesture that will never be offered, and the input takes back the padding\n it used to sit flush against. Disabled keeps it and dims it, the way the\n platform dims its own, disabled saying the control is unavailable rather\n than absent. The input stays under both, showing the name of the file\n chosen, which is the one thing here there is to read\n */\n &[readonly] > ful-control-group > input[type=\"file\"]::file-selector-button {\n display: none;\n }\n\n &[readonly] > ful-control-group > input[type=\"file\"] {\n padding-left: 0.75rem;\n }\n\n /*opacity rather than a colour: --ful-disabled-bg is what the control group\n beside it already carries, so a button painted in it would disappear into\n the field. It is how a disabled button is dimmed elsewhere in the library*/\n &:disabled > ful-control-group > input[type=\"file\"]::file-selector-button {\n opacity: 0.5;\n cursor: default;\n }\n\n & > .default-dropzone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n min-height: 100px;\n margin-top: 0.5rem;\n padding: 1.5rem;\n color: var(--ful-color);\n text-align: center;\n background-color: var(--ful-bg);\n border: var(--ful-controls-border-width) dashed var(--ful-controls-border-color);\n border-radius: var(--ful-controls-border-radius);\n }\n\n /*\n both variants open the picker when clicked, so both say so. Only the\n default one is themed; a slotted dropzone is the author's own chrome and\n gets the cursor alone\n */\n & > .default-dropzone,\n & > .dropzone {\n cursor: pointer;\n }\n\n & > .default-dropzone:hover {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n &[dragover] > .default-dropzone {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n border-color: var(--ful-active-bg);\n box-shadow: none;\n }\n\n &[noinput] > ful-control-group {\n display: none;\n }\n\n /*\n a dropzone is an affordance and nothing besides: unlike a readonly text\n input, which still shows the value it will not let you change, it holds\n nothing to read. A field that will take neither a click nor a drop shows\n none at all, rather than a dashed hundred pixels inviting a gesture it\n refuses. The files already chosen stay where they were, in the item list\n */\n &:not([dropzone]) > .default-dropzone,\n &:not([dropzone]) > .dropzone,\n &[readonly] > .default-dropzone,\n &[readonly] > .dropzone,\n &:disabled > .default-dropzone,\n &:disabled > .dropzone {\n display: none;\n }\n\n &:not([item-list]) > ful-item-list {\n display: none;\n }\n\n &[readonly] {\n & > ful-item-list {\n pointer-events: none;\n }\n\n & > ful-control-group > input {\n pointer-events: none;\n }\n }\n\n &:disabled > ful-item-list {\n pointer-events: none;\n }\n\n /*\n a readonly field with an item list is the list, as it is on ful-select: the\n value is fixed and the rows already carry the names, so the control group\n holds nothing they do not. A disabled field keeps it, dimmed, disabled\n saying the control is there and unavailable rather than absent. Without an\n item list the input stays either way, being the only place a name appears\n */\n &[item-list][readonly] {\n & > ful-control-group {\n display: none;\n }\n\n /*\n the list stands where the control stood, so it starts and ends where\n the control group would have: the margins that space a list under a\n control have nothing to sit under here\n */\n & > ful-item-list > ful-item:first-child {\n margin-top: 0;\n }\n\n & > ful-item-list > ful-item:last-child {\n margin-bottom: 0;\n }\n }\n\n /*\n the remove button on each row goes the same way as the dropzone and the\n picker button: it is an affordance for a gesture the field refuses while\n a claim holds, and the row's name and size, which are what there is to\n read, stay\n */\n &[readonly] > ful-item-list ful-item button,\n &:disabled > ful-item-list ful-item button {\n display: none;\n }\n\n &[readonly] > ful-item-list > ful-item > div,\n &:disabled > ful-item-list > ful-item > div {\n padding-right: 0.5rem;\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-control-group > ful-dropdown) {\n cursor: pointer;\n\n &:not([item-list]) > ful-item-list {\n display: none;\n }\n\n &[item-list] ful-control-group ful-badge {\n display: none;\n }\n\n & > ful-control-group > ful-control {\n cursor: pointer;\n padding-left: 5px;\n padding-right: 2.25rem;\n overflow: hidden;\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n background-position: right 0.75rem center;\n background-repeat: no-repeat;\n background-size: 16px 12px;\n\n & > ful-badge + ful-badge {\n margin-left: 3px;\n }\n }\n\n /*\n readonly only: the value is fixed and the rows already carry it, so the\n control is noise. A disabled field keeps its control, dimmed, because\n disabled says the control is there and unavailable rather than absent,\n and a form that re-enables it must not make the page jump\n */\n &[item-list][readonly] {\n & > ful-control-group {\n display: none;\n }\n\n /*\n the list stands where the control stood, so it starts and ends where\n the control group would have: the margins that space a list under a\n control have nothing to sit under here\n */\n & > ful-item-list > ful-item:first-child {\n margin-top: 0;\n }\n\n & > ful-item-list > ful-item:last-child {\n margin-bottom: 0;\n }\n }\n\n /*\n the remove button is an affordance for a gesture both claims refuse, so\n it goes under either one, and the row takes back the space it held\n */\n &[readonly] > ful-item-list button,\n &:disabled > ful-item-list button {\n display: none;\n }\n\n &[readonly] > ful-item-list > ful-item > div,\n &:disabled > ful-item-list > ful-item > div {\n padding-right: 0.5rem;\n }\n\n &:disabled,\n &[readonly] {\n cursor: default;\n }\n\n &:disabled > ful-control-group > ful-control,\n &[readonly] > ful-control-group > ful-control {\n background-size: 0;\n cursor: default;\n /* the chevron is gone, so the room that was held for it goes too:\n without this the value sat against an inch of nothing */\n padding-right: 5px;\n }\n\n & > ful-control-group > ful-control > input {\n flex: 1 1 auto;\n width: 1em;\n min-width: 1em;\n margin: 0;\n padding: 0.375rem 0 0.375rem 7px;\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n background-color: transparent;\n border: 0;\n outline: 0;\n }\n }\n\n ful-dropdown {\n --ful-dropdown-color: var(--ful-color);\n --ful-dropdown-selected-bg: var(--ful-selected-bg);\n --ful-dropdown-active-bg: var(--ful-active-bg);\n --ful-dropdown-border-width: var(--ful-border-width);\n --ful-dropdown-border-radius: var(--ful-border-radius);\n --ful-dropdown-border-color: var(--ful-border-color);\n --ful-dropdown-background-color: var(--ful-bg);\n --ful-dropdown-scrollbar-width: var(--ful-scrollbar-width);\n --ful-dropdown-scrollbar-border-width: var(--ful-scrollbar-border-width);\n --ful-dropdown-scrollbar-bg: var(--ful-scrollbar-bg);\n --ful-dropdown-scrollbar-thumb-bg: var(--ful-scrollbar-thumb-bg);\n\n padding: 0.5rem 0;\n margin: 0.3rem 0 0;\n\n background-color: var(--ful-dropdown-background-color);\n background-clip: padding-box;\n border: var(--ful-dropdown-border-width) solid var(--ful-dropdown-border-color);\n border-radius: var(--ful-dropdown-border-radius);\n\n &:popover-open {\n display: block;\n top: anchor(bottom);\n left: anchor(left);\n width: anchor-size(width);\n }\n\n p[data-ref=\"empty\"] {\n margin: 0;\n padding: 0.5rem 0.751rem;\n color: var(--ful-dropdown-color);\n opacity: 0.65;\n }\n\n menu {\n height: auto;\n max-height: 200px;\n overflow-y: auto;\n padding: 0;\n margin: 0;\n\n &::-webkit-scrollbar {\n width: 12px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: var(--ful-dropdown-scrollbar-bg);\n border-radius: var(--ful-dropdown-scrollbar-width);\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: var(--ful-dropdown-scrollbar-width);\n background-color: var(--ful-dropdown-active-bg);\n border: var(--ful-dropdown-scrollbar-border-width) solid var(--ful-dropdown-scrollbar-bg);\n }\n }\n\n li {\n padding: 0.5rem 0.751rem;\n color: var(--ful-dropdown-color);\n display: block;\n border: 0;\n cursor: pointer;\n }\n\n li:hover,\n li[selected] {\n color: var(--ful-dropdown-color);\n background-color: var(--ful-dropdown-selected-bg);\n }\n\n li[picked] {\n background-color: color-mix(in srgb, var(--ful-dropdown-active-bg) 12%, transparent);\n box-shadow: inset 0.2rem 0 0 var(--ful-dropdown-active-bg);\n }\n\n li:active {\n color: #fff;\n background-color: var(--ful-dropdown-active-bg);\n }\n }\n}\n","@layer ful.components {\n *:has(> fieldset > ful-radio-list) {\n --ful-radio-group-label-border-color: var(--ful-border-color);\n --ful-radio-group-label-bg: inherit;\n --ful-radio-group-label-checked-border-color: var(--ful-accent-ink);\n --ful-radio-group-label-checked-bg: light-dark(#eefbfb, var(--ful-selected-bg));\n --ful-radio-group-label-disabled-border-color: var(--ful-border-color);\n --ful-radio-group-label-disabled-bg: var(--ful-disabled-bg);\n --ful-radio-group-active-bg: var(--ful-active-bg);\n\n display: block;\n\n &[required] > fieldset > legend::before {\n content: \"* \";\n display: inline;\n font-weight: 700;\n color: var(--ful-color);\n }\n\n & > fieldset {\n display: block;\n min-width: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n\n & > legend {\n font-size: 16px;\n width: 100%;\n padding: 0;\n line-height: inherit;\n }\n }\n\n &.horizontal > fieldset > ful-radio-list {\n gap: 16px;\n grid-template-columns: 1fr 1fr;\n }\n\n /*\n the invalid colour, not the active one: an invalid group used to outline\n every one of its labels in the accent, which is what a picked label wears,\n so the group read as entirely selected at the moment it was being reported\n as wrong\n */\n &:invalid > fieldset > ful-radio-list label {\n border-color: var(--ful-invalid-border-color);\n }\n }\n\n ful-radio-list {\n display: grid;\n gap: 10px;\n grid-template-columns: 1fr;\n\n & label {\n display: flex;\n align-items: center;\n border: 1px solid var(--ful-radio-group-label-border-color);\n background-color: var(--ful-radio-group-label-bg);\n border-radius: 4px;\n padding: 8px 10px;\n height: 100%;\n cursor: pointer;\n\n & > div {\n flex: 1;\n }\n }\n\n & label:has(input[type=\"radio\"]:checked) {\n background-color: var(--ful-radio-group-label-checked-bg);\n border-color: var(--ful-radio-group-label-checked-border-color);\n }\n\n & label:has(input[type=\"radio\"]:disabled) {\n background-color: var(--ful-radio-group-label-disabled-bg);\n border-color: var(--ful-radio-group-label-disabled-border-color);\n }\n\n & input[type=\"radio\"] {\n margin-left: 8px;\n margin-right: 12px;\n height: 16px;\n width: 16px;\n vertical-align: text-bottom;\n accent-color: var(--ful-accent-ink);\n }\n\n & input[type=\"radio\"]:focus-visible {\n outline: 0;\n }\n\n & label:has(input[type=\"radio\"]:focus-visible) {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n ful-radio {\n display: none;\n }\n}\n","@layer ful.components {\n *:has(> ful-choice) {\n display: block;\n }\n}\n","@layer ful.components {\n /**\n * The text a spinner announces: present for assistive technology, taken out of\n * the layout so the ring stays the only thing on screen. A spinner with no such\n * text is a live region with nothing to read.\n */\n ful-spinner > .ful-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n\n ful-spinner {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n\n &::after {\n content: \"\";\n flex: 0 0 auto;\n display: inline-block;\n width: var(--ful-spinner-icon-width);\n height: var(--ful-spinner-icon-height);\n border-radius: 50%;\n border: var(--ful-spinner-icon-border-width) solid var(--ful-spinner-icon-color);\n border-right-color: transparent;\n animation: var(--ful-spinner-icon-animation-speed) linear infinite var(--ful-spinner-icon-animation-name);\n }\n\n @media (prefers-reduced-motion: reduce) {\n &::after {\n animation: none;\n }\n }\n\n &.centered {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &.big {\n --ful-spinner-icon-width: 2rem;\n --ful-spinner-icon-height: 2rem;\n --ful-spinner-icon-border-width: 0.25rem;\n }\n\n &.bigger {\n --ful-spinner-icon-width: 4rem;\n --ful-spinner-icon-height: 4rem;\n --ful-spinner-icon-border-width: 0.5rem;\n }\n\n &.backdrop {\n --ful-spinner-icon-width: 4rem;\n --ful-spinner-icon-height: 4rem;\n --ful-spinner-icon-border-width: 0.5rem;\n\n z-index: 2000;\n position: fixed;\n inset: 0;\n display: grid;\n place-items: center;\n background-color: rgb(167 167 167 / 80%);\n\n &::before {\n content: \"\";\n grid-area: 1 / 1;\n width: calc(var(--ful-spinner-icon-width) + 4rem);\n height: calc(var(--ful-spinner-icon-height) + 4rem);\n background-color: var(--ful-bg);\n border-radius: 1rem;\n }\n\n &::after {\n grid-area: 1 / 1;\n }\n }\n }\n\n body:has(ful-spinner.backdrop:not([hidden])) {\n overflow: hidden;\n }\n\n @keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-table-wrapper) {\n display: block;\n\n /*\n * A column heading reads along its column. The user agent centres a th,\n * which is a default from an age when a table was a layout, and the\n * library used to inherit bootstrap's reboot undoing it: the headings\n * of ful-table's own thead went centred the moment a page dropped\n * bootstrap. Said here now, on the table the library renders.\n */\n & th {\n text-align: start;\n }\n\n /*\n * Revalidating with rows already on screen: they stay where they are and\n * go quiet, so a sort or a page change is the rows changing rather than\n * the table collapsing to a spinner and growing back. They stop taking\n * the pointer while they do, since a row about to be replaced is not one\n * to act on, which emptying the body used to guarantee.\n */\n &[aria-busy=\"true\"] tbody:not([data-ref]) {\n opacity: 0.6;\n pointer-events: none;\n }\n\n & tbody[data-ref=\"initial\"],\n & tbody[data-ref=\"loading\"],\n & tbody[data-ref=\"feedback\"] {\n height: 360px;\n padding: 1.5rem;\n\n & td {\n & p {\n margin-top: 1rem;\n }\n }\n }\n }\n\n ful-sorter {\n display: block;\n\n &:not(:state(rendered)) {\n visibility: hidden;\n }\n\n cursor: pointer;\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n}\n","@layer ful.components {\n /*\n * filling the cell is the shared affix rule's job now, in form.css: what is\n * left here is what belongs to these two buttons alone, their widths and the\n * colours they take when picked at\n */\n ful-affix:has(> button[data-ref=\"operator\"], > button[data-ref=\"sensitivity\"]) {\n min-width: 4rem;\n\n & > button[data-ref=\"operator\"] {\n min-width: 4rem;\n }\n\n & > button[data-ref=\"sensitivity\"] {\n min-width: 2.5rem;\n }\n\n & > button[data-ref=\"operator\"]:hover,\n & > button[data-ref=\"sensitivity\"]:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n & > button[data-ref=\"operator\"]:focus,\n & > button[data-ref=\"sensitivity\"]:focus {\n outline: 0;\n }\n\n & > button[data-ref=\"operator\"]:focus-visible,\n & > button[data-ref=\"sensitivity\"]:focus-visible {\n background-color: color-mix(in srgb, var(--ful-active-bg) 20%, transparent);\n }\n\n & > button[data-ref=\"operator\"]:disabled,\n & > button[data-ref=\"sensitivity\"]:disabled {\n cursor: default;\n opacity: 0.5;\n }\n }\n\n ful-control-group > ful-control > input {\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n background-color: transparent;\n border: 0;\n border-radius: 0;\n }\n\n ful-control-group > ful-control > input:focus {\n outline: 0;\n }\n\n ful-control-group > button[data-ref=\"value\"] {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 auto;\n min-width: 0;\n padding: 0.375rem 2rem 0.375rem 0.75rem;\n font-size: inherit;\n font-family: inherit;\n line-height: 1.5;\n color: var(--ful-color);\n white-space: nowrap;\n text-align: left;\n background-color: transparent;\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n background-position: right 0.75rem center;\n background-repeat: no-repeat;\n background-size: 16px 12px;\n border: 0;\n border-radius: 0;\n cursor: pointer;\n }\n\n ful-control-group > button[data-ref=\"value\"]:focus {\n outline: 0;\n }\n\n ful-control-group > button[data-ref=\"value\"]:disabled {\n cursor: default;\n opacity: 0.5;\n background-size: 0;\n }\n\n ful-affix:has(> button[data-ref=\"operator\"], > button[data-ref=\"sensitivity\"]) > ul[popover],\n ful-control-group > button[data-ref=\"value\"] + ul[popover] {\n top: anchor(bottom);\n left: anchor(left);\n margin: 0.3rem 0 0;\n min-width: 6rem;\n padding: 0.5rem 0;\n list-style: none;\n color: var(--ful-color);\n background-color: var(--ful-bg);\n background-clip: padding-box;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n\n &:popover-open {\n display: block;\n }\n\n & > li > a {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 1rem;\n color: var(--ful-color);\n text-decoration: none;\n cursor: pointer;\n\n & > span:first-child {\n flex: 0 0 2.25em;\n text-align: center;\n }\n }\n\n /*\n * The choice the button currently holds, drawn as ful-select draws a\n * picked entry: a wash of the accent with a bar along the leading edge.\n * The glyph on the button says which one it is only to a reader who\n * already knows the glyphs, so the menu says it in full.\n */\n & > li > a[aria-checked=\"true\"] {\n background-color: color-mix(in srgb, var(--ful-active-bg) 12%, transparent);\n box-shadow: inset 0.2rem 0 0 var(--ful-active-bg);\n }\n\n & > li > a:hover {\n background-color: var(--ful-selected-bg);\n }\n\n & > li > a:focus-visible {\n background-color: var(--ful-selected-bg);\n outline: 0;\n }\n\n & > li > a:active {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n }\n}\n","@layer ful.components {\n button:has(+ ful-note),\n .ful-tip {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n /*\n * a button does not inherit the page's font, and the correction below is\n * written in units the font defines, so it has to read the same font the\n * label does\n */\n font: inherit;\n /*\n * middle puts the box's centre on the midpoint of the x-height, while a\n * line of text reads as centred on its cap height, which sits higher, so\n * the icon rode about a tenth of an em low beside its label. The\n * correction is half the difference between the two, taken from the font\n * in use rather than guessed: the offset is paint only, so the label's\n * line box does not move\n */\n position: relative;\n top: calc((1ex - 1cap) / 2);\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n border: 0;\n border-radius: 50%;\n background: none;\n color: var(--ful-muted-color, var(--ful-color));\n cursor: pointer;\n\n & ful-icon {\n width: 1rem;\n height: 1rem;\n }\n\n &:hover {\n color: var(--ful-accent-ink);\n background-color: color-mix(in srgb, var(--ful-active-bg) 12%, transparent);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n ful-note,\n .ful-note {\n /* the space between the note and its invoker, which the callout points across */\n --ful-note-gap: 0.5rem;\n --ful-note-callout-size: 0.5rem;\n /*how near a corner the callout may sit before it would leave the border's curve*/\n --ful-note-callout-edge: calc(var(--ful-border-radius) + var(--ful-note-callout-size));\n\n display: none;\n max-width: 20rem;\n padding: 0.5rem 0.75rem;\n color: var(--ful-color);\n background-color: var(--ful-bg);\n background-clip: padding-box;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n font-size: 0.875rem;\n /*\n * the note says its own piece: it is placed in the top layer beside\n * whatever carried the marker, a bold field label or an emphasised cell\n * among them, and inheriting that set the whole explanation in it\n */\n font-weight: 400;\n font-style: normal;\n text-align: start;\n margin: var(--ful-note-gap) 0 0;\n\n &:popover-open {\n display: block;\n /*\n * the platform gives every popover overflow: auto, which clips the\n * callout back inside the box: a note is a line or two of text with\n * no height to scroll, so it is the overflow that goes\n */\n overflow: visible;\n }\n\n /*\n * The callout: a square straddling the edge that faces the invoker,\n * rotated a quarter turn so a corner points at it, carrying a border on\n * the two sides that end up outside the note and none on the two inside,\n * where its background covers the note's own border and the two become\n * one shape. Only a popover gets one, both because it is the only note\n * with an invoker to point at and because it is the only one the platform\n * positions: a plain .ful-note is static, and giving it a position here\n * would take the popover's own placement away from it.\n */\n &:popover-open::after {\n content: \"\";\n position: absolute;\n width: var(--ful-note-callout-size);\n height: var(--ful-note-callout-size);\n background-color: inherit;\n border: 0 solid var(--ful-border-color);\n rotate: 45deg;\n }\n\n /*\n * below the invoker: the callout sits on the top edge and points up.\n *\n * It points at the invoker rather than at the middle of the note, which\n * are the same spot until the viewport pushes the note sideways and the\n * two come apart by more than the note is wide. The wiring measures where\n * the invoker's centre falls and writes it into the two custom properties\n * below, in both placements: a pseudo-element cannot read the anchor\n * itself, its containing block being the note rather than the page, and\n * an anchor outside that is not one it may name. The clamp keeps the\n * callout off the rounded corners\n */\n &:popover-open::after {\n top: calc(var(--ful-note-callout-size) / -2 - var(--ful-border-width) / 2);\n left: clamp(\n var(--ful-note-callout-edge),\n var(--ful-note-callout-inline, 50%),\n calc(100% - var(--ful-note-callout-edge))\n );\n translate: -50% 0;\n border-block-start-width: var(--ful-border-width);\n border-inline-start-width: var(--ful-border-width);\n }\n\n &[placement=\"top\"]:popover-open {\n margin: 0 0 var(--ful-note-gap);\n\n &::after {\n top: auto;\n bottom: calc(var(--ful-note-callout-size) / -2 - var(--ful-border-width) / 2);\n border-block-start-width: 0;\n border-inline-start-width: 0;\n border-block-end-width: var(--ful-border-width);\n border-inline-end-width: var(--ful-border-width);\n }\n }\n\n &[placement=\"right\"]:popover-open {\n margin: 0 0 0 var(--ful-note-gap);\n\n &::after {\n top: clamp(\n var(--ful-note-callout-edge),\n var(--ful-note-callout-block, 50%),\n calc(100% - var(--ful-note-callout-edge))\n );\n left: calc(var(--ful-note-callout-size) / -2 - var(--ful-border-width) / 2);\n translate: 0 -50%;\n border-block-start-width: 0;\n border-inline-start-width: var(--ful-border-width);\n border-block-end-width: var(--ful-border-width);\n }\n }\n\n &[placement=\"left\"]:popover-open {\n margin: 0 var(--ful-note-gap) 0 0;\n\n &::after {\n top: clamp(\n var(--ful-note-callout-edge),\n var(--ful-note-callout-block, 50%),\n calc(100% - var(--ful-note-callout-edge))\n );\n left: auto;\n right: calc(var(--ful-note-callout-size) / -2 - var(--ful-border-width) / 2);\n translate: 0 -50%;\n border-block-start-width: var(--ful-border-width);\n border-inline-end-width: var(--ful-border-width);\n border-inline-start-width: 0;\n }\n }\n }\n\n dialog.ful-dialog {\n --ful-dialog-width: min(90vw, 32rem);\n\n width: var(--ful-dialog-width);\n padding: 0;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n background-color: var(--ful-bg);\n color: var(--ful-color);\n\n &::backdrop {\n background-color: var(--ful-backdrop-color);\n }\n\n /*\n * The chrome answers to a tag as a direct child and to a class at any\n * depth. The tag form keeps the simple case simple, a page writing\n * header, body and footer straight into the dialog. The class form is\n * what a page needs when something stands in between, a form wrapping\n * the whole dialog so that a submit button in the footer belongs to it\n * being the ordinary case, and a descendant selector on a bare header or\n * footer would reach into the content instead.\n */\n & > header,\n & .ful-dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 1rem 1.25rem 0.5rem;\n\n & h2 {\n margin: 0;\n font-size: 1.125rem;\n margin-inline-end: auto;\n }\n\n /* what the header slot carries sits beside the heading, before it */\n & > :not(h2, button[data-ref=\"close\"]) {\n flex: 0 0 auto;\n }\n\n /* the close button, the same one the drawer's header carries */\n & > button[data-ref=\"close\"] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n border: 0;\n border-radius: var(--ful-border-radius);\n background: none;\n color: var(--ful-muted-color, var(--ful-color));\n cursor: pointer;\n\n & ful-icon {\n width: 1em;\n height: 1em;\n }\n\n &:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n /* the button sits at the end even where no heading was given */\n & > button[data-ref=\"close\"]:only-child {\n margin-inline-start: auto;\n }\n }\n\n & > [data-ref=\"body\"],\n & .ful-dialog-body {\n padding: 0.5rem 1.25rem;\n }\n\n /*\n * what update() shows while it waits and where it paints a rejection,\n * the same pair the drawer carries. The ring is centred on the room the\n * dialog has; the error is a bordered panel around a line or two of\n * text, so it takes only the height it needs\n */\n & > [data-ref=\"loading\"] {\n display: grid;\n place-items: center;\n padding: 2rem 1.25rem;\n }\n\n & > [data-ref=\"error\"] {\n margin: 0.5rem 1.25rem;\n padding: 1rem;\n white-space: pre-line;\n color: var(--ful-error-color);\n background-color: var(--ful-error-bg);\n border: var(--ful-border-width) solid var(--ful-error-border-color);\n border-radius: var(--ful-border-radius);\n }\n\n /* a footer the dialog renders empty, its buttons being the form's own */\n & > footer.ful-dialog-footer:empty {\n display: none;\n }\n\n /*\n * a footer standing inside the body rather than beside it, which is where\n * a form's own buttons sit: the body already holds the side padding, so\n * the footer adding its own would inset its buttons past the header and\n * the text they follow\n */\n & .ful-dialog-body :is(.ful-dialog-header, .ful-dialog-footer) {\n padding-inline: 0;\n }\n\n & > footer,\n & .ful-dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n padding: 0.5rem 1.25rem 1rem;\n\n /*\n * a plain button is dressed here, which is what the acknowledge\n * button the dialog renders for itself is. One already carrying\n * .ful-button is dressed by that, so a page choosing a variant is\n * not overruled by a more specific selector saying the same thing\n */\n & > button:not(.ful-button) {\n padding: 0.375rem 0.75rem;\n height: var(--ful-controls-height);\n border: var(--ful-controls-border-width) solid var(--ful-controls-border-color);\n border-radius: var(--ful-controls-border-radius);\n background-color: var(--ful-selected-bg);\n color: var(--ful-color);\n cursor: pointer;\n\n &:hover {\n background-color: var(--ful-active-bg);\n color: var(--ful-active-color);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n }\n }\n}\n","@layer ful.components {\n dialog.ful-drawer {\n --ful-drawer-width: min(90vw, 28rem);\n\n @media (max-width: 30rem) {\n --ful-drawer-width: 100vw;\n border-radius: 0;\n }\n\n position: fixed;\n inset-block: 0;\n /* the ua sheet pins both inline insets to 0; leaving start at 0 while\n end is 0 over-constrains a definite width, and the start edge wins,\n which is the opposite side from the one asked for */\n inset-inline-start: auto;\n inset-inline-end: 0;\n width: var(--ful-drawer-width);\n max-width: 100vw;\n height: 100dvh;\n max-height: 100dvh;\n margin: 0;\n padding: 0;\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-start-start-radius: var(--ful-border-radius);\n border-end-start-radius: var(--ful-border-radius);\n background-color: var(--ful-bg);\n color: var(--ful-color);\n\n &::backdrop {\n background-color: var(--ful-backdrop-color);\n }\n\n &[open] {\n display: flex;\n flex-direction: column;\n animation: ful-drawer-slide-in 0.2s ease-out;\n }\n\n & > header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 1rem 1.25rem 0.5rem;\n\n & h2 {\n margin: 0;\n font-size: 1.125rem;\n }\n\n & > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n border: 0;\n border-radius: var(--ful-border-radius);\n background: none;\n color: var(--ful-muted-color, var(--ful-color));\n cursor: pointer;\n\n & ful-icon {\n width: 1em;\n height: 1em;\n }\n\n &:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n }\n\n & > section {\n padding: 0.5rem 1.25rem 1rem;\n overflow-y: auto;\n\n /*\n the content takes whatever height the header leaves rather than only\n its own, and lays its children out in a column, so what a caller\n delivers can put its buttons at the foot of the drawer instead of\n immediately under the last field. A footer it ends with is pushed\n there without the caller having to say so\n */\n &[data-ref=\"content\"] {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-height: 0;\n\n & > footer:last-child {\n margin-block-start: auto;\n }\n }\n\n /*\n the wait fills the space it is waiting in, so the spinner sits in the\n middle of the drawer rather than under the header. The error does not:\n it is a bordered panel around a line or two of text, and growing it to\n the height of the drawer painted most of the panel as empty colour\n with the message floating in the centre\n */\n &[data-ref=\"loading\"] {\n display: grid;\n place-items: center;\n flex-grow: 1;\n }\n\n &[data-ref=\"error\"] {\n margin: 0 1.25rem;\n padding: 1rem;\n white-space: pre-line;\n color: var(--ful-error-color);\n background-color: var(--ful-error-bg);\n border: var(--ful-border-width) solid var(--ful-error-border-color);\n border-radius: var(--ful-border-radius);\n }\n }\n\n &[placement=\"start\"] {\n inset-inline-end: auto;\n inset-inline-start: 0;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n border-start-end-radius: var(--ful-border-radius);\n border-end-end-radius: var(--ful-border-radius);\n\n &[open] {\n animation-name: ful-drawer-slide-in-start;\n }\n }\n\n &:dir(rtl)[open] {\n animation-name: ful-drawer-slide-in-start;\n }\n\n &[placement=\"start\"]:dir(rtl)[open] {\n animation-name: ful-drawer-slide-in;\n }\n }\n\n @keyframes ful-drawer-slide-in {\n from {\n transform: translateX(1rem);\n opacity: 0;\n }\n }\n\n @keyframes ful-drawer-slide-in-start {\n from {\n transform: translateX(-1rem);\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n dialog.ful-drawer[open] {\n animation: none;\n }\n }\n}\n","@layer ful.components {\n ful-toasts:not(:has(> ful-toast)) {\n display: none;\n }\n\n *:has(> ful-toast) {\n --ful-toasts-max-width: min(90vw, 24rem);\n\n position: fixed;\n top: 1rem;\n inset-inline-end: 1rem;\n z-index: 1200;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.5rem;\n max-width: var(--ful-toasts-max-width);\n\n & > ful-toast {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n padding: 0.625rem 0.75rem;\n border: var(--ful-controls-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-controls-border-radius);\n background-color: var(--ful-bg);\n color: var(--ful-color);\n white-space: pre-line;\n animation: ful-toast-in 0.2s ease-out;\n\n & > div:first-child {\n flex-grow: 1;\n }\n\n & > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border: 0;\n border-radius: var(--ful-border-radius);\n background: none;\n color: inherit;\n cursor: pointer;\n\n & ful-icon {\n width: 1em;\n height: 1em;\n }\n\n &:hover {\n color: var(--ful-active-color);\n background-color: var(--ful-active-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n }\n\n &.success {\n border-color: var(--ful-accent-ink);\n color: var(--ful-accent-ink);\n }\n\n &.warning {\n border-color: var(--ful-warning-border-color);\n background-color: var(--ful-warning-bg);\n color: var(--ful-warning-color);\n }\n\n &.error {\n border-color: var(--ful-error-border-color);\n background-color: var(--ful-error-bg);\n color: var(--ful-error-color);\n }\n\n &.ful-toast-out {\n animation: ful-toast-out 0.2s ease-in forwards;\n }\n }\n }\n\n @keyframes ful-toast-in {\n from {\n transform: translateY(-0.5rem);\n opacity: 0;\n }\n }\n\n @keyframes ful-toast-out {\n to {\n transform: translateY(-0.5rem);\n opacity: 0;\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-tablist) {\n display: block;\n\n /*\n * The panel stands off its tablist. Without this the content begins on\n * the tablist's bottom border, which reads as one block and loses the\n * rhythm the rest of a page has; the tabs render the panel, so the space\n * between the two belongs here rather than to every page that uses them.\n */\n & > [role=\"tabpanel\"] {\n padding-block-start: 1rem;\n }\n }\n\n ful-tablist {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n border-block-end: var(--ful-border-width) solid var(--ful-border-color);\n\n & > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n /* a tab's own gap: an icon before its label needs air, and the\n tablist's gap spaces the tabs from one another, not their parts */\n gap: 0.375rem;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n color: var(--ful-muted-color, var(--ful-color));\n background: none;\n border: var(--ful-border-width) solid transparent;\n border-start-start-radius: var(--ful-border-radius);\n border-start-end-radius: var(--ful-border-radius);\n cursor: pointer;\n\n &:hover {\n color: var(--ful-color);\n background-color: var(--ful-selected-bg);\n }\n\n &:focus-visible {\n outline: 0;\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n &[aria-selected=\"true\"] {\n color: var(--ful-color);\n background-color: var(--ful-bg);\n border-color: var(--ful-border-color) var(--ful-border-color) transparent;\n font-weight: 600;\n }\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-accordion-group) {\n display: block;\n }\n\n ful-accordion-group {\n display: block;\n\n & > details {\n color: var(--ful-color);\n background-color: var(--ful-bg);\n border: var(--ful-border-width) solid var(--ful-border-color);\n border-radius: var(--ful-border-radius);\n\n & + details {\n margin-top: 0.5rem;\n }\n\n &:has(> summary:focus-visible) {\n border-color: var(--ful-focus-border-color);\n box-shadow: var(--ful-focus-box-shadow);\n }\n\n & > summary {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.75rem;\n font: inherit;\n line-height: 1.5;\n cursor: pointer;\n list-style: none;\n outline: 0;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::after {\n content: \"\";\n margin-inline-start: auto;\n flex: 0 0 auto;\n width: 1em;\n height: 1em;\n background-color: currentcolor;\n mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='black' viewBox='0 0 16 16'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>\");\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: contain;\n transition: rotate 0.2s ease-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n }\n\n &[open] > summary::after {\n rotate: 180deg;\n }\n\n & > :not(summary) {\n padding: 0.5rem 0.75rem 0.75rem;\n }\n }\n }\n}\n","@layer ful.components {\n *:has(> ful-steps) {\n display: flex;\n flex-direction: column;\n\n & > section:not([aria-current=\"step\"]) {\n display: none;\n }\n }\n\n ful-steps {\n display: block;\n\n & ol {\n display: flex;\n flex-wrap: wrap;\n margin: 0 0 1rem;\n padding: 0;\n list-style: none;\n }\n\n & li:not([aria-current=\"step\"]) {\n display: none;\n }\n\n & li[aria-current=\"step\"] {\n display: flex;\n align-items: center;\n flex: 0 1 auto;\n min-height: var(--ful-controls-height);\n padding: 0.375rem 0.5rem;\n font-weight: 700;\n color: var(--ful-accent-ink);\n }\n }\n\n ful-wizard {\n &[progress=\"timeline\"] {\n & ful-steps li {\n display: flex;\n justify-content: center;\n flex: 1 1 auto;\n min-width: min(100%, 8rem);\n text-align: center;\n color: var(--ful-accent-ink);\n border-block-end: calc(2 * var(--ful-border-width)) solid var(--ful-accent-ink);\n }\n\n & ful-steps li[aria-current=\"step\"] ~ li {\n color: color-mix(in srgb, var(--ful-color) 65%, var(--ful-bg));\n border-block-end-color: var(--ful-border-color);\n }\n }\n\n &[progress=\"dots\"] {\n & ful-steps ol {\n gap: 0.375rem;\n margin-block-end: 1rem;\n }\n\n & ful-steps li {\n display: block;\n flex: 0 0 auto;\n min-width: 0;\n min-height: 0;\n width: 0.5rem;\n height: 0.5rem;\n padding: 0;\n font-size: 0;\n border-radius: 50%;\n background-color: var(--ful-accent-ink);\n }\n\n & ful-steps li[aria-current=\"step\"] {\n background-color: var(--ful-active-bg);\n box-shadow: 0 0 0 0.125rem color-mix(in srgb, var(--ful-active-bg) 35%, transparent);\n }\n\n & ful-steps li[aria-current=\"step\"] ~ li {\n background-color: var(--ful-border-color);\n }\n }\n\n &[progress=\"none\"] {\n & ful-steps {\n display: none;\n }\n }\n }\n}\n","/**\n * Hiding wins over the chrome. `[hidden]` is the platform's own way of saying an\n * element is not rendered, and the library lays several of its parts out with\n * `display:`, which would otherwise beat it. The last layer settles that without\n * an `!important`, so a consuming page can still override it with a plain rule.\n */\n@layer ful.hidden {\n [hidden] {\n display: none;\n }\n}\n"],"names":[],"mappings":"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"}
|