fokus-styles 2.4.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/components.css +561 -83
- package/dist/css/components.min.css +1 -1
- package/dist/css/fokus-components.css +561 -83
- package/dist/css/fokus-components.min.css +1 -1
- package/dist/css/fokus-rtl.css +697 -83
- package/dist/css/fokus-rtl.min.css +1 -1
- package/dist/css/fokus-utilities.css +136 -0
- package/dist/css/fokus-utilities.min.css +1 -1
- package/dist/css/fokus.css +996 -258
- package/dist/css/fokus.min.css +1 -1
- package/dist/css/forms.css +300 -176
- package/dist/css/forms.min.css +1 -1
- package/dist/css/helpers.css +136 -0
- package/dist/css/helpers.min.css +1 -1
- package/dist/js/fokus.js +270 -25
- package/dist/js/fokus.min.js +18 -18
- package/package.json +17 -15
- package/packages/fokus-components/scss/components/_alerts.scss +128 -6
- package/packages/fokus-components/scss/components/_badges.scss +26 -10
- package/packages/fokus-components/scss/components/_index.scss +1 -0
- package/packages/fokus-components/scss/components/_popover.scss +131 -21
- package/packages/fokus-components/scss/components/_responsive.scss +23 -0
- package/packages/fokus-components/scss/components/_tag.scss +37 -14
- package/packages/fokus-components/scss/components/_toasts.scss +156 -11
- package/packages/fokus-components/scss/components/_tooltips.scss +70 -18
- package/packages/fokus-components/scss/forms/_check-radio-switch.scss +313 -215
- package/packages/fokus-components/scss/forms/_forms.scss +16 -0
- package/packages/fokus-js/js/carousel.d.ts +4 -0
- package/packages/fokus-js/js/carousel.js +8 -0
- package/packages/fokus-js/js/core/positioning.js +18 -9
- package/packages/fokus-js/js/dropdown.d.ts +4 -0
- package/packages/fokus-js/js/dropdown.js +7 -0
- package/packages/fokus-js/js/popover.js +26 -1
- package/packages/fokus-js/js/tabs.d.ts +3 -0
- package/packages/fokus-js/js/tabs.js +5 -0
- package/packages/fokus-js/js/tag.js +17 -0
- package/packages/fokus-js/js/toast.js +77 -3
- package/packages/fokus-js/js/tooltip.d.ts +8 -1
- package/packages/fokus-js/js/tooltip.js +106 -13
- package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
- package/CHANGELOG.md +0 -910
- package/dist/css/components.css.map +0 -1
- package/dist/css/components.min.css.map +0 -1
- package/dist/css/fokus-components.css.map +0 -1
- package/dist/css/fokus-components.min.css.map +0 -1
- package/dist/css/fokus-core.css.map +0 -1
- package/dist/css/fokus-core.min.css.map +0 -1
- package/dist/css/fokus-dark.css.map +0 -1
- package/dist/css/fokus-dark.min.css.map +0 -1
- package/dist/css/fokus-rtl.css.map +0 -1
- package/dist/css/fokus-rtl.min.css.map +0 -1
- package/dist/css/fokus-utilities.css.map +0 -1
- package/dist/css/fokus-utilities.min.css.map +0 -1
- package/dist/css/fokus.css.map +0 -1
- package/dist/css/fokus.min.css.map +0 -1
- package/dist/css/fonts.css.map +0 -1
- package/dist/css/fonts.min.css.map +0 -1
- package/dist/css/forms.css.map +0 -1
- package/dist/css/forms.min.css.map +0 -1
- package/dist/css/helpers.css.map +0 -1
- package/dist/css/helpers.min.css.map +0 -1
- package/dist/css/layout.css.map +0 -1
- package/dist/css/layout.min.css.map +0 -1
- package/dist/js/fokus.js.map +0 -7
- package/dist/js/fokus.min.js.map +0 -7
- package/docs/README.md +0 -86
- package/docs/comparison.md +0 -124
- package/docs/components/accordion.md +0 -104
- package/docs/components/alert-dialog.md +0 -99
- package/docs/components/alert.md +0 -59
- package/docs/components/avatar.md +0 -13
- package/docs/components/badge.md +0 -82
- package/docs/components/breadcrumb.md +0 -93
- package/docs/components/button-group.md +0 -13
- package/docs/components/button.md +0 -98
- package/docs/components/card.md +0 -111
- package/docs/components/carousel.md +0 -167
- package/docs/components/checkbox.md +0 -97
- package/docs/components/close-button.md +0 -13
- package/docs/components/code.md +0 -13
- package/docs/components/collapse.md +0 -78
- package/docs/components/combobox.md +0 -123
- package/docs/components/command-palette.md +0 -131
- package/docs/components/datatable.md +0 -173
- package/docs/components/datepicker.md +0 -137
- package/docs/components/divider.md +0 -57
- package/docs/components/dropdown.md +0 -103
- package/docs/components/empty-state.md +0 -65
- package/docs/components/file-upload-advanced.md +0 -116
- package/docs/components/file-upload.md +0 -93
- package/docs/components/icon-link.md +0 -13
- package/docs/components/input-group.md +0 -73
- package/docs/components/input.md +0 -90
- package/docs/components/list-group.md +0 -13
- package/docs/components/modal.md +0 -120
- package/docs/components/navbar.md +0 -74
- package/docs/components/nested-menu.md +0 -90
- package/docs/components/notification-center.md +0 -116
- package/docs/components/offcanvas.md +0 -102
- package/docs/components/pagination.md +0 -145
- package/docs/components/placeholder.md +0 -13
- package/docs/components/popover.md +0 -105
- package/docs/components/progress.md +0 -126
- package/docs/components/radio.md +0 -70
- package/docs/components/range.md +0 -83
- package/docs/components/rating.md +0 -91
- package/docs/components/ratio.md +0 -13
- package/docs/components/scrollspy.md +0 -13
- package/docs/components/segmented-control.md +0 -82
- package/docs/components/select.md +0 -89
- package/docs/components/skeleton.md +0 -70
- package/docs/components/stepper.md +0 -107
- package/docs/components/switch.md +0 -75
- package/docs/components/table.md +0 -90
- package/docs/components/tabs.md +0 -104
- package/docs/components/tag.md +0 -129
- package/docs/components/tile.md +0 -112
- package/docs/components/timeline.md +0 -78
- package/docs/components/toast.md +0 -95
- package/docs/components/tooltip.md +0 -77
- package/docs/components/tree-view.md +0 -118
- package/docs/contributing/contributing.md +0 -18
- package/docs/getting-started/installation.md +0 -70
- package/docs/getting-started/usage.md +0 -105
- package/docs/guides/accessibility.md +0 -102
- package/docs/guides/charts.md +0 -73
- package/docs/guides/dark-mode.md +0 -90
- package/docs/guides/icons.md +0 -99
- package/docs/guides/javascript-api.md +0 -9
- package/docs/guides/layout-advanced.md +0 -118
- package/docs/guides/migration-clarus-to-fokus.md +0 -48
- package/docs/guides/migration-external.md +0 -123
- package/docs/guides/migration-v1.md +0 -63
- package/docs/guides/print.md +0 -30
- package/docs/guides/rtl-and-system-preferences.md +0 -28
- package/docs/guides/theming.md +0 -140
- package/docs/guides/utility-api.md +0 -9
- package/docs/prompts/prompt-plan.md +0 -45
- package/docs/reference/accessibility-matrix.md +0 -77
- package/docs/reference/browser-support.md +0 -75
- package/docs/reference/contrast-report.md +0 -50
- package/docs/reference/definitions.md +0 -864
- package/docs/reference/design-tokens.md +0 -194
- package/docs/reference/scss-architecture.md +0 -227
- package/docs/reference/size-baseline.json +0 -34
- package/docs/reference/stability.md +0 -89
- package/docs/showcase.md +0 -25
- package/mockup/README.md +0 -41
- package/mockup/assets/carousel-planning.png +0 -0
- package/mockup/assets/carousel-workspace.png +0 -0
- package/mockup/assets/example-theme.css +0 -8
- package/mockup/assets/example-theme.js +0 -11
- package/mockup/assets/showcase-contracts.js +0 -84
- package/mockup/assets/showcase.css +0 -91
- package/mockup/assets/showcase.js +0 -724
- package/mockup/content-data.html +0 -9
- package/mockup/examples/accordion-tabs-toast.html +0 -149
- package/mockup/examples/alert-dialog.html +0 -84
- package/mockup/examples/alerts.html +0 -41
- package/mockup/examples/badges-alerts.html +0 -77
- package/mockup/examples/buttons.html +0 -58
- package/mockup/examples/cards.html +0 -132
- package/mockup/examples/carousel.html +0 -126
- package/mockup/examples/charts.html +0 -102
- package/mockup/examples/check-radio-switch.html +0 -144
- package/mockup/examples/collapse.html +0 -69
- package/mockup/examples/combobox.html +0 -60
- package/mockup/examples/command-palette.html +0 -64
- package/mockup/examples/datatable.html +0 -113
- package/mockup/examples/datepicker.html +0 -62
- package/mockup/examples/divider.html +0 -45
- package/mockup/examples/dropdown-tooltip.html +0 -77
- package/mockup/examples/empty-state.html +0 -56
- package/mockup/examples/file-drop.html +0 -74
- package/mockup/examples/file-upload-advanced.html +0 -68
- package/mockup/examples/forms-advanced.html +0 -77
- package/mockup/examples/hover-card.html +0 -86
- package/mockup/examples/icons.html +0 -157
- package/mockup/examples/input-group.html +0 -74
- package/mockup/examples/js-foundation.html +0 -215
- package/mockup/examples/layout.html +0 -134
- package/mockup/examples/modal-select.html +0 -127
- package/mockup/examples/nested-menu.html +0 -73
- package/mockup/examples/notification-center.html +0 -86
- package/mockup/examples/offcanvas-popover.html +0 -133
- package/mockup/examples/pagination-breadcrumbs.html +0 -92
- package/mockup/examples/range.html +0 -69
- package/mockup/examples/rating.html +0 -103
- package/mockup/examples/segmented-control.html +0 -96
- package/mockup/examples/skeletons.html +0 -82
- package/mockup/examples/spinner-progress.html +0 -130
- package/mockup/examples/stepper.html +0 -119
- package/mockup/examples/tables-navbar.html +0 -89
- package/mockup/examples/tag.html +0 -105
- package/mockup/examples/theming.html +0 -68
- package/mockup/examples/tile.html +0 -107
- package/mockup/examples/timeline.html +0 -108
- package/mockup/examples/tree-view.html +0 -68
- package/mockup/feedback-actions.html +0 -9
- package/mockup/forms.html +0 -13
- package/mockup/foundations.html +0 -7
- package/mockup/kitchen-sink.html +0 -696
- package/mockup/navigation-disclosure.html +0 -11
- package/mockup/overlays-commands.html +0 -12
- package/mockup/templates/README.md +0 -20
- package/mockup/templates/admin.html +0 -334
- package/mockup/templates/auth.html +0 -234
- package/mockup/templates/dashboard.html +0 -442
- package/mockup/templates/landing.html +0 -397
- package/packages/fokus-icons/package.json +0 -46
- package/scripts/migrate-fokus-map.json +0 -1366
- package/scripts/migrate-fokus.mjs +0 -97
package/dist/css/fonts.css.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-fonts/scss/_fonts.scss","../../scss/entries/fonts-entry.scss"],"names":[],"mappings":"AAaA;EACE,gCAAA;EACA,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,8FAAA;EACA,yLAAA;ACZF;ADgBA;EACE,gCAAA;EACA,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,kGAAA;EACA,iNAAA;ACdF;ADkBA;EACE,8BAAA;EACA,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,0FAAA;EACA,yLAAA;AChBF;ADoBA;EACE,8BAAA;EACA,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,8FAAA;EACA,iNAAA;AClBF","file":"fonts.css","sourcesContent":["// Plus Jakarta Sans e Source Code Pro self-hosted (docs/definitions.md,\n// seção 18.2): arquivos em assets/fonts/, licença OFL (ver OFL.txt em cada\n// pasta), no lugar do @import do Google Fonts — cumpre a meta de \"dependência\n// externa zero em tempo de execução\" (seção 6) para as duas fontes. Um único\n// arquivo variável por família cobre toda a faixa de peso, como o próprio\n// Google Fonts serve para navegadores com suporte a fontes variáveis.\n\n// Distribuído à parte (dist/css/fonts.css) fora dos bundles principais: as\n// `url()` das fontes não podem ser resolvidas por bundlers sem loader de\n// woff2 (ex.: o webpack do bundlephobia), então mantê-las no `main`\n// (fokus.css) quebrava a análise do pacote. Quem quiser as fontes\n// self-hosted importa fonts.css explicitamente; sem ele, a pilha de\n// `font-family` cai no sans-serif/monospace do sistema.\n@font-face {\n font-family: \"Plus Jakarta Sans\";\n font-style: normal;\n font-weight: 400 700;\n font-display: swap;\n src: url(\"../../assets/fonts/plus-jakarta-sans/plus-jakarta-sans-latin.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,\n U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n@font-face {\n font-family: \"Plus Jakarta Sans\";\n font-style: normal;\n font-weight: 400 700;\n font-display: swap;\n src: url(\"../../assets/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext.woff2\") format(\"woff2\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,\n U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n@font-face {\n font-family: \"Source Code Pro\";\n font-style: normal;\n font-weight: 200 900;\n font-display: swap;\n src: url(\"../../assets/fonts/source-code-pro/source-code-pro-latin.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,\n U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n@font-face {\n font-family: \"Source Code Pro\";\n font-style: normal;\n font-weight: 200 900;\n font-display: swap;\n src: url(\"../../assets/fonts/source-code-pro/source-code-pro-latin-ext.woff2\") format(\"woff2\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,\n U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n","@font-face {\n font-family: \"Plus Jakarta Sans\";\n font-style: normal;\n font-weight: 400 700;\n font-display: swap;\n src: url(\"../../assets/fonts/plus-jakarta-sans/plus-jakarta-sans-latin.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: \"Plus Jakarta Sans\";\n font-style: normal;\n font-weight: 400 700;\n font-display: swap;\n src: url(\"../../assets/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext.woff2\") format(\"woff2\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: \"Source Code Pro\";\n font-style: normal;\n font-weight: 200 900;\n font-display: swap;\n src: url(\"../../assets/fonts/source-code-pro/source-code-pro-latin.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: \"Source Code Pro\";\n font-style: normal;\n font-weight: 200 900;\n font-display: swap;\n src: url(\"../../assets/fonts/source-code-pro/source-code-pro-latin-ext.woff2\") format(\"woff2\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-fonts/scss/_fonts.scss","../../scss/entries/fonts-entry.scss"],"names":[],"mappings":"AAaA,WACE,6BAAA,CACA,iBAAA,CACA,mBAAA,CACA,iBAAA,CACA,2FAAA,CACA,iKCZF,CDgBA,WACE,6BAAA,CACA,iBAAA,CACA,mBAAA,CACA,iBAAA,CACA,+FAAA,CACA,gMCdF,CDkBA,WACE,2BAAA,CACA,iBAAA,CACA,mBAAA,CACA,iBAAA,CACA,uFAAA,CACA,iKChBF,CDoBA,WACE,2BAAA,CACA,iBAAA,CACA,mBAAA,CACA,iBAAA,CACA,2FAAA,CACA,gMClBF","file":"fonts.min.css","sourcesContent":["// Plus Jakarta Sans e Source Code Pro self-hosted (docs/definitions.md,\n// seção 18.2): arquivos em assets/fonts/, licença OFL (ver OFL.txt em cada\n// pasta), no lugar do @import do Google Fonts — cumpre a meta de \"dependência\n// externa zero em tempo de execução\" (seção 6) para as duas fontes. Um único\n// arquivo variável por família cobre toda a faixa de peso, como o próprio\n// Google Fonts serve para navegadores com suporte a fontes variáveis.\n\n// Distribuído à parte (dist/css/fonts.css) fora dos bundles principais: as\n// `url()` das fontes não podem ser resolvidas por bundlers sem loader de\n// woff2 (ex.: o webpack do bundlephobia), então mantê-las no `main`\n// (fokus.css) quebrava a análise do pacote. Quem quiser as fontes\n// self-hosted importa fonts.css explicitamente; sem ele, a pilha de\n// `font-family` cai no sans-serif/monospace do sistema.\n@font-face {\n font-family: \"Plus Jakarta Sans\";\n font-style: normal;\n font-weight: 400 700;\n font-display: swap;\n src: url(\"../../assets/fonts/plus-jakarta-sans/plus-jakarta-sans-latin.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,\n U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n@font-face {\n font-family: \"Plus Jakarta Sans\";\n font-style: normal;\n font-weight: 400 700;\n font-display: swap;\n src: url(\"../../assets/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext.woff2\") format(\"woff2\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,\n U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n\n@font-face {\n font-family: \"Source Code Pro\";\n font-style: normal;\n font-weight: 200 900;\n font-display: swap;\n src: url(\"../../assets/fonts/source-code-pro/source-code-pro-latin.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,\n U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n@font-face {\n font-family: \"Source Code Pro\";\n font-style: normal;\n font-weight: 200 900;\n font-display: swap;\n src: url(\"../../assets/fonts/source-code-pro/source-code-pro-latin-ext.woff2\") format(\"woff2\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,\n U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n","@font-face {\n font-family: \"Plus Jakarta Sans\";\n font-style: normal;\n font-weight: 400 700;\n font-display: swap;\n src: url(\"../../assets/fonts/plus-jakarta-sans/plus-jakarta-sans-latin.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: \"Plus Jakarta Sans\";\n font-style: normal;\n font-weight: 400 700;\n font-display: swap;\n src: url(\"../../assets/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext.woff2\") format(\"woff2\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: \"Source Code Pro\";\n font-style: normal;\n font-weight: 200 900;\n font-display: swap;\n src: url(\"../../assets/fonts/source-code-pro/source-code-pro-latin.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: \"Source Code Pro\";\n font-style: normal;\n font-weight: 200 900;\n font-display: swap;\n src: url(\"../../assets/fonts/source-code-pro/source-code-pro-latin-ext.woff2\") format(\"woff2\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}"]}
|
package/dist/css/forms.css.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/tokens/_root.scss","../../scss/entries/forms-entry.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/tokens/_semantic.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/tokens/_charts.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/base/_reset.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/base/_typography.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/base/_motion.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/base/_accessibility.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-components/scss/forms/_forms.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/settings/_typography.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/tools/_mixins.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-components/scss/forms/_check-radio-switch.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-components/scss/forms/_range.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-components/scss/forms/_file-upload-advanced.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/themes/_brands.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/themes/_dark.scss"],"names":[],"mappings":"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","file":"forms.css","sourcesContent":["@use \"sass:map\";\n@use \"../settings\" as *;\n@use \"../tools\" as *;\n\n// Ordem canônica das camadas: declarada uma única vez aqui porque `tokens`\n// é sempre o primeiro `@use` de cada entry point (ver scss/entries/*.scss e\n// scss/fokus.scss) — evita repetir a declaração em cada bundle.\n@layer reset, tokens, base, layout, components, utilities, overrides;\n\n@layer tokens {\n // Bloco incondicional: fallback sRGB, aplicado em todo navegador. Os\n // valores de cor aqui vêm de `rgb-fallback()` (gamut-mapeado a partir do\n // primitivo OKLCH) — ver `tools/_mixins.scss`. É sempre sobrescrito pelo\n // bloco `@supports` abaixo em navegadores com suporte a `oklch()`; um\n // `--fs-*` de cor nunca deve ser lido só daqui em código novo.\n :root {\n --fs-color-white: #{$color-white};\n --fs-color-black: #{$color-black};\n --fs-color-text: #{rgb-fallback($color-gray-900)};\n --fs-color-muted: #{rgb-fallback($color-gray-600)};\n --fs-color-border: #{rgb-fallback($color-gray-300)};\n --fs-color-surface: #{$color-white};\n --fs-color-subtle: #{rgb-fallback($color-gray-100)};\n --fs-font-sans: #{$font-family-sans};\n --fs-font-mono: #{$font-family-mono};\n --fs-font-size-md: #{$font-size-md};\n --fs-font-size-h1: #{$font-size-h1};\n --fs-font-size-h2: #{$font-size-h2};\n --fs-font-size-h3: #{$font-size-h3};\n --fs-font-size-h4: #{$font-size-h4};\n --fs-font-size-h5: #{$font-size-h5};\n --fs-font-size-h6: #{$font-size-h6};\n --fs-font-weight-semibold: #{$font-weight-semibold};\n --fs-line-height-base: #{$line-height-base};\n --fs-line-height-heading: #{$line-height-heading};\n --fs-radius-sm: #{$radius-sm};\n --fs-radius-md: #{$radius-md};\n --fs-radius-lg: #{$radius-lg};\n --fs-gutter-x: #{map.get($spacers, 4)};\n --fs-gutter-y: 0px;\n\n @each $name, $space in $spacers {\n --fs-space-#{$name}: #{$space};\n }\n\n @each $name, $z-index in $z-indexes {\n --fs-z-#{$name}: #{$z-index};\n }\n\n --fs-control-height: 38px;\n --fs-control-height-sm: 30px;\n --fs-control-height-lg: 46px;\n --fs-control-padding-x: 12px;\n --fs-control-padding-x-sm: 8px;\n --fs-control-padding-x-lg: 16px;\n --fs-focus-width: 2px;\n --fs-focus-offset: 2px;\n --fs-focus-color: var(--fs-color-primary);\n --fs-focus-ring-size: 3px;\n --fs-focus-ring-color: color-mix(in srgb, var(--fs-focus-color) 22%, transparent);\n --fs-focus-ring-alpha: 22%;\n --fs-transition-fast: 150ms;\n --fs-transition-normal: 220ms;\n --fs-motion-duration-fast: var(--fs-transition-fast);\n --fs-motion-duration-normal: var(--fs-transition-normal);\n --fs-motion-ease-standard: var(--fs-ease-standard);\n --fs-ease-standard: cubic-bezier(0.2, 0, 0, 1);\n --fs-border-width: 1px;\n --fs-disabled-opacity: 0.5;\n --fs-safe-area-top: env(safe-area-inset-top, 0px);\n --fs-safe-area-right: env(safe-area-inset-right, 0px);\n --fs-safe-area-bottom: env(safe-area-inset-bottom, 0px);\n --fs-safe-area-left: env(safe-area-inset-left, 0px);\n --fs-component-control-height: var(--fs-control-height);\n --fs-component-overlay-backdrop: rgb(0 0 0 / 55%);\n --fs-component-panel-radius: var(--fs-radius-md);\n --fs-component-panel-shadow: var(--fs-shadow-lg);\n --fs-contrast-border-width: var(--fs-border-width);\n --fs-contrast-focus-width: var(--fs-focus-width);\n\n // Referência dos limiares usados pelos utilitários `@container` (ver\n // `packages/fokus-utilities/scss/utilities/_container-queries.scss`).\n // Só informativas: a condição de um `@container` precisa de um valor\n // literal em tempo de build, não aceita `var()` — mudar aqui não\n // recalibra as regras já compiladas, só documenta os valores usados.\n @each $name, $width in $container-breakpoints {\n --fs-cq-#{$name}: #{$width};\n }\n\n --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 15%), 0 1px 2px rgb(0 0 0 / 10%);\n --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 15%), 0 3px 6px rgb(0 0 0 / 10%);\n --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 18%), 0 6px 12px rgb(0 0 0 / 12%);\n --fs-tooltip-bg: #{rgb-fallback($color-gray-900)};\n --fs-tooltip-text: #{$color-white};\n\n @each $name, $color in $theme-colors {\n --fs-color-#{$name}: #{rgb-fallback($color)};\n --fs-color-on-#{$name}: #{color-contrast($color)};\n --fs-alert-#{$name}-bg: #{rgb-fallback(tint-color($color))};\n --fs-alert-#{$name}-text: #{rgb-fallback(shade-color($color))};\n }\n\n @each $name, $bg in $theme-bg-colors {\n --fs-feedback-#{$name}-bg: #{rgb-fallback($bg)};\n }\n }\n\n // Bloco condicional: valores nativos em OKLCH. `@supports (color: oklch(0%\n // 0 0))` só passa em navegadores que entendem a função — os demais ignoram\n // o bloco inteiro e mantêm o fallback sRGB acima. Só propriedades de cor\n // entram aqui; o resto (fontes, raio, sombra, gutter) não tem equivalente\n // \"melhor\" em OKLCH e já está definido de forma incondicional.\n @supports (color: oklch(0% 0 0)) {\n :root {\n --fs-color-text: #{$color-gray-900};\n --fs-color-muted: #{$color-gray-600};\n --fs-color-border: #{$color-gray-300};\n --fs-color-subtle: #{$color-gray-100};\n --fs-tooltip-bg: #{$color-gray-900};\n\n @each $name, $color in $theme-colors {\n --fs-color-#{$name}: #{$color};\n --fs-color-on-#{$name}: #{color-contrast($color)};\n --fs-alert-#{$name}-bg: #{tint-color($color)};\n --fs-alert-#{$name}-text: #{shade-color($color)};\n }\n\n @each $name, $bg in $theme-bg-colors {\n --fs-feedback-#{$name}-bg: #{$bg};\n }\n }\n }\n\n @media (prefers-contrast: more) {\n :root {\n --fs-contrast-border-width: 2px;\n --fs-contrast-focus-width: 3px;\n --fs-focus-width: var(--fs-contrast-focus-width);\n --fs-border-width: var(--fs-contrast-border-width);\n }\n }\n}\n","@layer reset, tokens, base, layout, components, utilities, overrides;\n@layer tokens {\n :root {\n --fs-color-white: #ffffff;\n --fs-color-black: #000000;\n --fs-color-text: #1e293b;\n --fs-color-muted: #64748b;\n --fs-color-border: #e2e8f0;\n --fs-color-surface: #ffffff;\n --fs-color-subtle: #f8fafc;\n --fs-font-sans: Plus Jakarta Sans, sans-serif;\n --fs-font-mono: Source Code Pro, monospace;\n --fs-font-size-md: 0.8125rem;\n --fs-font-size-h1: 1.75rem;\n --fs-font-size-h2: 1.5rem;\n --fs-font-size-h3: 1.3125rem;\n --fs-font-size-h4: 1.125rem;\n --fs-font-size-h5: 1rem;\n --fs-font-size-h6: 0.875rem;\n --fs-font-weight-semibold: 600;\n --fs-line-height-base: 1.5;\n --fs-line-height-heading: 1.25;\n --fs-radius-sm: 4px;\n --fs-radius-md: 6px;\n --fs-radius-lg: 8px;\n --fs-gutter-x: 1.5rem;\n --fs-gutter-y: 0px;\n --fs-space-0: 0;\n --fs-space-1: 0.25rem;\n --fs-space-2: 0.5rem;\n --fs-space-3: 1rem;\n --fs-space-4: 1.5rem;\n --fs-space-5: 3rem;\n --fs-z-base: 0;\n --fs-z-dropdown: 1000;\n --fs-z-sticky: 1020;\n --fs-z-modal: 1050;\n --fs-z-offcanvas: 1060;\n --fs-z-notification: 1080;\n --fs-z-toast: 1090;\n --fs-z-tooltip: 1100;\n --fs-control-height: 38px;\n --fs-control-height-sm: 30px;\n --fs-control-height-lg: 46px;\n --fs-control-padding-x: 12px;\n --fs-control-padding-x-sm: 8px;\n --fs-control-padding-x-lg: 16px;\n --fs-focus-width: 2px;\n --fs-focus-offset: 2px;\n --fs-focus-color: var(--fs-color-primary);\n --fs-focus-ring-size: 3px;\n --fs-focus-ring-color: color-mix(in srgb, var(--fs-focus-color) 22%, transparent);\n --fs-focus-ring-alpha: 22%;\n --fs-transition-fast: 150ms;\n --fs-transition-normal: 220ms;\n --fs-motion-duration-fast: var(--fs-transition-fast);\n --fs-motion-duration-normal: var(--fs-transition-normal);\n --fs-motion-ease-standard: var(--fs-ease-standard);\n --fs-ease-standard: cubic-bezier(0.2, 0, 0, 1);\n --fs-border-width: 1px;\n --fs-disabled-opacity: 0.5;\n --fs-safe-area-top: env(safe-area-inset-top, 0px);\n --fs-safe-area-right: env(safe-area-inset-right, 0px);\n --fs-safe-area-bottom: env(safe-area-inset-bottom, 0px);\n --fs-safe-area-left: env(safe-area-inset-left, 0px);\n --fs-component-control-height: var(--fs-control-height);\n --fs-component-overlay-backdrop: rgb(0 0 0 / 55%);\n --fs-component-panel-radius: var(--fs-radius-md);\n --fs-component-panel-shadow: var(--fs-shadow-lg);\n --fs-contrast-border-width: var(--fs-border-width);\n --fs-contrast-focus-width: var(--fs-focus-width);\n --fs-cq-sm: 320px;\n --fs-cq-md: 480px;\n --fs-cq-lg: 640px;\n --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 15%), 0 1px 2px rgb(0 0 0 / 10%);\n --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 15%), 0 3px 6px rgb(0 0 0 / 10%);\n --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 18%), 0 6px 12px rgb(0 0 0 / 12%);\n --fs-tooltip-bg: #1e293b;\n --fs-tooltip-text: #ffffff;\n --fs-color-primary: #1a61e6;\n --fs-color-on-primary: #ffffff;\n --fs-alert-primary-bg: rgb(220.3846532222, 232.689549371, 254.1042117072);\n --fs-alert-primary-text: rgb(4.2540793692, 32.6552622518, 88.5748738661);\n --fs-color-secondary: #64748b;\n --fs-color-on-secondary: #ffffff;\n --fs-alert-secondary-bg: rgb(230.2895610064, 233.0325853352, 236.9919508609);\n --fs-alert-secondary-text: rgb(33.9166068747, 40.6437781967, 50.3140869721);\n --fs-color-success: rgb(13, 209, 87);\n --fs-color-on-success: #000000;\n --fs-alert-success-bg: rgb(228.9046733915, 249.1514320752, 230.8709345684);\n --fs-alert-success-text: rgb(1.6574790861, 79.745461506, 28.4507801755);\n --fs-color-warning: #fab633;\n --fs-color-on-warning: #000000;\n --fs-alert-warning-bg: rgb(254.9170612621, 244.6528756631, 228.9710928247);\n --fs-alert-warning-text: rgb(96.9838380187, 68.3933599001, 13.3146447009);\n --fs-color-danger: #cc3335;\n --fs-color-on-danger: #ffffff;\n --fs-alert-danger-bg: rgb(251.9225977632, 226.389403069, 223.5618211362);\n --fs-alert-danger-text: rgb(77.6432204678, 13.3146447009, 14.1555411162);\n --fs-color-info: #5e5cc7;\n --fs-color-on-info: #ffffff;\n --fs-alert-info-bg: rgb(228.2395257626, 230.4806192824, 248.3934544766);\n --fs-alert-info-text: rgb(31.3939176289, 30.5530212136, 75.5409794297);\n --fs-feedback-primary-bg: #e6f0ff;\n --fs-feedback-secondary-bg: #f8fafc;\n --fs-feedback-success-bg: #e6fff2;\n --fs-feedback-warning-bg: #fff9e6;\n --fs-feedback-danger-bg: #fff2f3;\n --fs-feedback-info-bg: #f2f2ff;\n }\n @supports (color: oklch(0% 0 0deg)) {\n :root {\n --fs-color-text: oklch(27.9495237712% 0.0368481257 260.0309873929deg);\n --fs-color-muted: oklch(55.4391007662% 0.040717043 257.4166191214deg);\n --fs-color-border: oklch(92.876126719% 0.0126187744 255.5078854448deg);\n --fs-color-subtle: oklch(98.4151869501% 0.0034126992 247.8577745944deg);\n --fs-tooltip-bg: oklch(27.9495237712% 0.0368481257 260.0309873929deg);\n --fs-color-primary: oklch(53.5630074284% 0.2132145174 261.6264320248deg);\n --fs-color-on-primary: #ffffff;\n --fs-alert-primary-bg: oklch(93.0344511143% 0.0319821776 261.6264320248deg);\n --fs-alert-primary-text: oklch(26.7815037142% 0.1066072587 261.6264320248deg);\n --fs-color-secondary: oklch(55.4391007662% 0.040717043 257.4166191214deg);\n --fs-color-on-secondary: #ffffff;\n --fs-alert-secondary-bg: oklch(93.3158651149% 0.0061075564 257.4166191214deg);\n --fs-alert-secondary-text: oklch(27.7195503831% 0.0203585215 257.4166191214deg);\n --fs-color-success: oklch(75.151587899% 0.2146126169 148.125846236deg);\n --fs-color-on-success: #000000;\n --fs-alert-success-bg: oklch(96.2727381849% 0.0321918925 148.125846236deg);\n --fs-alert-success-text: oklch(37.5757939495% 0.1073063085 148.125846236deg);\n --fs-color-warning: oklch(81.9510815663% 0.1562613975 78.6575213966deg);\n --fs-color-on-warning: #000000;\n --fs-alert-warning-bg: oklch(97.2926622349% 0.0234392096 78.6575213966deg);\n --fs-alert-warning-text: oklch(40.9755407832% 0.0781306987 78.6575213966deg);\n --fs-color-danger: oklch(55.9653139301% 0.1897270855 25.2407937498deg);\n --fs-color-on-danger: #ffffff;\n --fs-alert-danger-bg: oklch(93.3947970895% 0.0284590628 25.2407937498deg);\n --fs-alert-danger-text: oklch(27.982656965% 0.0948635427 25.2407937498deg);\n --fs-color-info: oklch(53.3359780029% 0.1620131129 280.2231949375deg);\n --fs-color-on-info: #ffffff;\n --fs-alert-info-bg: oklch(93.0003967004% 0.0243019669 280.2231949375deg);\n --fs-alert-info-text: oklch(26.6679890014% 0.0810065564 280.2231949375deg);\n --fs-feedback-primary-bg: oklch(95.2067827456% 0.0228899025 258.359342143deg);\n --fs-feedback-secondary-bg: oklch(98.4151869501% 0.0034126992 247.8577745944deg);\n --fs-feedback-success-bg: oklch(97.8305614459% 0.0311593614 163.2740567608deg);\n --fs-feedback-warning-bg: oklch(98.17094418% 0.025708244 92.3886876566deg);\n --fs-feedback-danger-bg: oklch(97.1603097552% 0.0140720277 12.0135639679deg);\n --fs-feedback-info-bg: oklch(96.4918490239% 0.0173174767 286.0707018324deg);\n }\n }\n @media (prefers-contrast: more) {\n :root {\n --fs-contrast-border-width: 2px;\n --fs-contrast-focus-width: 3px;\n --fs-focus-width: var(--fs-contrast-focus-width);\n --fs-border-width: var(--fs-contrast-border-width);\n }\n }\n}\n@layer tokens {\n :root {\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n }\n}\n@layer tokens {\n :root {\n --fs-chart-series-1: var(--fs-color-primary);\n --fs-chart-series-2: var(--fs-color-success);\n --fs-chart-series-3: var(--fs-color-warning);\n --fs-chart-series-4: var(--fs-color-danger);\n --fs-chart-series-5: var(--fs-color-info);\n --fs-chart-series-6: var(--fs-color-secondary);\n --fs-chart-grid: var(--fs-color-border);\n --fs-chart-axis: var(--fs-color-muted);\n --fs-chart-tooltip-bg: var(--fs-tooltip-bg);\n --fs-chart-tooltip-text: var(--fs-tooltip-text);\n }\n}\n@layer reset {\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n html {\n line-height: var(--fs-line-height-base);\n text-size-adjust: 100%;\n }\n body {\n margin: 0;\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n }\n [hidden] {\n display: none !important;\n }\n}\n@layer base {\n body,\n button,\n input,\n select,\n textarea {\n font-family: var(--fs-font-sans);\n font-size: var(--fs-font-size-md);\n }\n code,\n kbd,\n pre,\n samp {\n font-family: var(--fs-font-mono);\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n font-weight: var(--fs-font-weight-semibold);\n line-height: var(--fs-line-height-heading);\n }\n h1 {\n font-size: var(--fs-font-size-h1);\n }\n h2 {\n font-size: var(--fs-font-size-h2);\n }\n h3 {\n font-size: var(--fs-font-size-h3);\n }\n h4 {\n font-size: var(--fs-font-size-h4);\n }\n h5 {\n font-size: var(--fs-font-size-h5);\n }\n h6 {\n font-size: var(--fs-font-size-h6);\n }\n}\n@layer base {\n @media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n scroll-behavior: auto !important;\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n }\n .fs-spinner,\n .fs-progress-bar-animated,\n .fs-progress-indeterminate .fs-progress-bar {\n animation-duration: 1.5s !important;\n animation-iteration-count: infinite !important;\n }\n }\n}\n/* stylelint-disable property-no-deprecated, selector-not-notation */\n@layer reset {\n :focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-focus-color);\n outline-offset: var(--fs-focus-offset);\n }\n @media (forced-colors: active) {\n :focus-visible {\n outline: 2px solid CanvasText;\n outline-offset: 2px;\n }\n button,\n [role=button],\n input,\n select,\n textarea,\n .fs-btn {\n border-color: ButtonText;\n forced-color-adjust: auto;\n }\n .fs-u-focus-ring:focus-visible {\n outline: 3px solid Highlight;\n }\n }\n}\n@layer utilities {\n .fs-u-visually-hidden:not(:focus):not(:focus-within),\n .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip-path: inset(50%) !important;\n white-space: nowrap !important;\n border: 0 !important;\n }\n .fs-skip-link {\n position: fixed;\n z-index: 1000;\n inset-block-start: var(--fs-space-2);\n inset-inline-start: var(--fs-space-2);\n transform: translateY(-200%);\n padding: var(--fs-space-2) var(--fs-space-3);\n color: var(--fs-color-on-primary);\n background: var(--fs-color-primary);\n border-radius: var(--fs-radius-sm);\n }\n .fs-skip-link:focus {\n transform: translateY(0);\n }\n}\n@layer components {\n .fs-form-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: flex-start;\n gap: 12px 16px;\n width: 100%;\n }\n .fs-form-col {\n display: flex;\n flex: 1 1 240px;\n flex-direction: column;\n align-items: stretch;\n min-width: 0;\n gap: 4px;\n }\n .fs-form-label {\n width: auto;\n margin: 0;\n color: var(--fs-color-muted);\n font-size: 0.75rem;\n font-weight: 400;\n }\n .fs-form-text {\n width: auto;\n margin: 0;\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n font-weight: 400;\n }\n .fs-form-text,\n .fs-valid-feedback,\n .fs-invalid-feedback {\n min-height: 1.25rem;\n padding: 3px 8px;\n border-radius: var(--fs-radius-sm);\n }\n .fs-form-text {\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n font-weight: 400;\n }\n .fs-valid-feedback,\n .fs-invalid-feedback {\n display: none;\n font-size: 0.6875rem;\n font-weight: 400;\n }\n .fs-valid-feedback {\n color: var(--fs-alert-success-text);\n background-color: var(--fs-feedback-success-bg);\n }\n .fs-invalid-feedback {\n color: var(--fs-alert-danger-text);\n background-color: var(--fs-feedback-danger-bg);\n }\n .is-valid ~ .fs-valid-feedback,\n .is-invalid ~ .fs-invalid-feedback {\n display: block;\n }\n .fs-form-control {\n width: 100%;\n min-width: 0;\n height: var(--fs-control-height);\n padding: 0 7px;\n border: var(--fs-border-width) solid var(--fs-color-border-default);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n font-size: 0.8125rem;\n font-weight: 500;\n }\n .fs-form-control::placeholder {\n color: var(--fs-color-muted);\n }\n .fs-form-control:focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-color-primary);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);\n }\n .fs-form-control:disabled {\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n opacity: var(--fs-disabled-opacity);\n pointer-events: none;\n }\n .fs-form-control:read-only {\n background-color: var(--fs-color-subtle);\n cursor: default;\n }\n .fs-floating-label {\n position: relative;\n }\n .fs-floating-label > .fs-form-control {\n height: 56px;\n padding-top: 20px;\n }\n .fs-floating-label > .fs-form-label {\n position: absolute;\n z-index: 1;\n top: 8px;\n left: 8px;\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n pointer-events: none;\n }\n .fs-form-control[aria-invalid=true],\n .fs-was-validated .fs-form-control:invalid {\n border-color: var(--fs-color-danger);\n }\n .fs-form-control[aria-invalid=false],\n .fs-was-validated .fs-form-control:valid {\n border-color: var(--fs-color-success);\n }\n .fs-form-control-sm {\n height: var(--fs-control-height-sm);\n font-size: 0.6875rem;\n }\n .fs-form-control-lg {\n height: var(--fs-control-height-lg);\n font-size: 0.8125rem;\n }\n .fs-form-size-sm {\n width: 120px;\n }\n .fs-form-size-md {\n width: 180px;\n }\n .fs-form-size-lg {\n width: 240px;\n }\n .fs-form-size-xl {\n width: 300px;\n }\n .fs-form-size-xxl {\n width: 360px;\n }\n .fs-form-control.is-valid {\n border-color: var(--fs-color-success);\n }\n .fs-form-control.is-valid:focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-color-success);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-success) 22%, transparent);\n }\n .fs-form-control.is-invalid {\n border-color: var(--fs-color-danger);\n }\n .fs-form-control.is-invalid:focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-color-danger);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-danger);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-danger) 22%, transparent);\n }\n .fs-form-select {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: var(--fs-control-height);\n padding: 0 7px;\n border: var(--fs-border-width) solid var(--fs-color-border-default);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n font-size: 0.8125rem;\n font-weight: 500;\n text-align: left;\n cursor: pointer;\n }\n .fs-form-select::after {\n flex-shrink: 0;\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 8px;\n content: \"\";\n border-top: 5px solid;\n border-right: 5px solid transparent;\n border-left: 5px solid transparent;\n }\n .fs-form-select:focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-color-primary);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);\n }\n .fs-form-select:disabled {\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n opacity: 0.4;\n pointer-events: none;\n }\n .fs-form-select-sm {\n height: var(--fs-control-height-sm);\n font-size: 0.6875rem;\n }\n .fs-form-select-lg {\n height: var(--fs-control-height-lg);\n font-size: 0.8125rem;\n }\n .fs-file-upload {\n position: relative;\n display: inline-flex;\n }\n .fs-file-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n .fs-file-label {\n display: inline-flex;\n align-items: center;\n height: 38px;\n padding: 0 14px;\n border: 1px solid var(--fs-color-border);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-subtle);\n font-size: 0.8125rem;\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n transition: filter var(--fs-transition-fast) var(--fs-ease-standard);\n }\n .fs-file-label:hover {\n filter: brightness(0.96);\n }\n .fs-file-input:focus-visible + .fs-file-label {\n outline: var(--fs-focus-width) solid var(--fs-color-primary);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);\n }\n .fs-file-input:disabled + .fs-file-label {\n color: var(--fs-color-muted);\n opacity: var(--fs-disabled-opacity);\n pointer-events: none;\n cursor: default;\n }\n .fs-file-label-sm {\n height: 30px;\n padding: 0 10px;\n font-size: 0.6875rem;\n }\n .fs-file-label-lg {\n height: 46px;\n padding: 0 18px;\n font-size: 1rem;\n }\n .fs-file-label.is-dragover {\n border-color: var(--fs-color-primary);\n background-color: var(--fs-color-subtle);\n }\n .fs-file-label-dropzone {\n flex-direction: column;\n gap: 4px;\n width: 100%;\n height: auto;\n padding: 32px 16px;\n border-style: dashed;\n border-width: 2px;\n font-weight: 400;\n text-align: center;\n }\n .fs-file-label-dropzone .fs-file-dropzone-hint {\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n font-weight: 400;\n }\n .fs-input-group {\n display: flex;\n align-items: stretch;\n width: 100%;\n }\n .fs-input-group > .fs-form-control,\n .fs-input-group > .fs-form-select {\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n }\n .fs-input-group-text {\n display: flex;\n align-items: center;\n padding: 0 12px;\n border: 1px solid var(--fs-color-border);\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n font-size: 0.8125rem;\n font-weight: 500;\n white-space: nowrap;\n }\n .fs-input-group > :not(:first-child) {\n margin-left: -1px;\n }\n .fs-input-group > :focus-visible,\n .fs-input-group > :focus-within {\n position: relative;\n z-index: 1;\n }\n .fs-input-group > * {\n border-radius: 0;\n }\n .fs-input-group > :first-child {\n border-top-left-radius: var(--fs-radius-sm);\n border-bottom-left-radius: var(--fs-radius-sm);\n }\n .fs-input-group > :last-child {\n border-top-right-radius: var(--fs-radius-sm);\n border-bottom-right-radius: var(--fs-radius-sm);\n }\n .fs-input-group-sm > .fs-form-control,\n .fs-input-group-sm > .fs-form-select,\n .fs-input-group-sm > .fs-input-group-text {\n height: 30px;\n padding: 0 8px;\n font-size: 0.6875rem;\n }\n .fs-input-group-lg > .fs-form-control,\n .fs-input-group-lg > .fs-form-select,\n .fs-input-group-lg > .fs-input-group-text {\n height: 46px;\n padding: 0 16px;\n font-size: 1rem;\n }\n}\n@layer components {\n .fs-check,\n .fs-radio,\n .fs-switch {\n display: inline-flex;\n align-items: center;\n }\n .fs-check {\n --fs-check-mark: var(--fs-color-on-primary);\n }\n .fs-check-input,\n .fs-radio-input,\n .fs-switch-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n .fs-check-label,\n .fs-radio-label,\n .fs-switch-label {\n position: relative;\n display: inline-flex;\n align-items: center;\n min-height: 20px;\n padding-left: 28px;\n color: var(--fs-color-text);\n font-size: 0.8125rem;\n cursor: pointer;\n user-select: none;\n }\n .fs-check-label::before,\n .fs-radio-label::before,\n .fs-switch-label::before {\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: 1px solid var(--fs-color-border);\n background-color: var(--fs-color-surface);\n content: \"\";\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n }\n .fs-check-label::before,\n .fs-radio-label::before {\n width: 18px;\n height: 18px;\n }\n .fs-check-label::before {\n border: 2px solid var(--fs-color-primary);\n border-radius: 0;\n }\n .fs-radio-label::before {\n border-radius: 50%;\n }\n .fs-check-label::after {\n position: absolute;\n left: 4px;\n width: 9px;\n height: 5px;\n content: \"\";\n opacity: 0;\n border-bottom: 2px solid var(--fs-check-mark);\n border-left: 2px solid var(--fs-check-mark);\n transform: translateY(-1px) rotate(-45deg);\n transition: opacity 0.1s ease-in-out;\n }\n .fs-radio-label::after {\n position: absolute;\n left: 5px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n content: \"\";\n opacity: 0;\n background-color: var(--fs-color-on-primary);\n transition: opacity 0.1s ease-in-out;\n }\n .fs-check-input:checked + .fs-check-label::before,\n .fs-radio-input:checked + .fs-radio-label::before {\n background-color: var(--fs-color-primary);\n border-color: var(--fs-color-primary);\n }\n .fs-check-input:checked + .fs-check-label::after,\n .fs-radio-input:checked + .fs-radio-label::after {\n opacity: 1;\n }\n .fs-check-input:not(:checked, :indeterminate, :disabled, .is-invalid) + .fs-check-label:hover::before {\n background-color: color-mix(in srgb, var(--fs-color-primary) 10%, transparent);\n }\n .fs-check-input:not(:disabled, :indeterminate, .is-invalid) + .fs-check-label:active::before {\n background-color: color-mix(in srgb, var(--fs-color-primary) 86%, var(--fs-color-black));\n border-color: var(--fs-color-primary);\n }\n .fs-check-input:checked:not(:disabled, .is-invalid) + .fs-check-label:active::after {\n transform: translateY(-1px) rotate(-45deg) scale(0.9);\n }\n .fs-switch-label {\n padding-left: 44px;\n }\n .fs-switch-label::before {\n width: 36px;\n height: 20px;\n border-radius: var(--fs-radius-md);\n }\n .fs-switch-label::after {\n position: absolute;\n left: 2px;\n width: 16px;\n height: 14px;\n border-radius: var(--fs-radius-sm);\n content: \"\";\n background-color: var(--fs-color-border);\n transition: left 0.15s ease-in-out, background-color 0.15s ease-in-out;\n }\n .fs-switch-input:checked + .fs-switch-label::before {\n background-color: var(--fs-color-primary);\n border-color: var(--fs-color-primary);\n }\n .fs-switch-input:checked + .fs-switch-label::after {\n left: 18px;\n background-color: var(--fs-color-on-primary);\n }\n .fs-check-input:focus-visible + .fs-check-label::before,\n .fs-radio-input:focus-visible + .fs-radio-label::before,\n .fs-switch-input:focus-visible + .fs-switch-label::before {\n outline: var(--fs-focus-width) solid var(--fs-color-primary);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);\n }\n .fs-radio-input:disabled + .fs-radio-label,\n .fs-switch-input:disabled + .fs-switch-label {\n opacity: 0.5;\n pointer-events: none;\n }\n .fs-check-input:disabled + .fs-check-label {\n color: var(--fs-color-muted);\n opacity: 1;\n pointer-events: none;\n }\n .fs-check-input:disabled:not(:checked, :indeterminate) + .fs-check-label::before {\n border-color: var(--fs-color-border);\n background-color: var(--fs-color-subtle);\n }\n .fs-check-input:disabled:checked + .fs-check-label::before {\n border-color: color-mix(in srgb, var(--fs-color-primary) 55%, var(--fs-color-border));\n background-color: color-mix(in srgb, var(--fs-color-primary) 45%, var(--fs-color-subtle));\n }\n .fs-check-input:disabled:checked + .fs-check-label::after {\n opacity: 0.72;\n }\n .fs-radio-input.is-valid + .fs-radio-label::before {\n border-color: var(--fs-color-success);\n }\n .fs-check-input.is-invalid + .fs-check-label::before,\n .fs-radio-input.is-invalid + .fs-radio-label::before {\n border-color: var(--fs-color-danger);\n }\n .fs-check-sm .fs-check-label,\n .fs-radio-sm .fs-radio-label {\n min-height: 16px;\n padding-left: 24px;\n font-size: 0.75rem;\n }\n .fs-check-sm .fs-check-label::before,\n .fs-radio-sm .fs-radio-label::before {\n width: 15px;\n height: 15px;\n }\n .fs-check-sm .fs-check-label::after {\n left: 3px;\n width: 8px;\n height: 4px;\n }\n .fs-radio-sm .fs-radio-label::after {\n left: 4px;\n width: 7px;\n height: 7px;\n }\n .fs-check-lg .fs-check-label,\n .fs-radio-lg .fs-radio-label {\n min-height: 24px;\n padding-left: 34px;\n font-size: 1rem;\n }\n .fs-check-lg .fs-check-label::before,\n .fs-radio-lg .fs-radio-label::before {\n width: 22px;\n height: 22px;\n }\n .fs-check-lg .fs-check-label::after {\n left: 5px;\n width: 11px;\n height: 6px;\n }\n .fs-radio-lg .fs-radio-label::after {\n left: 6px;\n width: 10px;\n height: 10px;\n }\n .fs-switch-sm .fs-switch-label {\n min-height: 16px;\n padding-left: 38px;\n font-size: 0.75rem;\n }\n .fs-switch-sm .fs-switch-label::before {\n width: 30px;\n height: 16px;\n }\n .fs-switch-sm .fs-switch-label::after {\n width: 12px;\n height: 10px;\n }\n .fs-switch-sm .fs-switch-input:checked + .fs-switch-label::after {\n left: 16px;\n }\n .fs-switch-lg .fs-switch-label {\n min-height: 26px;\n padding-left: 52px;\n font-size: 1rem;\n }\n .fs-switch-lg .fs-switch-label::before {\n width: 44px;\n height: 24px;\n }\n .fs-switch-lg .fs-switch-label::after {\n width: 20px;\n height: 18px;\n }\n .fs-switch-lg .fs-switch-input:checked + .fs-switch-label::after {\n left: 22px;\n }\n .fs-check-input:indeterminate + .fs-check-label::before {\n border: 2px dashed var(--fs-color-primary);\n background-color: var(--fs-color-surface);\n }\n .fs-check-input:indeterminate + .fs-check-label::after {\n left: 4px;\n width: 10px;\n height: 0;\n opacity: 1;\n border-bottom: 2px solid var(--fs-color-primary);\n border-left: 0;\n transform: translateY(3px) rotate(0deg);\n }\n .fs-check-sm .fs-check-input:indeterminate + .fs-check-label::after {\n left: 3px;\n width: 8px;\n }\n .fs-check-lg .fs-check-input:indeterminate + .fs-check-label::after {\n left: 5px;\n width: 12px;\n }\n .fs-check-input.is-invalid + .fs-check-label::before {\n background-color: var(--fs-color-danger);\n }\n .fs-check-input.is-invalid + .fs-check-label::after {\n top: 6px;\n left: 5px;\n width: 8px;\n height: 8px;\n opacity: 1;\n border: 0;\n background-image: linear-gradient(45deg, transparent 42%, #ffffff 42% 58%, transparent 58%), linear-gradient(-45deg, transparent 42%, #ffffff 42% 58%, transparent 58%);\n transform: none;\n }\n .fs-check-sm .fs-check-input.is-invalid + .fs-check-label::after {\n top: 5px;\n left: 4px;\n width: 7px;\n height: 7px;\n }\n .fs-check-lg .fs-check-input.is-invalid + .fs-check-label::after {\n top: 6px;\n left: 6px;\n width: 10px;\n height: 10px;\n }\n}\n@layer components {\n .fs-form-range {\n --fs-range-track-height: 6px;\n --fs-range-track-color: var(--fs-color-border);\n --fs-range-fill-color: var(--fs-color-primary);\n --fs-range-thumb-size: 18px;\n --fs-range-thumb-color: var(--fs-color-surface);\n --fs-range-thumb-border-color: var(--fs-color-primary);\n --fs-range-percent: 0%;\n width: 100%;\n height: var(--fs-range-thumb-size);\n padding: 0;\n background: transparent;\n appearance: none;\n cursor: pointer;\n }\n .fs-form-range::-webkit-slider-runnable-track {\n height: var(--fs-range-track-height);\n border-radius: var(--fs-radius-sm);\n background: linear-gradient(to right, var(--fs-range-fill-color) var(--fs-range-percent), var(--fs-range-track-color) var(--fs-range-percent));\n }\n .fs-form-range::-moz-range-track {\n height: var(--fs-range-track-height);\n border-radius: var(--fs-radius-sm);\n background: linear-gradient(to right, var(--fs-range-fill-color) var(--fs-range-percent), var(--fs-range-track-color) var(--fs-range-percent));\n }\n .fs-form-range::-webkit-slider-thumb {\n width: var(--fs-range-thumb-size);\n height: var(--fs-range-thumb-size);\n margin-top: calc((var(--fs-range-track-height) - var(--fs-range-thumb-size)) / 2);\n border: 2px solid var(--fs-range-thumb-border-color);\n border-radius: 50%;\n background-color: var(--fs-range-thumb-color);\n appearance: none;\n cursor: pointer;\n }\n .fs-form-range::-moz-range-thumb {\n width: calc(var(--fs-range-thumb-size) - 4px);\n height: calc(var(--fs-range-thumb-size) - 4px);\n border: 2px solid var(--fs-range-thumb-border-color);\n border-radius: 50%;\n background-color: var(--fs-range-thumb-color);\n cursor: pointer;\n }\n .fs-form-range:focus-visible::-webkit-slider-thumb {\n outline: var(--fs-focus-width) solid var(--fs-range-thumb-border-color);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-range-thumb-border-color);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-range-thumb-border-color) 22%, transparent);\n }\n .fs-form-range:focus-visible::-moz-range-thumb {\n outline: var(--fs-focus-width) solid var(--fs-range-thumb-border-color);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-range-thumb-border-color);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-range-thumb-border-color) 22%, transparent);\n }\n .fs-form-range:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n .fs-form-range:disabled::-webkit-slider-thumb {\n cursor: not-allowed;\n }\n .fs-form-range:disabled::-moz-range-thumb {\n cursor: not-allowed;\n }\n .fs-range-output {\n display: inline-block;\n min-width: 2.5em;\n color: var(--fs-color-text);\n font-size: 0.75rem;\n font-weight: 500;\n text-align: center;\n }\n}\n@layer components {\n .fs-file-upload-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n margin-top: 12px;\n padding: 0;\n list-style: none;\n }\n .fs-file-upload-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 12px;\n border: 1px solid var(--fs-color-border);\n border-radius: var(--fs-radius-sm);\n background-color: var(--fs-color-surface);\n }\n .fs-file-upload-thumb {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: var(--fs-radius-sm);\n background-color: var(--fs-color-subtle);\n color: var(--fs-color-muted);\n }\n .fs-file-upload-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n .fs-file-upload-info {\n flex: 1;\n min-width: 0;\n }\n .fs-file-upload-name {\n margin: 0;\n color: var(--fs-color-text);\n font-size: 0.75rem;\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .fs-file-upload-size {\n margin: 0 0 4px;\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n }\n .fs-file-upload-item.is-error .fs-file-upload-size {\n color: var(--fs-alert-danger-text);\n }\n .fs-file-upload-remove {\n flex-shrink: 0;\n }\n}\n@layer tokens {\n [data-fs-brand=violet] {\n --fs-color-primary: #6d28d9;\n --fs-alert-primary-bg: rgb(229.8834406263, 225.8717327657, 252.5458384302);\n --fs-alert-primary-text: rgb(37.7006407433, 8.7385189481, 83.109047167);\n --fs-feedback-primary-bg: rgb(229.8834406263, 225.8717327657, 252.5458384302);\n }\n [data-fs-brand=violet][data-theme=dark],\n [data-theme=dark] [data-fs-brand=violet] {\n --fs-color-primary: rgb(114.6495158739, 57.1165361442, 219.9746158745);\n --fs-alert-primary-bg: rgb(31.4819726714, 47.0564006856, 82.6607876597);\n --fs-alert-primary-text: rgb(167.4962913963, 147.746130571, 240.0249534535);\n --fs-feedback-primary-bg: rgb(31.4819726714, 47.0564006856, 82.6607876597);\n }\n @supports (color: oklch(0% 0 0deg)) {\n [data-fs-brand=violet] {\n --fs-color-primary: oklch(49.0666497236% 0.2412317343 292.5809393311deg);\n --fs-alert-primary-bg: oklch(92.3599974585% 0.0361847601 292.5809393311deg);\n --fs-alert-primary-text: oklch(24.5333248618% 0.1206158672 292.5809393311deg);\n --fs-feedback-primary-bg: oklch(92.3599974585% 0.0361847601 292.5809393311deg);\n }\n [data-fs-brand=violet][data-theme=dark],\n [data-theme=dark] [data-fs-brand=violet] {\n --fs-color-primary: oklch(51.6133172374% 0.2291701476 292.5809393311deg);\n --fs-alert-primary-bg: oklch(31.117092664% 0.067505667 264.9134801836deg);\n --fs-alert-primary-text: oklch(71.986657348% 0.1326774539 292.5809393311deg);\n --fs-feedback-primary-bg: oklch(31.117092664% 0.067505667 264.9134801836deg);\n }\n }\n [data-fs-brand=corporate] {\n --fs-color-primary: #1d4e89;\n --fs-alert-primary-bg: rgb(219.2237954153, 227.2186121739, 237.6990809983);\n --fs-alert-primary-text: rgb(5.0598830676, 24.6667463069, 49.4731905568);\n --fs-feedback-primary-bg: rgb(219.2237954153, 227.2186121739, 237.6990809983);\n }\n [data-fs-brand=corporate][data-theme=dark],\n [data-theme=dark] [data-fs-brand=corporate] {\n --fs-color-primary: rgb(40.8593466225, 86.5224214637, 143.0926598584);\n --fs-alert-primary-bg: rgb(31.2586947979, 46.3186220749, 70.1321749545);\n --fs-alert-primary-text: rgb(127.9940036809, 155.4045223568, 190.9765129762);\n --fs-feedback-primary-bg: rgb(31.2586947979, 46.3186220749, 70.1321749545);\n }\n [data-fs-brand=vibrant] {\n --fs-color-primary: #f2542d;\n --fs-alert-primary-bg: rgb(255, 231.3637253432, 224.6456124112);\n --fs-alert-primary-text: rgb(93.6202523577, 27.1894355526, 10.7919554552);\n --fs-feedback-primary-bg: rgb(255, 231.3637253432, 224.6456124112);\n }\n [data-fs-brand=vibrant][data-theme=dark],\n [data-theme=dark] [data-fs-brand=vibrant] {\n --fs-color-primary: rgb(244.0763687777, 94.774513804, 58.7750761343);\n --fs-alert-primary-bg: rgb(48.9487024594, 50.7990197305, 85.9119190034);\n --fs-alert-primary-text: rgb(255, 166.953251087, 144.6609410048);\n --fs-feedback-primary-bg: rgb(48.9487024594, 50.7990197305, 85.9119190034);\n }\n @supports (color: oklch(0% 0 0deg)) {\n [data-fs-brand=corporate] {\n --fs-color-primary: oklch(42.3377990386% 0.1112359961 255.1073474093deg);\n --fs-alert-primary-bg: oklch(91.3506698558% 0.0166853994 255.1073474093deg);\n --fs-alert-primary-text: oklch(21.1688995193% 0.055617998 255.1073474093deg);\n --fs-feedback-primary-bg: oklch(91.3506698558% 0.0166853994 255.1073474093deg);\n }\n [data-fs-brand=corporate][data-theme=dark],\n [data-theme=dark] [data-fs-brand=corporate] {\n --fs-color-primary: oklch(45.2209090867% 0.1056741963 255.1073474093deg);\n --fs-alert-primary-bg: oklch(30.1077650613% 0.0480063062 259.2924413953deg);\n --fs-alert-primary-text: oklch(68.2857894712% 0.0611797979 255.1073474093deg);\n --fs-feedback-primary-bg: oklch(30.1077650613% 0.0480063062 259.2924413953deg);\n }\n [data-fs-brand=vibrant] {\n --fs-color-primary: oklch(65.5786741493% 0.2007639921 34.7814711243deg);\n --fs-alert-primary-bg: oklch(94.8368011224% 0.0301145988 34.7814711243deg);\n --fs-alert-primary-text: oklch(32.7893370747% 0.1003819961 34.7814711243deg);\n --fs-feedback-primary-bg: oklch(94.8368011224% 0.0301145988 34.7814711243deg);\n }\n [data-fs-brand=vibrant][data-theme=dark],\n [data-theme=dark] [data-fs-brand=vibrant] {\n --fs-color-primary: oklch(67.2997404419% 0.1907257925 34.7814711243deg);\n --fs-alert-primary-bg: oklch(33.5938963279% 0.0614355056 280.2435599526deg);\n --fs-alert-primary-text: oklch(81.0682707821% 0.1104201957 34.7814711243deg);\n --fs-feedback-primary-bg: oklch(33.5938963279% 0.0614355056 280.2435599526deg);\n }\n }\n}\n@layer overrides {\n [data-fs-brand=vibrant] .fs-btn-primary,\n [data-fs-brand=vibrant] .fs-badge-primary {\n --fs-btn-color: #000000;\n --fs-badge-color: #000000;\n }\n [data-fs-brand=vibrant] .fs-check {\n --fs-check-mark: #000000;\n }\n}\n@layer tokens {\n [data-theme=dark],\n [data-fs-theme=dark] {\n --fs-color-text: #f1f3f4;\n --fs-color-muted: #bdc1c6;\n --fs-color-border: #3c4043;\n --fs-color-surface: #202124;\n --fs-color-subtle: #2b2c2f;\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 50%), 0 1px 2px rgb(0 0 0 / 40%);\n --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 55%), 0 3px 6px rgb(0 0 0 / 45%);\n --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 60%), 0 6px 12px rgb(0 0 0 / 50%);\n --fs-tooltip-bg: #f8fafc;\n --fs-tooltip-text: #1e293b;\n --fs-color-primary: rgb(39.8728684152, 106.2372587275, 232.1894887664);\n --fs-alert-primary-bg: rgb(30.765779113, 49.9974662348, 82.3021425489);\n --fs-alert-primary-text: rgb(130.6636212695, 172.0850768824, 246.4419684583);\n --fs-feedback-primary-bg: rgb(30.765779113, 49.9974662348, 82.3021425489);\n --fs-color-secondary: rgb(114.3557068426, 129.039220146, 150.1520317181);\n --fs-alert-secondary-bg: rgb(39.6548148226, 51.4270943358, 70.2648514061);\n --fs-alert-secondary-text: rgb(166.7597509121, 176.2809684237, 189.9919576187);\n --fs-feedback-secondary-bg: rgb(39.6548148226, 51.4270943358, 70.2648514061);\n --fs-color-success: rgb(134.4501166043, 226.9563331209, 149.6185042518);\n --fs-alert-success-bg: rgb(24.8621518491, 61.9088085702, 89.0318819222);\n --fs-alert-success-text: rgb(155.0475916512, 231.7231823866, 166.1609492581);\n --fs-feedback-success-bg: rgb(24.8621518491, 61.9088085702, 89.0318819222);\n --fs-color-warning: rgb(252.9400238762, 208.7461261831, 137.9221837268);\n --fs-alert-warning-bg: rgb(59.1359779173, 56.6792370273, 88.6687774507);\n --fs-alert-warning-text: rgb(253.5439861058, 216.1213263099, 157.1705651606);\n --fs-feedback-warning-bg: rgb(59.1359779173, 56.6792370273, 88.6687774507);\n --fs-color-danger: rgb(208.1189955268, 64.9740184262, 63.4302936954);\n --fs-alert-danger-bg: rgb(44.6823973866, 47.5125073063, 81.2083778204);\n --fs-alert-danger-text: rgb(235.4050745756, 149.9650253478, 142.4924034553);\n --fs-feedback-danger-bg: rgb(44.6823973866, 47.5125073063, 81.2083778204);\n --fs-color-info: #5e5cc7;\n --fs-alert-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);\n --fs-alert-info-text: rgb(160.628671266, 165.881962789, 227.610600335);\n --fs-feedback-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);\n }\n @supports (color: oklch(0% 0 0deg)) {\n [data-theme=dark],\n [data-fs-theme=dark] {\n --fs-color-text: oklch(96.2913383165% 0.002529697 228.7848682695deg);\n --fs-color-muted: oklch(80.9268110646% 0.0083071608 253.8653061211deg);\n --fs-color-border: oklch(36.8827622528% 0.0074489239 240.018838067deg);\n --fs-color-surface: oklch(24.7936263361% 0.0058460141 271.1764187765deg);\n --fs-color-subtle: oklch(29.3286259539% 0.0055990771 271.2234269855deg);\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n --fs-tooltip-bg: oklch(98.4151869501% 0.0034126992 247.8577745944deg);\n --fs-tooltip-text: oklch(27.9495237712% 0.0368481257 260.0309873929deg);\n --fs-color-primary: oklch(55.884857057% 0.2025537915 261.6264320248deg);\n --fs-alert-primary-bg: oklch(31.7915463198% 0.0633030844 260.2703040876deg);\n --fs-alert-primary-text: oklch(74.4596540856% 0.1172679846 261.6264320248deg);\n --fs-feedback-primary-bg: oklch(31.7915463198% 0.0633030844 260.2703040876deg);\n --fs-color-secondary: oklch(59.8951906896% 0.0366453387 257.4166191214deg);\n --fs-alert-secondary-bg: oklch(32.0729603204% 0.0374284633 259.6388321521deg);\n --fs-alert-secondary-text: oklch(75.4915054214% 0.0223943736 257.4166191214deg);\n --fs-feedback-secondary-bg: oklch(32.0729603204% 0.0374284633 259.6388321521deg);\n --fs-color-success: oklch(83.8485321344% 0.139498201 148.125846236deg);\n --fs-alert-success-bg: oklch(35.0298333903% 0.0635127994 243.2452162193deg);\n --fs-alert-success-text: oklch(86.3333733445% 0.1180369393 148.125846236deg);\n --fs-feedback-success-bg: oklch(35.0298333903% 0.0635127994 243.2452162193deg);\n --fs-color-warning: oklch(88.2682030181% 0.1015699084 78.6575213966deg);\n --fs-alert-warning-bg: oklch(36.0497574404% 0.0547601164 286.8249674934deg);\n --fs-alert-warning-text: oklch(90.0730948615% 0.0859437686 78.6575213966deg);\n --fs-feedback-warning-bg: oklch(36.0497574404% 0.0547601164 286.8249674934deg);\n --fs-color-danger: oklch(58.1670482336% 0.1802407312 25.2407937498deg);\n --fs-alert-danger-bg: oklch(32.151892295% 0.0597799696 278.8124583464deg);\n --fs-alert-danger-text: oklch(75.7809226615% 0.104349897 25.2407937498deg);\n --fs-feedback-danger-bg: oklch(32.151892295% 0.0597799696 278.8124583464deg);\n --fs-color-info: oklch(53.3359780029% 0.1620131129 280.2231949375deg);\n --fs-alert-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);\n --fs-alert-info-text: oklch(74.3347879016% 0.0891072121 280.2231949375deg);\n --fs-feedback-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);\n }\n }\n @media (prefers-color-scheme: dark) {\n [data-fs-theme=auto] {\n --fs-color-text: #f1f3f4;\n --fs-color-muted: #bdc1c6;\n --fs-color-border: #3c4043;\n --fs-color-surface: #202124;\n --fs-color-subtle: #2b2c2f;\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-tooltip-bg: #f8fafc;\n --fs-tooltip-text: #1e293b;\n }\n }\n @media (forced-colors: active) {\n :root,\n [data-theme=dark],\n [data-fs-theme=light],\n [data-fs-theme=dark],\n [data-fs-theme=auto] {\n --fs-color-border: CanvasText;\n --fs-color-text: CanvasText;\n --fs-color-surface: Canvas;\n --fs-color-subtle: Canvas;\n --fs-focus-color: Highlight;\n }\n }\n}","// Camada semântica: nomeia tokens por PAPEL (o que a cor faz na interface),\n// não por valor. Cada token aqui é um alias `var()` de um token primitivo\n// (`_root.scss`) — não introduz nenhuma cor nova, só um vocabulário estável\n// entre o primitivo e o consumo por componente (ver `_component-buttons.scss`\n// como referência de como um componente deve consumir esta camada).\n// Por que alias e não recalcular o valor: um `var()` encadeado continua\n// resolvendo o fallback sRGB/OKLCH já decidido em `_root.scss` — não precisa\n// repetir a lógica de `@supports` aqui.\n@layer tokens {\n :root {\n // Superfícies\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n\n // Texto\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n\n // Bordas\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n\n // Ação (mapeiam para a cor de tema correspondente — existem para dar um\n // nome estável a \"a cor de ação primária\", independente de qual token\n // primitivo ela usa por baixo).\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n }\n}\n","// Tokens de gráficos: agnósticos de biblioteca — não é um wrapper de\n// Chart.js/ECharts/Recharts/etc., só cores/tema que qualquer uma delas pode\n// consumir via `getComputedStyle`/CSS custom properties. Aliases da camada\n// semântica já existente (mesma técnica de `_semantic.scss`), então\n// acompanham `data-theme`/`data-fs-brand` automaticamente sem token novo por\n// tema. Ver docs/guides/charts.md.\n@layer tokens {\n :root {\n --fs-chart-series-1: var(--fs-color-primary);\n --fs-chart-series-2: var(--fs-color-success);\n --fs-chart-series-3: var(--fs-color-warning);\n --fs-chart-series-4: var(--fs-color-danger);\n --fs-chart-series-5: var(--fs-color-info);\n --fs-chart-series-6: var(--fs-color-secondary);\n --fs-chart-grid: var(--fs-color-border);\n --fs-chart-axis: var(--fs-color-muted);\n --fs-chart-tooltip-bg: var(--fs-tooltip-bg);\n --fs-chart-tooltip-text: var(--fs-tooltip-text);\n }\n}\n","@layer reset {\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n html {\n line-height: var(--fs-line-height-base);\n text-size-adjust: 100%;\n }\n\n body {\n margin: 0;\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n }\n\n [hidden] {\n display: none !important;\n }\n}\n","// As declarações @font-face das fontes self-hosted ficam em `_fonts.scss`,\n// distribuído à parte (dist/css/fonts.css) e fora dos bundles principais —\n// ver a nota nesse arquivo. Aqui só aplicamos as pilhas de `font-family`\n// (com fallback sans-serif/monospace, que valem mesmo sem fonts.css).\n\n@layer base {\n body,\n button,\n input,\n select,\n textarea {\n font-family: var(--fs-font-sans);\n font-size: var(--fs-font-size-md);\n }\n\n code,\n kbd,\n pre,\n samp {\n font-family: var(--fs-font-mono);\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n font-weight: var(--fs-font-weight-semibold);\n line-height: var(--fs-line-height-heading);\n }\n\n h1 {\n font-size: var(--fs-font-size-h1);\n }\n\n h2 {\n font-size: var(--fs-font-size-h2);\n }\n\n h3 {\n font-size: var(--fs-font-size-h3);\n }\n\n h4 {\n font-size: var(--fs-font-size-h4);\n }\n\n h5 {\n font-size: var(--fs-font-size-h5);\n }\n\n h6 {\n font-size: var(--fs-font-size-h6);\n }\n}\n","// Respeita a preferência do sistema sem remover a funcionalidade dos\n// componentes: apenas reduz transições e animações ao estado final.\n@layer base {\n @media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n scroll-behavior: auto !important;\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n }\n\n // Spinner comunica uma operação em curso; congelá-lo o transforma em um\n // ícone ambíguo. Mantemos a animação, porém em ritmo mais lento, para\n // respeitar a preferência sem perder o significado de carregamento.\n .fs-spinner,\n .fs-progress-bar-animated,\n .fs-progress-indeterminate .fs-progress-bar {\n animation-duration: 1.5s !important;\n animation-iteration-count: infinite !important;\n }\n }\n}\n","/* stylelint-disable property-no-deprecated, selector-not-notation */\n@layer reset {\n :focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-focus-color);\n outline-offset: var(--fs-focus-offset);\n }\n\n @media (forced-colors: active) {\n :focus-visible {\n outline: 2px solid CanvasText;\n outline-offset: 2px;\n }\n\n button,\n [role=\"button\"],\n input,\n select,\n textarea,\n .fs-btn {\n border-color: ButtonText;\n forced-color-adjust: auto;\n }\n\n .fs-u-focus-ring:focus-visible {\n outline: 3px solid Highlight;\n }\n }\n}\n\n@layer utilities {\n .fs-u-visually-hidden:not(:focus):not(:focus-within),\n .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip-path: inset(50%) !important;\n white-space: nowrap !important;\n border: 0 !important;\n }\n\n .fs-skip-link {\n position: fixed;\n z-index: 1000;\n inset-block-start: var(--fs-space-2);\n inset-inline-start: var(--fs-space-2);\n transform: translateY(-200%);\n padding: var(--fs-space-2) var(--fs-space-3);\n color: var(--fs-color-on-primary);\n background: var(--fs-color-primary);\n border-radius: var(--fs-radius-sm);\n }\n\n .fs-skip-link:focus {\n transform: translateY(0);\n }\n}\n","@use \"../../../fokus-core/scss/settings\" as *;\n@use \"../../../fokus-core/scss/tools\" as *;\n\n@layer components {\n .fs-form-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: flex-start;\n gap: 12px 16px;\n width: 100%;\n }\n\n .fs-form-col {\n display: flex;\n flex: 1 1 240px;\n flex-direction: column;\n align-items: stretch;\n min-width: 0;\n gap: 4px;\n }\n\n .fs-form-label {\n width: auto;\n margin: 0;\n color: var(--fs-color-muted);\n font-size: $font-size-sm;\n font-weight: $font-weight-regular;\n }\n\n .fs-form-text {\n width: auto;\n margin: 0;\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n font-weight: $font-weight-regular;\n }\n\n .fs-form-text,\n .fs-valid-feedback,\n .fs-invalid-feedback {\n min-height: 1.25rem;\n padding: 3px 8px;\n border-radius: var(--fs-radius-sm);\n }\n\n .fs-form-text {\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n font-weight: $font-weight-regular;\n }\n\n .fs-valid-feedback,\n .fs-invalid-feedback {\n display: none;\n font-size: $font-size-xs;\n font-weight: $font-weight-regular;\n\n }\n\n .fs-valid-feedback {\n color: var(--fs-alert-success-text);\n background-color: var(--fs-feedback-success-bg);\n }\n\n .fs-invalid-feedback {\n color: var(--fs-alert-danger-text);\n background-color: var(--fs-feedback-danger-bg);\n }\n\n .is-valid ~ .fs-valid-feedback,\n .is-invalid ~ .fs-invalid-feedback {\n display: block;\n }\n\n .fs-form-control {\n width: 100%;\n min-width: 0;\n height: var(--fs-control-height);\n padding: 0 7px;\n border: var(--fs-border-width) solid var(--fs-color-border-default);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n font-size: $font-size-md;\n font-weight: $font-weight-medium;\n }\n\n .fs-form-control::placeholder {\n color: var(--fs-color-muted);\n }\n\n .fs-form-control:focus-visible {\n @include focus-ring;\n }\n\n .fs-form-control:disabled {\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n opacity: var(--fs-disabled-opacity);\n pointer-events: none;\n }\n\n .fs-form-control:read-only {\n background-color: var(--fs-color-subtle);\n cursor: default;\n }\n\n .fs-floating-label {\n position: relative;\n }\n\n .fs-floating-label > .fs-form-control {\n height: 56px;\n padding-top: 20px;\n }\n\n .fs-floating-label > .fs-form-label {\n position: absolute;\n z-index: 1;\n top: 8px;\n left: 8px;\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n pointer-events: none;\n }\n\n .fs-form-control[aria-invalid=\"true\"],\n .fs-was-validated .fs-form-control:invalid {\n border-color: var(--fs-color-danger);\n }\n\n .fs-form-control[aria-invalid=\"false\"],\n .fs-was-validated .fs-form-control:valid {\n border-color: var(--fs-color-success);\n }\n\n .fs-form-control-sm {\n height: var(--fs-control-height-sm);\n font-size: $font-size-xs;\n }\n\n .fs-form-control-lg {\n height: var(--fs-control-height-lg);\n font-size: $font-size-md;\n }\n\n .fs-form-size-sm {\n width: 120px;\n }\n\n .fs-form-size-md {\n width: 180px;\n }\n\n .fs-form-size-lg {\n width: 240px;\n }\n\n .fs-form-size-xl {\n width: 300px;\n }\n\n .fs-form-size-xxl {\n width: 360px;\n }\n\n .fs-form-control.is-valid {\n border-color: var(--fs-color-success);\n }\n\n .fs-form-control.is-valid:focus-visible {\n @include focus-ring(var(--fs-color-success));\n }\n\n .fs-form-control.is-invalid {\n border-color: var(--fs-color-danger);\n }\n\n .fs-form-control.is-invalid:focus-visible {\n @include focus-ring(var(--fs-color-danger));\n }\n\n .fs-form-select {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: var(--fs-control-height);\n padding: 0 7px;\n border: var(--fs-border-width) solid var(--fs-color-border-default);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n font-size: $font-size-md;\n font-weight: $font-weight-medium;\n text-align: left;\n cursor: pointer;\n }\n\n .fs-form-select::after {\n flex-shrink: 0;\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 8px;\n content: \"\";\n border-top: 5px solid;\n border-right: 5px solid transparent;\n border-left: 5px solid transparent;\n }\n\n .fs-form-select:focus-visible {\n @include focus-ring;\n }\n\n .fs-form-select:disabled {\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n opacity: 0.4;\n pointer-events: none;\n }\n\n .fs-form-select-sm {\n height: var(--fs-control-height-sm);\n font-size: $font-size-xs;\n }\n\n .fs-form-select-lg {\n height: var(--fs-control-height-lg);\n font-size: $font-size-md;\n }\n\n .fs-file-upload {\n position: relative;\n display: inline-flex;\n }\n\n .fs-file-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n\n .fs-file-label {\n display: inline-flex;\n align-items: center;\n height: 38px;\n padding: 0 14px;\n border: 1px solid var(--fs-color-border);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-subtle);\n font-size: $font-size-md;\n font-weight: $font-weight-medium;\n cursor: pointer;\n user-select: none;\n transition: filter var(--fs-transition-fast) var(--fs-ease-standard);\n }\n\n .fs-file-label:hover {\n filter: brightness(0.96);\n }\n\n .fs-file-input:focus-visible + .fs-file-label {\n @include focus-ring;\n }\n\n .fs-file-input:disabled + .fs-file-label {\n color: var(--fs-color-muted);\n opacity: var(--fs-disabled-opacity);\n pointer-events: none;\n cursor: default;\n }\n\n .fs-file-label-sm {\n height: 30px;\n padding: 0 10px;\n font-size: $font-size-xs;\n }\n\n .fs-file-label-lg {\n height: 46px;\n padding: 0 18px;\n font-size: $font-size-lg;\n }\n\n // Drag-and-drop (js/file-drop.js): estado visual ao arrastar um arquivo por\n // cima do `.fs-file-label`, e uma variante maior (dropzone) para quando o alvo\n // de soltar precisa ser mais generoso que o botão padrão de `.fs-file-label`.\n .fs-file-label.is-dragover {\n border-color: var(--fs-color-primary);\n background-color: var(--fs-color-subtle);\n }\n\n .fs-file-label-dropzone {\n flex-direction: column;\n gap: 4px;\n width: 100%;\n height: auto;\n padding: 32px 16px;\n border-style: dashed;\n border-width: 2px;\n font-weight: $font-weight-regular;\n text-align: center;\n }\n\n .fs-file-label-dropzone .fs-file-dropzone-hint {\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n font-weight: $font-weight-regular;\n }\n\n // Input Group: funde `.fs-form-control` (ou `.fs-form-select`/`.fs-btn`) com \"addons\"\n // de texto/ícone de prefixo/sufixo, reaproveitando os tokens visuais do\n // próprio `.fs-form-control` (borda, cor, radius). 100% CSS — a altura do addon\n // acompanha a do controle via `align-items: stretch` (herdado), sem precisar\n // fixar `height` nele.\n .fs-input-group {\n display: flex;\n align-items: stretch;\n width: 100%;\n }\n\n .fs-input-group > .fs-form-control,\n .fs-input-group > .fs-form-select {\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n }\n\n .fs-input-group-text {\n display: flex;\n align-items: center;\n padding: 0 12px;\n border: 1px solid var(--fs-color-border);\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n font-size: $font-size-md;\n font-weight: $font-weight-medium;\n white-space: nowrap;\n }\n\n // Funde as bordas dos itens adjacentes (remove a dupla borda) e mantém o\n // item focado por cima da sobreposição de -1px, senão a borda de foco fica\n // parcialmente escondida atrás do vizinho.\n .fs-input-group > :not(:first-child) {\n margin-left: -1px;\n }\n\n .fs-input-group > :focus-visible,\n .fs-input-group > :focus-within {\n position: relative;\n z-index: 1;\n }\n\n .fs-input-group > * {\n border-radius: 0;\n }\n\n .fs-input-group > :first-child {\n border-top-left-radius: var(--fs-radius-sm);\n border-bottom-left-radius: var(--fs-radius-sm);\n }\n\n .fs-input-group > :last-child {\n border-top-right-radius: var(--fs-radius-sm);\n border-bottom-right-radius: var(--fs-radius-sm);\n }\n\n .fs-input-group-sm > .fs-form-control,\n .fs-input-group-sm > .fs-form-select,\n .fs-input-group-sm > .fs-input-group-text {\n height: 30px;\n padding: 0 8px;\n font-size: $font-size-xs;\n }\n\n .fs-input-group-lg > .fs-form-control,\n .fs-input-group-lg > .fs-form-select,\n .fs-input-group-lg > .fs-input-group-text {\n height: 46px;\n padding: 0 16px;\n font-size: $font-size-lg;\n }\n}\n","$font-family-sans: \"Plus Jakarta Sans\", sans-serif !default;\n$font-family-mono: \"Source Code Pro\", monospace !default;\n\n// Escala compacta: corpo (md) ~13px, piso (xs) ~11px — reservado a\n// texto de apoio (meta/label), nunca corpo de leitura.\n$font-size-xs: 0.6875rem !default;\n$font-size-sm: 0.75rem !default;\n$font-size-md: 0.8125rem !default;\n$font-size-lg: 1rem !default;\n$font-size-xl: 1.25rem !default;\n\n// Escala de headings, deliberadamente menor que o padrão do navegador\n// (preferência por texto compacto — ver docs/internal/plans).\n$font-size-h1: 1.75rem !default;\n$font-size-h2: 1.5rem !default;\n$font-size-h3: 1.3125rem !default;\n$font-size-h4: 1.125rem !default;\n$font-size-h5: 1rem !default;\n$font-size-h6: 0.875rem !default;\n\n$font-weight-regular: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n\n$line-height-base: 1.5 !default;\n$line-height-heading: 1.25 !default;\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:color\";\n@use \"../settings\" as *;\n\n@mixin fs-fluid-type($min, $max, $min-vw: 320px, $max-vw: 1280px) {\n font-size: clamp($min, calc(#{$min} + (#{ $max } - #{ $min }) * ((100vw - #{ $min-vw }) / (#{ $max-vw } - #{ $min-vw }))), $max);\n}\n\n@mixin fs-fluid-value($property, $min, $max, $min-vw: 320px, $max-vw: 1280px) {\n #{$property}: clamp($min, calc(#{$min} + (#{ $max } - #{ $min }) * ((100vw - #{ $min-vw }) / (#{ $max-vw } - #{ $min-vw }))), $max);\n}\n\n@mixin media-breakpoint-up($name) {\n $min: map.get($breakpoints, $name);\n\n @if $min == null {\n @error \"Unknown breakpoint `#{$name}`.\";\n }\n\n @if $min == 0 {\n @content;\n } @else {\n @media (min-width: $min) {\n @content;\n }\n }\n}\n\n@function breakpoint-infix($name) {\n @if $name == xs {\n @return \"\";\n }\n\n @return \"-#{$name}\";\n}\n\n@mixin focus-ring($color: var(--fs-color-primary)) {\n outline: var(--fs-focus-width) solid $color;\n outline-offset: var(--fs-focus-offset);\n border-color: $color;\n box-shadow: 0 0 0 3px color-mix(in srgb, #{$color} 22%, transparent);\n}\n\n@mixin truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@function linearize-channel($value) {\n $c: math.div($value, 255);\n\n @if $c <= 0.0393 {\n @return math.div($c, 12.92);\n }\n\n @return math.pow(math.div($c + 0.055, 1.055), 2.4);\n}\n\n@function relative-luminance($color) {\n $r: linearize-channel(color.channel($color, \"red\", $space: rgb));\n $g: linearize-channel(color.channel($color, \"green\", $space: rgb));\n $b: linearize-channel(color.channel($color, \"blue\", $space: rgb));\n\n @return (0.2126 * $r) + (0.7152 * $g) + (0.0722 * $b);\n}\n\n@function color-contrast($background, $min-contrast: 4.5) {\n $contrast-with-white: math.div(1.05, relative-luminance($background) + 0.05);\n\n @if $contrast-with-white >= $min-contrast {\n @return $color-white;\n }\n\n @return $color-black;\n}\n\n// Razão de contraste WCAG entre duas cores (1–21). Usada pelo relatório de\n// contraste do build (`npm run contrast`, `scripts/contrast-report.scss`) —\n// ver docs/reference/contrast-report.md para os pares auditados.\n@function contrast-ratio($foreground, $background) {\n $l1: relative-luminance($foreground) + 0.05;\n $l2: relative-luminance($background) + 0.05;\n\n @if $l1 > $l2 {\n @return math.div($l1, $l2);\n }\n\n @return math.div($l2, $l1);\n}\n\n@function tint-color($color, $weight: 15%) {\n @return color.mix($color, $color-white, $weight, $method: oklch);\n}\n\n@function shade-color($color, $weight: 50%) {\n @return color.mix($color, $color-black, $weight, $method: oklch);\n}\n\n// Fallback sRGB de uma cor OKLCH para navegadores sem suporte a `oklch()`\n// (ver `@supports` em tokens/_root.scss e themes/_dark.scss). Faz gamut\n// mapping antes da conversão — misturas em OKLCH frequentemente caem fora do\n// gamut sRGB, e converter sem mapear gera `rgb()`/`hsl()` com canais\n// inválidos (saturação > 100%, etc.).\n@function rgb-fallback($color) {\n $mapped: color.to-gamut($color, $space: rgb, $method: local-minde);\n\n @return color.to-space($mapped, rgb);\n}\n","@use \"../../../fokus-core/scss/settings\" as *;\n@use \"../../../fokus-core/scss/tools\" as *;\n\n// Checkbox/radio/switch 100% CSS, reusando a técnica de input oculto +\n// label irmã do Segmented Control (_segmented-control.scss) e do Rating\n// (_rating.scss): `<input>` clipado visualmente (não `display: none` — teclado\n// e leitor de tela continuam enxergando o controle) + `<label for=\"id\">`\n// como irmã, que desenha a caixa/trilho via `::before` e a marca/knob via\n// `::after`. O `<label>` é o alvo de clique/hover/estado, mas o input\n// continua sendo o elemento focável e semântico (checkbox/radio nativos).\n// Wrapper (`.fs-check`/`.fs-radio`/`.fs-switch`) carrega o tamanho\n// (`-sm`/`-lg`) e agrupa input+label, no mesmo papel de `.fs-segmented-item`.\n@layer components {\n .fs-check,\n .fs-radio,\n .fs-switch {\n display: inline-flex;\n align-items: center;\n }\n\n .fs-check {\n --fs-check-mark: var(--fs-color-on-primary);\n }\n\n .fs-check-input,\n .fs-radio-input,\n .fs-switch-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n\n .fs-check-label,\n .fs-radio-label,\n .fs-switch-label {\n position: relative;\n display: inline-flex;\n align-items: center;\n min-height: 20px;\n padding-left: 28px;\n color: var(--fs-color-text);\n font-size: $font-size-md;\n cursor: pointer;\n user-select: none;\n }\n\n // Caixa (checkbox/radio) ou trilho (switch), desenhados no `::before` da\n // label. Radio é a exceção redonda da regra anti-circular do projeto\n // (junto do spinner) — ver docs/internal/plans.\n .fs-check-label::before,\n .fs-radio-label::before,\n .fs-switch-label::before {\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: 1px solid var(--fs-color-border);\n background-color: var(--fs-color-surface);\n content: \"\";\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n }\n\n .fs-check-label::before,\n .fs-radio-label::before {\n width: 18px;\n height: 18px;\n }\n\n .fs-check-label::before {\n border: 2px solid var(--fs-color-primary);\n border-radius: 0;\n }\n\n .fs-radio-label::before {\n border-radius: 50%;\n }\n\n // Marca de check (dois traços em \"V\", via borda rotacionada). Os estados\n // indeterminado e inválido substituem essa geometria mais abaixo.\n .fs-check-label::after {\n position: absolute;\n left: 4px;\n width: 9px;\n height: 5px;\n content: \"\";\n opacity: 0;\n border-bottom: 2px solid var(--fs-check-mark);\n border-left: 2px solid var(--fs-check-mark);\n transform: translateY(-1px) rotate(-45deg);\n transition: opacity 0.1s ease-in-out;\n }\n\n .fs-radio-label::after {\n position: absolute;\n left: 5px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n content: \"\";\n opacity: 0;\n background-color: var(--fs-color-on-primary);\n transition: opacity 0.1s ease-in-out;\n }\n\n .fs-check-input:checked + .fs-check-label::before,\n .fs-radio-input:checked + .fs-radio-label::before {\n background-color: var(--fs-color-primary);\n border-color: var(--fs-color-primary);\n }\n\n .fs-check-input:checked + .fs-check-label::after,\n .fs-radio-input:checked + .fs-radio-label::after {\n opacity: 1;\n }\n\n .fs-check-input:not(:checked, :indeterminate, :disabled, .is-invalid) + .fs-check-label:hover::before {\n background-color: color-mix(in srgb, var(--fs-color-primary) 10%, transparent);\n }\n\n .fs-check-input:not(:disabled, :indeterminate, .is-invalid) + .fs-check-label:active::before {\n background-color: color-mix(in srgb, var(--fs-color-primary) 86%, var(--fs-color-black));\n border-color: var(--fs-color-primary);\n }\n\n .fs-check-input:checked:not(:disabled, .is-invalid) + .fs-check-label:active::after {\n transform: translateY(-1px) rotate(-45deg) scale(0.9);\n }\n\n // Switch: trilho retangular arredondado (não pílula) e knob também\n // retangular arredondado — decisão de forma do projeto (nada circular além\n // do radio/spinner). Desliza via `left` no `::after`.\n .fs-switch-label {\n padding-left: 44px;\n }\n\n .fs-switch-label::before {\n width: 36px;\n height: 20px;\n border-radius: var(--fs-radius-md);\n }\n\n .fs-switch-label::after {\n position: absolute;\n left: 2px;\n width: 16px;\n height: 14px;\n border-radius: var(--fs-radius-sm);\n content: \"\";\n background-color: var(--fs-color-border);\n transition: left 0.15s ease-in-out, background-color 0.15s ease-in-out;\n }\n\n .fs-switch-input:checked + .fs-switch-label::before {\n background-color: var(--fs-color-primary);\n border-color: var(--fs-color-primary);\n }\n\n .fs-switch-input:checked + .fs-switch-label::after {\n left: 18px;\n background-color: var(--fs-color-on-primary);\n }\n\n // Foco: anel sobre a caixa/trilho (`::before`), não sobre o texto.\n .fs-check-input:focus-visible + .fs-check-label::before,\n .fs-radio-input:focus-visible + .fs-radio-label::before,\n .fs-switch-input:focus-visible + .fs-switch-label::before {\n @include focus-ring;\n }\n\n .fs-radio-input:disabled + .fs-radio-label,\n .fs-switch-input:disabled + .fs-switch-label {\n opacity: 0.5;\n pointer-events: none;\n }\n\n .fs-check-input:disabled + .fs-check-label {\n color: var(--fs-color-muted);\n opacity: 1;\n pointer-events: none;\n }\n\n .fs-check-input:disabled:not(:checked, :indeterminate) + .fs-check-label::before {\n border-color: var(--fs-color-border);\n background-color: var(--fs-color-subtle);\n }\n\n .fs-check-input:disabled:checked + .fs-check-label::before {\n border-color: color-mix(in srgb, var(--fs-color-primary) 55%, var(--fs-color-border));\n background-color: color-mix(in srgb, var(--fs-color-primary) 45%, var(--fs-color-subtle));\n }\n\n .fs-check-input:disabled:checked + .fs-check-label::after {\n opacity: 0.72;\n }\n\n // Validação (mesma convenção de `.fs-form-control.is-valid`/`.is-invalid`).\n .fs-radio-input.is-valid + .fs-radio-label::before {\n border-color: var(--fs-color-success);\n }\n\n .fs-check-input.is-invalid + .fs-check-label::before,\n .fs-radio-input.is-invalid + .fs-radio-label::before {\n border-color: var(--fs-color-danger);\n }\n\n // Tamanhos: reescalam caixa/trilho/knob e o espaço reservado para eles\n // (`padding-left`) proporcionalmente.\n .fs-check-sm .fs-check-label,\n .fs-radio-sm .fs-radio-label {\n min-height: 16px;\n padding-left: 24px;\n font-size: $font-size-sm;\n }\n\n .fs-check-sm .fs-check-label::before,\n .fs-radio-sm .fs-radio-label::before {\n width: 15px;\n height: 15px;\n }\n\n .fs-check-sm .fs-check-label::after {\n left: 3px;\n width: 8px;\n height: 4px;\n }\n\n .fs-radio-sm .fs-radio-label::after {\n left: 4px;\n width: 7px;\n height: 7px;\n }\n\n .fs-check-lg .fs-check-label,\n .fs-radio-lg .fs-radio-label {\n min-height: 24px;\n padding-left: 34px;\n font-size: $font-size-lg;\n }\n\n .fs-check-lg .fs-check-label::before,\n .fs-radio-lg .fs-radio-label::before {\n width: 22px;\n height: 22px;\n }\n\n .fs-check-lg .fs-check-label::after {\n left: 5px;\n width: 11px;\n height: 6px;\n }\n\n .fs-radio-lg .fs-radio-label::after {\n left: 6px;\n width: 10px;\n height: 10px;\n }\n\n .fs-switch-sm .fs-switch-label {\n min-height: 16px;\n padding-left: 38px;\n font-size: $font-size-sm;\n }\n\n .fs-switch-sm .fs-switch-label::before {\n width: 30px;\n height: 16px;\n }\n\n .fs-switch-sm .fs-switch-label::after {\n width: 12px;\n height: 10px;\n }\n\n .fs-switch-sm .fs-switch-input:checked + .fs-switch-label::after {\n left: 16px;\n }\n\n .fs-switch-lg .fs-switch-label {\n min-height: 26px;\n padding-left: 52px;\n font-size: $font-size-lg;\n }\n\n .fs-switch-lg .fs-switch-label::before {\n width: 44px;\n height: 24px;\n }\n\n .fs-switch-lg .fs-switch-label::after {\n width: 20px;\n height: 18px;\n }\n\n .fs-switch-lg .fs-switch-input:checked + .fs-switch-label::after {\n left: 22px;\n }\n\n // Estado parcial: borda tracejada em primary e traço horizontal. Mantém o\n // fundo definido para não se confundir com a superfície ao redor.\n .fs-check-input:indeterminate + .fs-check-label::before {\n border: 2px dashed var(--fs-color-primary);\n background-color: var(--fs-color-surface);\n }\n\n .fs-check-input:indeterminate + .fs-check-label::after {\n left: 4px;\n width: 10px;\n height: 0;\n opacity: 1;\n border-bottom: 2px solid var(--fs-color-primary);\n border-left: 0;\n transform: translateY(3px) rotate(0deg);\n }\n\n .fs-check-sm .fs-check-input:indeterminate + .fs-check-label::after {\n left: 3px;\n width: 8px;\n }\n\n .fs-check-lg .fs-check-input:indeterminate + .fs-check-label::after {\n left: 5px;\n width: 12px;\n }\n\n // Erro: X branco sobre fundo danger, visível mesmo quando o checkbox não\n // está marcado. Os gradientes desenham o símbolo sem conteúdo decorativo no\n // HTML e preservam o input nativo como fonte de semântica.\n .fs-check-input.is-invalid + .fs-check-label::before {\n background-color: var(--fs-color-danger);\n }\n\n .fs-check-input.is-invalid + .fs-check-label::after {\n top: 6px;\n left: 5px;\n width: 8px;\n height: 8px;\n opacity: 1;\n border: 0;\n background-image:\n linear-gradient(45deg, transparent 42%, #{color-contrast($fokus-color-danger)} 42% 58%, transparent 58%),\n linear-gradient(-45deg, transparent 42%, #{color-contrast($fokus-color-danger)} 42% 58%, transparent 58%);\n transform: none;\n }\n\n .fs-check-sm .fs-check-input.is-invalid + .fs-check-label::after {\n top: 5px;\n left: 4px;\n width: 7px;\n height: 7px;\n }\n\n .fs-check-lg .fs-check-input.is-invalid + .fs-check-label::after {\n top: 6px;\n left: 6px;\n width: 10px;\n height: 10px;\n }\n}\n","@use \"../../../fokus-core/scss/settings\" as *;\n@use \"../../../fokus-core/scss/tools\" as *;\n\n// Range/Slider: <input type=\"range\"> nativo — teclado (setas, Home/End,\n// PageUp/Down) e ARIA (role=slider implícito, aria-valuenow/min/max\n// automáticos) já vêm de graça do navegador, então este componente só\n// estiliza a trilha/thumb (pseudo-elementos vendor-prefixados, sem padrão\n// unificado) e usa `--fs-range-percent` (escrito pelo JS opcional, ver\n// js/range.js) pra pintar a parte preenchida da trilha via gradiente —\n// truque necessário porque só o Firefox suporta `::-moz-range-progress`;\n// Chrome/Safari não têm equivalente.\n@layer components {\n .fs-form-range {\n --fs-range-track-height: 6px;\n --fs-range-track-color: var(--fs-color-border);\n --fs-range-fill-color: var(--fs-color-primary);\n --fs-range-thumb-size: 18px;\n --fs-range-thumb-color: var(--fs-color-surface);\n --fs-range-thumb-border-color: var(--fs-color-primary);\n --fs-range-percent: 0%;\n\n width: 100%;\n height: var(--fs-range-thumb-size);\n padding: 0;\n background: transparent;\n appearance: none;\n cursor: pointer;\n }\n\n .fs-form-range::-webkit-slider-runnable-track {\n height: var(--fs-range-track-height);\n border-radius: var(--fs-radius-sm);\n background: linear-gradient(\n to right,\n var(--fs-range-fill-color) var(--fs-range-percent),\n var(--fs-range-track-color) var(--fs-range-percent)\n );\n }\n\n .fs-form-range::-moz-range-track {\n height: var(--fs-range-track-height);\n border-radius: var(--fs-radius-sm);\n background: linear-gradient(\n to right,\n var(--fs-range-fill-color) var(--fs-range-percent),\n var(--fs-range-track-color) var(--fs-range-percent)\n );\n }\n\n .fs-form-range::-webkit-slider-thumb {\n width: var(--fs-range-thumb-size);\n height: var(--fs-range-thumb-size);\n margin-top: calc((var(--fs-range-track-height) - var(--fs-range-thumb-size)) / 2);\n border: 2px solid var(--fs-range-thumb-border-color);\n border-radius: 50%;\n background-color: var(--fs-range-thumb-color);\n appearance: none;\n cursor: pointer;\n }\n\n .fs-form-range::-moz-range-thumb {\n width: calc(var(--fs-range-thumb-size) - 4px);\n height: calc(var(--fs-range-thumb-size) - 4px);\n border: 2px solid var(--fs-range-thumb-border-color);\n border-radius: 50%;\n background-color: var(--fs-range-thumb-color);\n cursor: pointer;\n }\n\n .fs-form-range:focus-visible::-webkit-slider-thumb {\n @include focus-ring(var(--fs-range-thumb-border-color));\n }\n\n .fs-form-range:focus-visible::-moz-range-thumb {\n @include focus-ring(var(--fs-range-thumb-border-color));\n }\n\n .fs-form-range:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .fs-form-range:disabled::-webkit-slider-thumb {\n cursor: not-allowed;\n }\n\n .fs-form-range:disabled::-moz-range-thumb {\n cursor: not-allowed;\n }\n\n .fs-range-output {\n display: inline-block;\n min-width: 2.5em;\n color: var(--fs-color-text);\n font-size: $font-size-sm;\n font-weight: $font-weight-medium;\n text-align: center;\n }\n}\n","@use \"../../../fokus-core/scss/settings\" as *;\n@use \"../../../fokus-core/scss/tools\" as *;\n\n// Upload avançado (js/file-upload-advanced.js): evolução do File Upload\n// simples (`.fs-file-upload`/`.fs-file-label`, forms/_forms.scss) — reusa a\n// mesma dropzone/botão como gatilho, só adiciona a lista de itens\n// selecionados (thumbnail/nome/tamanho/progresso/remoção) gerada pelo JS.\n@layer components {\n .fs-file-upload-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n margin-top: 12px;\n padding: 0;\n list-style: none;\n }\n\n .fs-file-upload-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 12px;\n border: 1px solid var(--fs-color-border);\n border-radius: var(--fs-radius-sm);\n background-color: var(--fs-color-surface);\n }\n\n .fs-file-upload-thumb {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: var(--fs-radius-sm);\n background-color: var(--fs-color-subtle);\n color: var(--fs-color-muted);\n }\n\n .fs-file-upload-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .fs-file-upload-info {\n flex: 1;\n min-width: 0;\n }\n\n .fs-file-upload-name {\n margin: 0;\n color: var(--fs-color-text);\n font-size: $font-size-sm;\n font-weight: $font-weight-medium;\n\n @include truncate;\n }\n\n .fs-file-upload-size {\n margin: 0 0 4px;\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n }\n\n .fs-file-upload-item.is-error .fs-file-upload-size {\n color: var(--fs-alert-danger-text);\n }\n\n .fs-file-upload-remove {\n flex-shrink: 0;\n }\n}\n","@use \"sass:color\";\n@use \"../settings\" as *;\n@use \"../tools\" as *;\n\n// Theming multi-brand: um `data-fs-brand=\"x\"` sobrescreve só a cor de AÇÃO\n// PRIMÁRIA (--fs-color-primary e os tokens derivados) — secondary/success/\n// warning/danger/info continuam universais entre marcas, porque são\n// semânticos (sucesso é sempre verde, erro sempre vermelho, independente\n// de qual marca está ativa). Composto com `data-theme=\"dark\"` do mesmo\n// jeito que `_dark.scss` faz para a paleta padrão: mistura o primitivo com\n// branco/preto em OKLCH, não recalcula do zero.\n// Limitação conhecida: `.fs-btn-primary`/`.fs-badge-primary` (preenchimento\n// sólido) calculam a cor do texto em tempo de build via `color-contrast()`\n// a partir do primary padrão (azul) — não recalculam por marca. Escolha um\n// primitivo de marca escuro o bastante pro texto branco continuar legível\n// (como o exemplo abaixo), ou sobrescreva `--fs-btn-color`/`--fs-badge-color`\n// manualmente se o primitivo da marca for muito claro. Ver\n// `docs/guides/theming.md#multi-brand`.\n@layer tokens {\n // Marca de exemplo (\"violet\") — mesmo tom usado no exemplo de\n // customização do README, só pra provar que a troca funciona em runtime\n // sem recompilar CSS. Um projeto real substitui/adiciona marcas\n // definindo o próprio primitivo antes de `@use` este arquivo.\n $brand-violet-primary: color.to-space(#6d28d9, oklch) !default;\n\n [data-fs-brand=\"violet\"] {\n --fs-color-primary: #{rgb-fallback($brand-violet-primary)};\n --fs-alert-primary-bg: #{rgb-fallback(tint-color($brand-violet-primary))};\n --fs-alert-primary-text: #{rgb-fallback(shade-color($brand-violet-primary))};\n --fs-feedback-primary-bg: #{rgb-fallback(tint-color($brand-violet-primary))};\n }\n\n [data-fs-brand=\"violet\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"violet\"] {\n --fs-color-primary: #{rgb-fallback(color.mix($brand-violet-primary, $color-white, 95%, $method: oklch))};\n --fs-alert-primary-bg: #{rgb-fallback(color.mix($brand-violet-primary, $color-gray-900, 15%, $method: oklch))};\n --fs-alert-primary-text: #{rgb-fallback(color.mix($brand-violet-primary, $color-white, 55%, $method: oklch))};\n --fs-feedback-primary-bg: #{rgb-fallback(color.mix($brand-violet-primary, $color-gray-900, 15%, $method: oklch))};\n }\n\n @supports (color: oklch(0% 0 0)) {\n [data-fs-brand=\"violet\"] {\n --fs-color-primary: #{$brand-violet-primary};\n --fs-alert-primary-bg: #{tint-color($brand-violet-primary)};\n --fs-alert-primary-text: #{shade-color($brand-violet-primary)};\n --fs-feedback-primary-bg: #{tint-color($brand-violet-primary)};\n }\n\n [data-fs-brand=\"violet\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"violet\"] {\n --fs-color-primary: #{color.mix($brand-violet-primary, $color-white, 95%, $method: oklch)};\n --fs-alert-primary-bg: #{color.mix($brand-violet-primary, $color-gray-900, 15%, $method: oklch)};\n --fs-alert-primary-text: #{color.mix($brand-violet-primary, $color-white, 55%, $method: oklch)};\n --fs-feedback-primary-bg: #{color.mix($brand-violet-primary, $color-gray-900, 15%, $method: oklch)};\n }\n }\n\n // Preset \"corporate\" — azul-marinho/steel blue, tom sóbrio para\n // aplicações internas/B2B. Mesma técnica de mistura OKLCH acima.\n $brand-corporate-primary: color.to-space(#1d4e89, oklch) !default;\n\n [data-fs-brand=\"corporate\"] {\n --fs-color-primary: #{rgb-fallback($brand-corporate-primary)};\n --fs-alert-primary-bg: #{rgb-fallback(tint-color($brand-corporate-primary))};\n --fs-alert-primary-text: #{rgb-fallback(shade-color($brand-corporate-primary))};\n --fs-feedback-primary-bg: #{rgb-fallback(tint-color($brand-corporate-primary))};\n }\n\n [data-fs-brand=\"corporate\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"corporate\"] {\n --fs-color-primary: #{rgb-fallback(color.mix($brand-corporate-primary, $color-white, 95%, $method: oklch))};\n --fs-alert-primary-bg: #{rgb-fallback(color.mix($brand-corporate-primary, $color-gray-900, 15%, $method: oklch))};\n --fs-alert-primary-text: #{rgb-fallback(color.mix($brand-corporate-primary, $color-white, 55%, $method: oklch))};\n --fs-feedback-primary-bg: #{rgb-fallback(color.mix($brand-corporate-primary, $color-gray-900, 15%, $method: oklch))};\n }\n\n // Preset \"vibrant\" — laranja energético, tom para produtos de consumo/\n // marketing que queiram uma ação primária mais chamativa.\n $brand-vibrant-primary: color.to-space(#f2542d, oklch) !default;\n\n [data-fs-brand=\"vibrant\"] {\n --fs-color-primary: #{rgb-fallback($brand-vibrant-primary)};\n --fs-alert-primary-bg: #{rgb-fallback(tint-color($brand-vibrant-primary))};\n --fs-alert-primary-text: #{rgb-fallback(shade-color($brand-vibrant-primary))};\n --fs-feedback-primary-bg: #{rgb-fallback(tint-color($brand-vibrant-primary))};\n }\n\n [data-fs-brand=\"vibrant\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"vibrant\"] {\n --fs-color-primary: #{rgb-fallback(color.mix($brand-vibrant-primary, $color-white, 95%, $method: oklch))};\n --fs-alert-primary-bg: #{rgb-fallback(color.mix($brand-vibrant-primary, $color-gray-900, 15%, $method: oklch))};\n --fs-alert-primary-text: #{rgb-fallback(color.mix($brand-vibrant-primary, $color-white, 55%, $method: oklch))};\n --fs-feedback-primary-bg: #{rgb-fallback(color.mix($brand-vibrant-primary, $color-gray-900, 15%, $method: oklch))};\n }\n\n @supports (color: oklch(0% 0 0)) {\n [data-fs-brand=\"corporate\"] {\n --fs-color-primary: #{$brand-corporate-primary};\n --fs-alert-primary-bg: #{tint-color($brand-corporate-primary)};\n --fs-alert-primary-text: #{shade-color($brand-corporate-primary)};\n --fs-feedback-primary-bg: #{tint-color($brand-corporate-primary)};\n }\n\n [data-fs-brand=\"corporate\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"corporate\"] {\n --fs-color-primary: #{color.mix($brand-corporate-primary, $color-white, 95%, $method: oklch)};\n --fs-alert-primary-bg: #{color.mix($brand-corporate-primary, $color-gray-900, 15%, $method: oklch)};\n --fs-alert-primary-text: #{color.mix($brand-corporate-primary, $color-white, 55%, $method: oklch)};\n --fs-feedback-primary-bg: #{color.mix($brand-corporate-primary, $color-gray-900, 15%, $method: oklch)};\n }\n\n [data-fs-brand=\"vibrant\"] {\n --fs-color-primary: #{$brand-vibrant-primary};\n --fs-alert-primary-bg: #{tint-color($brand-vibrant-primary)};\n --fs-alert-primary-text: #{shade-color($brand-vibrant-primary)};\n --fs-feedback-primary-bg: #{tint-color($brand-vibrant-primary)};\n }\n\n [data-fs-brand=\"vibrant\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"vibrant\"] {\n --fs-color-primary: #{color.mix($brand-vibrant-primary, $color-white, 95%, $method: oklch)};\n --fs-alert-primary-bg: #{color.mix($brand-vibrant-primary, $color-gray-900, 15%, $method: oklch)};\n --fs-alert-primary-text: #{color.mix($brand-vibrant-primary, $color-white, 55%, $method: oklch)};\n --fs-feedback-primary-bg: #{color.mix($brand-vibrant-primary, $color-gray-900, 15%, $method: oklch)};\n }\n }\n}\n\n// Ao contrário de violet/corporate, o primitivo \"vibrant\" (laranja) é claro\n// o bastante pra o texto branco padrão de `.fs-btn-primary`/`.fs-badge-primary`\n// (calculado em tempo de build a partir do primary PADRÃO, não do de marca —\n// ver nota no topo do arquivo) cair abaixo de 4.5:1 — exatamente o caso que\n// a mitigação documentada em docs/guides/theming.md#multi-brand cobre.\n// Precisa estar em `@layer overrides` (a camada de maior prioridade — ver\n// `tokens/_root.scss`): `.fs-btn-primary`/`.fs-badge-primary` setam\n// `--fs-btn-color`/`--fs-badge-color` no próprio elemento dentro de\n// `@layer components`, e cascade layers ignoram especificidade — um\n// seletor mais específico em `@layer tokens` (onde vivem os blocos acima)\n// perderia mesmo assim.\n@layer overrides {\n [data-fs-brand=\"vibrant\"] .fs-btn-primary,\n [data-fs-brand=\"vibrant\"] .fs-badge-primary {\n --fs-btn-color: #{$color-black};\n --fs-badge-color: #{$color-black};\n }\n\n [data-fs-brand=\"vibrant\"] .fs-check {\n --fs-check-mark: #{$color-black};\n }\n}\n","@use \"sass:color\";\n@use \"sass:map\";\n@use \"../settings\" as *;\n@use \"../tools\" as *;\n\n// Peso (% da cor original mantida, ver color.mix()) de cada cor de estado no\n// tema escuro. O limite de cada uma é o quanto dá pra clarear em direção ao\n// branco antes de virar o texto branco/preto que color-contrast() já\n// pré-calculou para os preenchimentos sólidos (botões, badges) no tema claro\n// — passar do limite deixaria esse texto ilegível. `primary` e `danger` têm\n// texto branco no preenchimento, então clareiam pouco (clarear reduz o\n// contraste com o branco); `info` não tem margem e fica sem alteração (100%).\n// Misturas em `$method: oklch` (ver tools/_mixins.scss) — recalibrado e\n// revalidado com `npm run contrast` após a migração para OKLCH.\n@layer tokens {\n $dark-color-weights: (\n primary: 95%,\n secondary: 90%,\n success: 65%,\n warning: 65%,\n danger: 95%,\n info: 100%\n ) !default;\n\n $dark-text: color.to-space(#f1f3f4, oklch) !default;\n $dark-muted: color.to-space(#bdc1c6, oklch) !default;\n $dark-border: color.to-space(#3c4043, oklch) !default;\n $dark-surface: color.to-space(#202124, oklch) !default;\n $dark-subtle: color.to-space(#2b2c2f, oklch) !default;\n\n // Pesos de alert/feedback bg+text no escuro: validados por\n // `npm run contrast` para ≥4.5:1 (texto normal) em todas as 6 cores —\n // não abaixe sem reconferir o relatório.\n $dark-alert-bg-weight: 15%;\n $dark-alert-text-weight: 55%;\n\n [data-theme=\"dark\"],\n [data-fs-theme=\"dark\"] {\n --fs-color-text: #{rgb-fallback($dark-text)};\n --fs-color-muted: #{rgb-fallback($dark-muted)};\n --fs-color-border: #{rgb-fallback($dark-border)};\n --fs-color-surface: #{rgb-fallback($dark-surface)};\n --fs-color-subtle: #{rgb-fallback($dark-subtle)};\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 50%), 0 1px 2px rgb(0 0 0 / 40%);\n --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 55%), 0 3px 6px rgb(0 0 0 / 45%);\n --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 60%), 0 6px 12px rgb(0 0 0 / 50%);\n --fs-tooltip-bg: #{rgb-fallback($color-gray-100)};\n --fs-tooltip-text: #{rgb-fallback($color-gray-900)};\n\n @each $name, $color in $theme-colors {\n --fs-color-#{$name}: #{rgb-fallback(color.mix($color, $color-white, map.get($dark-color-weights, $name), $method: oklch))};\n --fs-alert-#{$name}-bg: #{rgb-fallback(color.mix($color, $color-gray-900, $dark-alert-bg-weight, $method: oklch))};\n --fs-alert-#{$name}-text: #{rgb-fallback(color.mix($color, $color-white, $dark-alert-text-weight, $method: oklch))};\n --fs-feedback-#{$name}-bg: #{rgb-fallback(color.mix($color, $color-gray-900, $dark-alert-bg-weight, $method: oklch))};\n }\n }\n\n @supports (color: oklch(0% 0 0)) {\n [data-theme=\"dark\"],\n [data-fs-theme=\"dark\"] {\n --fs-color-text: #{$dark-text};\n --fs-color-muted: #{$dark-muted};\n --fs-color-border: #{$dark-border};\n --fs-color-surface: #{$dark-surface};\n --fs-color-subtle: #{$dark-subtle};\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n --fs-tooltip-bg: #{$color-gray-100};\n --fs-tooltip-text: #{$color-gray-900};\n\n @each $name, $color in $theme-colors {\n --fs-color-#{$name}: #{color.mix($color, $color-white, map.get($dark-color-weights, $name), $method: oklch)};\n --fs-alert-#{$name}-bg: #{color.mix($color, $color-gray-900, $dark-alert-bg-weight, $method: oklch)};\n --fs-alert-#{$name}-text: #{color.mix($color, $color-white, $dark-alert-text-weight, $method: oklch)};\n --fs-feedback-#{$name}-bg: #{color.mix($color, $color-gray-900, $dark-alert-bg-weight, $method: oklch)};\n }\n }\n }\n\n @media (prefers-color-scheme: dark) {\n [data-fs-theme=\"auto\"] {\n --fs-color-text: #{rgb-fallback($dark-text)};\n --fs-color-muted: #{rgb-fallback($dark-muted)};\n --fs-color-border: #{rgb-fallback($dark-border)};\n --fs-color-surface: #{rgb-fallback($dark-surface)};\n --fs-color-subtle: #{rgb-fallback($dark-subtle)};\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-tooltip-bg: #{rgb-fallback($color-gray-100)};\n --fs-tooltip-text: #{rgb-fallback($color-gray-900)};\n }\n }\n\n @media (forced-colors: active) {\n :root,\n [data-theme=\"dark\"],\n [data-fs-theme=\"light\"],\n [data-fs-theme=\"dark\"],\n [data-fs-theme=\"auto\"] {\n --fs-color-border: CanvasText;\n --fs-color-text: CanvasText;\n --fs-color-surface: Canvas;\n --fs-color-subtle: Canvas;\n --fs-focus-color: Highlight;\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/tokens/_root.scss","../../scss/entries/forms-entry.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/tokens/_semantic.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/tokens/_charts.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/base/_reset.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/base/_typography.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/base/_motion.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/base/_accessibility.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-components/scss/forms/_forms.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/settings/_typography.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/tools/_mixins.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-components/scss/forms/_check-radio-switch.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-components/scss/forms/_range.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-components/scss/forms/_file-upload-advanced.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/themes/_brands.scss","file:///home/runner/work/fokus-styles/fokus-styles/packages/fokus-core/scss/themes/_dark.scss"],"names":[],"mappings":"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","file":"forms.min.css","sourcesContent":["@use \"sass:map\";\n@use \"../settings\" as *;\n@use \"../tools\" as *;\n\n// Ordem canônica das camadas: declarada uma única vez aqui porque `tokens`\n// é sempre o primeiro `@use` de cada entry point (ver scss/entries/*.scss e\n// scss/fokus.scss) — evita repetir a declaração em cada bundle.\n@layer reset, tokens, base, layout, components, utilities, overrides;\n\n@layer tokens {\n // Bloco incondicional: fallback sRGB, aplicado em todo navegador. Os\n // valores de cor aqui vêm de `rgb-fallback()` (gamut-mapeado a partir do\n // primitivo OKLCH) — ver `tools/_mixins.scss`. É sempre sobrescrito pelo\n // bloco `@supports` abaixo em navegadores com suporte a `oklch()`; um\n // `--fs-*` de cor nunca deve ser lido só daqui em código novo.\n :root {\n --fs-color-white: #{$color-white};\n --fs-color-black: #{$color-black};\n --fs-color-text: #{rgb-fallback($color-gray-900)};\n --fs-color-muted: #{rgb-fallback($color-gray-600)};\n --fs-color-border: #{rgb-fallback($color-gray-300)};\n --fs-color-surface: #{$color-white};\n --fs-color-subtle: #{rgb-fallback($color-gray-100)};\n --fs-font-sans: #{$font-family-sans};\n --fs-font-mono: #{$font-family-mono};\n --fs-font-size-md: #{$font-size-md};\n --fs-font-size-h1: #{$font-size-h1};\n --fs-font-size-h2: #{$font-size-h2};\n --fs-font-size-h3: #{$font-size-h3};\n --fs-font-size-h4: #{$font-size-h4};\n --fs-font-size-h5: #{$font-size-h5};\n --fs-font-size-h6: #{$font-size-h6};\n --fs-font-weight-semibold: #{$font-weight-semibold};\n --fs-line-height-base: #{$line-height-base};\n --fs-line-height-heading: #{$line-height-heading};\n --fs-radius-sm: #{$radius-sm};\n --fs-radius-md: #{$radius-md};\n --fs-radius-lg: #{$radius-lg};\n --fs-gutter-x: #{map.get($spacers, 4)};\n --fs-gutter-y: 0px;\n\n @each $name, $space in $spacers {\n --fs-space-#{$name}: #{$space};\n }\n\n @each $name, $z-index in $z-indexes {\n --fs-z-#{$name}: #{$z-index};\n }\n\n --fs-control-height: 38px;\n --fs-control-height-sm: 30px;\n --fs-control-height-lg: 46px;\n --fs-control-padding-x: 12px;\n --fs-control-padding-x-sm: 8px;\n --fs-control-padding-x-lg: 16px;\n --fs-focus-width: 2px;\n --fs-focus-offset: 2px;\n --fs-focus-color: var(--fs-color-primary);\n --fs-focus-ring-size: 3px;\n --fs-focus-ring-color: color-mix(in srgb, var(--fs-focus-color) 22%, transparent);\n --fs-focus-ring-alpha: 22%;\n --fs-transition-fast: 150ms;\n --fs-transition-normal: 220ms;\n --fs-motion-duration-fast: var(--fs-transition-fast);\n --fs-motion-duration-normal: var(--fs-transition-normal);\n --fs-motion-ease-standard: var(--fs-ease-standard);\n --fs-ease-standard: cubic-bezier(0.2, 0, 0, 1);\n --fs-border-width: 1px;\n --fs-disabled-opacity: 0.5;\n --fs-safe-area-top: env(safe-area-inset-top, 0px);\n --fs-safe-area-right: env(safe-area-inset-right, 0px);\n --fs-safe-area-bottom: env(safe-area-inset-bottom, 0px);\n --fs-safe-area-left: env(safe-area-inset-left, 0px);\n --fs-component-control-height: var(--fs-control-height);\n --fs-component-overlay-backdrop: rgb(0 0 0 / 55%);\n --fs-component-panel-radius: var(--fs-radius-md);\n --fs-component-panel-shadow: var(--fs-shadow-lg);\n --fs-contrast-border-width: var(--fs-border-width);\n --fs-contrast-focus-width: var(--fs-focus-width);\n\n // Referência dos limiares usados pelos utilitários `@container` (ver\n // `packages/fokus-utilities/scss/utilities/_container-queries.scss`).\n // Só informativas: a condição de um `@container` precisa de um valor\n // literal em tempo de build, não aceita `var()` — mudar aqui não\n // recalibra as regras já compiladas, só documenta os valores usados.\n @each $name, $width in $container-breakpoints {\n --fs-cq-#{$name}: #{$width};\n }\n\n --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 15%), 0 1px 2px rgb(0 0 0 / 10%);\n --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 15%), 0 3px 6px rgb(0 0 0 / 10%);\n --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 18%), 0 6px 12px rgb(0 0 0 / 12%);\n --fs-tooltip-bg: #{rgb-fallback($color-gray-900)};\n --fs-tooltip-text: #{$color-white};\n\n @each $name, $color in $theme-colors {\n --fs-color-#{$name}: #{rgb-fallback($color)};\n --fs-color-on-#{$name}: #{color-contrast($color)};\n --fs-alert-#{$name}-bg: #{rgb-fallback(tint-color($color))};\n --fs-alert-#{$name}-text: #{rgb-fallback(shade-color($color))};\n }\n\n @each $name, $bg in $theme-bg-colors {\n --fs-feedback-#{$name}-bg: #{rgb-fallback($bg)};\n }\n }\n\n // Bloco condicional: valores nativos em OKLCH. `@supports (color: oklch(0%\n // 0 0))` só passa em navegadores que entendem a função — os demais ignoram\n // o bloco inteiro e mantêm o fallback sRGB acima. Só propriedades de cor\n // entram aqui; o resto (fontes, raio, sombra, gutter) não tem equivalente\n // \"melhor\" em OKLCH e já está definido de forma incondicional.\n @supports (color: oklch(0% 0 0)) {\n :root {\n --fs-color-text: #{$color-gray-900};\n --fs-color-muted: #{$color-gray-600};\n --fs-color-border: #{$color-gray-300};\n --fs-color-subtle: #{$color-gray-100};\n --fs-tooltip-bg: #{$color-gray-900};\n\n @each $name, $color in $theme-colors {\n --fs-color-#{$name}: #{$color};\n --fs-color-on-#{$name}: #{color-contrast($color)};\n --fs-alert-#{$name}-bg: #{tint-color($color)};\n --fs-alert-#{$name}-text: #{shade-color($color)};\n }\n\n @each $name, $bg in $theme-bg-colors {\n --fs-feedback-#{$name}-bg: #{$bg};\n }\n }\n }\n\n @media (prefers-contrast: more) {\n :root {\n --fs-contrast-border-width: 2px;\n --fs-contrast-focus-width: 3px;\n --fs-focus-width: var(--fs-contrast-focus-width);\n --fs-border-width: var(--fs-contrast-border-width);\n }\n }\n}\n","@layer reset, tokens, base, layout, components, utilities, overrides;\n@layer tokens {\n :root {\n --fs-color-white: #ffffff;\n --fs-color-black: #000000;\n --fs-color-text: #1e293b;\n --fs-color-muted: #64748b;\n --fs-color-border: #e2e8f0;\n --fs-color-surface: #ffffff;\n --fs-color-subtle: #f8fafc;\n --fs-font-sans: Plus Jakarta Sans, sans-serif;\n --fs-font-mono: Source Code Pro, monospace;\n --fs-font-size-md: 0.8125rem;\n --fs-font-size-h1: 1.75rem;\n --fs-font-size-h2: 1.5rem;\n --fs-font-size-h3: 1.3125rem;\n --fs-font-size-h4: 1.125rem;\n --fs-font-size-h5: 1rem;\n --fs-font-size-h6: 0.875rem;\n --fs-font-weight-semibold: 600;\n --fs-line-height-base: 1.5;\n --fs-line-height-heading: 1.25;\n --fs-radius-sm: 4px;\n --fs-radius-md: 6px;\n --fs-radius-lg: 8px;\n --fs-gutter-x: 1.5rem;\n --fs-gutter-y: 0px;\n --fs-space-0: 0;\n --fs-space-1: 0.25rem;\n --fs-space-2: 0.5rem;\n --fs-space-3: 1rem;\n --fs-space-4: 1.5rem;\n --fs-space-5: 3rem;\n --fs-z-base: 0;\n --fs-z-dropdown: 1000;\n --fs-z-sticky: 1020;\n --fs-z-modal: 1050;\n --fs-z-offcanvas: 1060;\n --fs-z-notification: 1080;\n --fs-z-toast: 1090;\n --fs-z-tooltip: 1100;\n --fs-control-height: 38px;\n --fs-control-height-sm: 30px;\n --fs-control-height-lg: 46px;\n --fs-control-padding-x: 12px;\n --fs-control-padding-x-sm: 8px;\n --fs-control-padding-x-lg: 16px;\n --fs-focus-width: 2px;\n --fs-focus-offset: 2px;\n --fs-focus-color: var(--fs-color-primary);\n --fs-focus-ring-size: 3px;\n --fs-focus-ring-color: color-mix(in srgb, var(--fs-focus-color) 22%, transparent);\n --fs-focus-ring-alpha: 22%;\n --fs-transition-fast: 150ms;\n --fs-transition-normal: 220ms;\n --fs-motion-duration-fast: var(--fs-transition-fast);\n --fs-motion-duration-normal: var(--fs-transition-normal);\n --fs-motion-ease-standard: var(--fs-ease-standard);\n --fs-ease-standard: cubic-bezier(0.2, 0, 0, 1);\n --fs-border-width: 1px;\n --fs-disabled-opacity: 0.5;\n --fs-safe-area-top: env(safe-area-inset-top, 0px);\n --fs-safe-area-right: env(safe-area-inset-right, 0px);\n --fs-safe-area-bottom: env(safe-area-inset-bottom, 0px);\n --fs-safe-area-left: env(safe-area-inset-left, 0px);\n --fs-component-control-height: var(--fs-control-height);\n --fs-component-overlay-backdrop: rgb(0 0 0 / 55%);\n --fs-component-panel-radius: var(--fs-radius-md);\n --fs-component-panel-shadow: var(--fs-shadow-lg);\n --fs-contrast-border-width: var(--fs-border-width);\n --fs-contrast-focus-width: var(--fs-focus-width);\n --fs-cq-sm: 320px;\n --fs-cq-md: 480px;\n --fs-cq-lg: 640px;\n --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 15%), 0 1px 2px rgb(0 0 0 / 10%);\n --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 15%), 0 3px 6px rgb(0 0 0 / 10%);\n --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 18%), 0 6px 12px rgb(0 0 0 / 12%);\n --fs-tooltip-bg: #1e293b;\n --fs-tooltip-text: #ffffff;\n --fs-color-primary: #1a61e6;\n --fs-color-on-primary: #ffffff;\n --fs-alert-primary-bg: rgb(220.3846532222, 232.689549371, 254.1042117072);\n --fs-alert-primary-text: rgb(4.2540793692, 32.6552622518, 88.5748738661);\n --fs-color-secondary: #64748b;\n --fs-color-on-secondary: #ffffff;\n --fs-alert-secondary-bg: rgb(230.2895610064, 233.0325853352, 236.9919508609);\n --fs-alert-secondary-text: rgb(33.9166068747, 40.6437781967, 50.3140869721);\n --fs-color-success: rgb(13, 209, 87);\n --fs-color-on-success: #000000;\n --fs-alert-success-bg: rgb(228.9046733915, 249.1514320752, 230.8709345684);\n --fs-alert-success-text: rgb(1.6574790861, 79.745461506, 28.4507801755);\n --fs-color-warning: #fab633;\n --fs-color-on-warning: #000000;\n --fs-alert-warning-bg: rgb(254.9170612621, 244.6528756631, 228.9710928247);\n --fs-alert-warning-text: rgb(96.9838380187, 68.3933599001, 13.3146447009);\n --fs-color-danger: #cc3335;\n --fs-color-on-danger: #ffffff;\n --fs-alert-danger-bg: rgb(251.9225977632, 226.389403069, 223.5618211362);\n --fs-alert-danger-text: rgb(77.6432204678, 13.3146447009, 14.1555411162);\n --fs-color-info: #5e5cc7;\n --fs-color-on-info: #ffffff;\n --fs-alert-info-bg: rgb(228.2395257626, 230.4806192824, 248.3934544766);\n --fs-alert-info-text: rgb(31.3939176289, 30.5530212136, 75.5409794297);\n --fs-feedback-primary-bg: #e6f0ff;\n --fs-feedback-secondary-bg: #f8fafc;\n --fs-feedback-success-bg: #e6fff2;\n --fs-feedback-warning-bg: #fff9e6;\n --fs-feedback-danger-bg: #fff2f3;\n --fs-feedback-info-bg: #f2f2ff;\n }\n @supports (color: oklch(0% 0 0deg)) {\n :root {\n --fs-color-text: oklch(27.9495237712% 0.0368481257 260.0309873929deg);\n --fs-color-muted: oklch(55.4391007662% 0.040717043 257.4166191214deg);\n --fs-color-border: oklch(92.876126719% 0.0126187744 255.5078854448deg);\n --fs-color-subtle: oklch(98.4151869501% 0.0034126992 247.8577745944deg);\n --fs-tooltip-bg: oklch(27.9495237712% 0.0368481257 260.0309873929deg);\n --fs-color-primary: oklch(53.5630074284% 0.2132145174 261.6264320248deg);\n --fs-color-on-primary: #ffffff;\n --fs-alert-primary-bg: oklch(93.0344511143% 0.0319821776 261.6264320248deg);\n --fs-alert-primary-text: oklch(26.7815037142% 0.1066072587 261.6264320248deg);\n --fs-color-secondary: oklch(55.4391007662% 0.040717043 257.4166191214deg);\n --fs-color-on-secondary: #ffffff;\n --fs-alert-secondary-bg: oklch(93.3158651149% 0.0061075564 257.4166191214deg);\n --fs-alert-secondary-text: oklch(27.7195503831% 0.0203585215 257.4166191214deg);\n --fs-color-success: oklch(75.151587899% 0.2146126169 148.125846236deg);\n --fs-color-on-success: #000000;\n --fs-alert-success-bg: oklch(96.2727381849% 0.0321918925 148.125846236deg);\n --fs-alert-success-text: oklch(37.5757939495% 0.1073063085 148.125846236deg);\n --fs-color-warning: oklch(81.9510815663% 0.1562613975 78.6575213966deg);\n --fs-color-on-warning: #000000;\n --fs-alert-warning-bg: oklch(97.2926622349% 0.0234392096 78.6575213966deg);\n --fs-alert-warning-text: oklch(40.9755407832% 0.0781306987 78.6575213966deg);\n --fs-color-danger: oklch(55.9653139301% 0.1897270855 25.2407937498deg);\n --fs-color-on-danger: #ffffff;\n --fs-alert-danger-bg: oklch(93.3947970895% 0.0284590628 25.2407937498deg);\n --fs-alert-danger-text: oklch(27.982656965% 0.0948635427 25.2407937498deg);\n --fs-color-info: oklch(53.3359780029% 0.1620131129 280.2231949375deg);\n --fs-color-on-info: #ffffff;\n --fs-alert-info-bg: oklch(93.0003967004% 0.0243019669 280.2231949375deg);\n --fs-alert-info-text: oklch(26.6679890014% 0.0810065564 280.2231949375deg);\n --fs-feedback-primary-bg: oklch(95.2067827456% 0.0228899025 258.359342143deg);\n --fs-feedback-secondary-bg: oklch(98.4151869501% 0.0034126992 247.8577745944deg);\n --fs-feedback-success-bg: oklch(97.8305614459% 0.0311593614 163.2740567608deg);\n --fs-feedback-warning-bg: oklch(98.17094418% 0.025708244 92.3886876566deg);\n --fs-feedback-danger-bg: oklch(97.1603097552% 0.0140720277 12.0135639679deg);\n --fs-feedback-info-bg: oklch(96.4918490239% 0.0173174767 286.0707018324deg);\n }\n }\n @media (prefers-contrast: more) {\n :root {\n --fs-contrast-border-width: 2px;\n --fs-contrast-focus-width: 3px;\n --fs-focus-width: var(--fs-contrast-focus-width);\n --fs-border-width: var(--fs-contrast-border-width);\n }\n }\n}\n@layer tokens {\n :root {\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n }\n}\n@layer tokens {\n :root {\n --fs-chart-series-1: var(--fs-color-primary);\n --fs-chart-series-2: var(--fs-color-success);\n --fs-chart-series-3: var(--fs-color-warning);\n --fs-chart-series-4: var(--fs-color-danger);\n --fs-chart-series-5: var(--fs-color-info);\n --fs-chart-series-6: var(--fs-color-secondary);\n --fs-chart-grid: var(--fs-color-border);\n --fs-chart-axis: var(--fs-color-muted);\n --fs-chart-tooltip-bg: var(--fs-tooltip-bg);\n --fs-chart-tooltip-text: var(--fs-tooltip-text);\n }\n}\n@layer reset {\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n html {\n line-height: var(--fs-line-height-base);\n text-size-adjust: 100%;\n }\n body {\n margin: 0;\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n }\n [hidden] {\n display: none !important;\n }\n}\n@layer base {\n body,\n button,\n input,\n select,\n textarea {\n font-family: var(--fs-font-sans);\n font-size: var(--fs-font-size-md);\n }\n code,\n kbd,\n pre,\n samp {\n font-family: var(--fs-font-mono);\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n font-weight: var(--fs-font-weight-semibold);\n line-height: var(--fs-line-height-heading);\n }\n h1 {\n font-size: var(--fs-font-size-h1);\n }\n h2 {\n font-size: var(--fs-font-size-h2);\n }\n h3 {\n font-size: var(--fs-font-size-h3);\n }\n h4 {\n font-size: var(--fs-font-size-h4);\n }\n h5 {\n font-size: var(--fs-font-size-h5);\n }\n h6 {\n font-size: var(--fs-font-size-h6);\n }\n}\n@layer base {\n @media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n scroll-behavior: auto !important;\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n }\n .fs-spinner,\n .fs-progress-bar-animated,\n .fs-progress-indeterminate .fs-progress-bar {\n animation-duration: 1.5s !important;\n animation-iteration-count: infinite !important;\n }\n }\n}\n/* stylelint-disable property-no-deprecated, selector-not-notation */\n@layer reset {\n :focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-focus-color);\n outline-offset: var(--fs-focus-offset);\n }\n @media (forced-colors: active) {\n :focus-visible {\n outline: 2px solid CanvasText;\n outline-offset: 2px;\n }\n button,\n [role=button],\n input,\n select,\n textarea,\n .fs-btn {\n border-color: ButtonText;\n forced-color-adjust: auto;\n }\n .fs-u-focus-ring:focus-visible {\n outline: 3px solid Highlight;\n }\n }\n}\n@layer utilities {\n .fs-u-visually-hidden:not(:focus):not(:focus-within),\n .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip-path: inset(50%) !important;\n white-space: nowrap !important;\n border: 0 !important;\n }\n .fs-skip-link {\n position: fixed;\n z-index: 1000;\n inset-block-start: var(--fs-space-2);\n inset-inline-start: var(--fs-space-2);\n transform: translateY(-200%);\n padding: var(--fs-space-2) var(--fs-space-3);\n color: var(--fs-color-on-primary);\n background: var(--fs-color-primary);\n border-radius: var(--fs-radius-sm);\n }\n .fs-skip-link:focus {\n transform: translateY(0);\n }\n}\n@layer components {\n .fs-form-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: flex-start;\n gap: 12px 16px;\n width: 100%;\n }\n .fs-form-col {\n display: flex;\n flex: 1 1 240px;\n flex-direction: column;\n align-items: stretch;\n min-width: 0;\n gap: 4px;\n }\n .fs-form-label {\n width: auto;\n margin: 0;\n color: var(--fs-color-muted);\n font-size: 0.75rem;\n font-weight: 400;\n }\n .fs-form-text {\n width: auto;\n margin: 0;\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n font-weight: 400;\n }\n .fs-form-text,\n .fs-valid-feedback,\n .fs-invalid-feedback {\n min-height: 1.25rem;\n padding: 3px 8px;\n border-radius: var(--fs-radius-sm);\n }\n .fs-form-text {\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n font-weight: 400;\n }\n .fs-valid-feedback,\n .fs-invalid-feedback {\n display: none;\n font-size: 0.6875rem;\n font-weight: 400;\n }\n .fs-valid-feedback {\n color: var(--fs-alert-success-text);\n background-color: var(--fs-feedback-success-bg);\n }\n .fs-invalid-feedback {\n color: var(--fs-alert-danger-text);\n background-color: var(--fs-feedback-danger-bg);\n }\n .is-valid ~ .fs-valid-feedback,\n .is-invalid ~ .fs-invalid-feedback {\n display: block;\n }\n .fs-form-control {\n width: 100%;\n min-width: 0;\n height: var(--fs-control-height);\n padding: 0 7px;\n border: var(--fs-border-width) solid var(--fs-color-border-default);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n font-size: 0.8125rem;\n font-weight: 500;\n }\n .fs-form-control::placeholder {\n color: var(--fs-color-muted);\n }\n .fs-form-control:focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-color-primary);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);\n }\n .fs-form-control:disabled {\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n opacity: var(--fs-disabled-opacity);\n pointer-events: none;\n }\n .fs-form-control:read-only {\n background-color: var(--fs-color-subtle);\n cursor: default;\n }\n .fs-floating-label {\n position: relative;\n }\n .fs-floating-label > .fs-form-control {\n height: 56px;\n padding-top: 20px;\n }\n .fs-floating-label > .fs-form-label {\n position: absolute;\n z-index: 1;\n top: 8px;\n left: 8px;\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n pointer-events: none;\n }\n .fs-form-control[aria-invalid=true],\n .fs-was-validated .fs-form-control:invalid {\n border-color: var(--fs-color-danger);\n }\n .fs-form-control[aria-invalid=false],\n .fs-was-validated .fs-form-control:valid {\n border-color: var(--fs-color-success);\n }\n .fs-form-control-sm {\n height: var(--fs-control-height-sm);\n font-size: 0.6875rem;\n }\n .fs-form-control-lg {\n height: var(--fs-control-height-lg);\n font-size: 0.8125rem;\n }\n .fs-form-size-sm {\n width: 120px;\n }\n .fs-form-size-md {\n width: 180px;\n }\n .fs-form-size-lg {\n width: 240px;\n }\n .fs-form-size-xl {\n width: 300px;\n }\n .fs-form-size-xxl {\n width: 360px;\n }\n .fs-form-control.is-valid {\n border-color: var(--fs-color-success);\n }\n .fs-form-control.is-valid:focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-color-success);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-success) 22%, transparent);\n }\n .fs-form-control.is-invalid {\n border-color: var(--fs-color-danger);\n }\n .fs-form-control.is-invalid:focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-color-danger);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-danger);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-danger) 22%, transparent);\n }\n .fs-form-select {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: var(--fs-control-height);\n padding: 0 7px;\n border: var(--fs-border-width) solid var(--fs-color-border-default);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n font-size: 0.8125rem;\n font-weight: 500;\n text-align: left;\n cursor: pointer;\n }\n .fs-form-select::after {\n flex-shrink: 0;\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 8px;\n content: \"\";\n border-top: 5px solid;\n border-right: 5px solid transparent;\n border-left: 5px solid transparent;\n }\n .fs-form-select:focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-color-primary);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);\n }\n .fs-form-select:disabled {\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n opacity: 0.4;\n pointer-events: none;\n }\n .fs-form-select-sm {\n height: var(--fs-control-height-sm);\n font-size: 0.6875rem;\n }\n .fs-form-select-lg {\n height: var(--fs-control-height-lg);\n font-size: 0.8125rem;\n }\n .fs-file-upload {\n position: relative;\n display: inline-flex;\n }\n .fs-file-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n .fs-file-label {\n display: inline-flex;\n align-items: center;\n height: 38px;\n padding: 0 14px;\n border: 1px solid var(--fs-color-border);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-subtle);\n font-size: 0.8125rem;\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n transition: filter var(--fs-transition-fast) var(--fs-ease-standard);\n }\n .fs-file-label:hover {\n filter: brightness(0.96);\n }\n .fs-file-input:focus-visible + .fs-file-label {\n outline: var(--fs-focus-width) solid var(--fs-color-primary);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);\n }\n .fs-file-input:disabled + .fs-file-label {\n color: var(--fs-color-muted);\n opacity: var(--fs-disabled-opacity);\n pointer-events: none;\n cursor: default;\n }\n .fs-file-label-sm {\n height: 30px;\n padding: 0 10px;\n font-size: 0.6875rem;\n }\n .fs-file-label-lg {\n height: 46px;\n padding: 0 18px;\n font-size: 1rem;\n }\n .fs-file-label.is-dragover {\n border-color: var(--fs-color-primary);\n background-color: var(--fs-color-subtle);\n }\n .fs-file-label-dropzone {\n flex-direction: column;\n gap: 4px;\n width: 100%;\n height: auto;\n padding: 32px 16px;\n border-style: dashed;\n border-width: 2px;\n font-weight: 400;\n text-align: center;\n }\n .fs-file-label-dropzone .fs-file-dropzone-hint {\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n font-weight: 400;\n }\n .fs-input-group {\n display: flex;\n align-items: stretch;\n width: 100%;\n }\n .fs-input-group > .fs-form-control,\n .fs-input-group > .fs-form-select {\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n }\n .fs-input-group-text {\n display: flex;\n align-items: center;\n padding: 0 12px;\n border: 1px solid var(--fs-color-border);\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n font-size: 0.8125rem;\n font-weight: 500;\n white-space: nowrap;\n }\n .fs-input-group > :not(:first-child) {\n margin-left: -1px;\n }\n .fs-input-group > :focus-visible,\n .fs-input-group > :focus-within {\n position: relative;\n z-index: 1;\n }\n .fs-input-group > * {\n border-radius: 0;\n }\n .fs-input-group > :first-child {\n border-top-left-radius: var(--fs-radius-sm);\n border-bottom-left-radius: var(--fs-radius-sm);\n }\n .fs-input-group > :last-child {\n border-top-right-radius: var(--fs-radius-sm);\n border-bottom-right-radius: var(--fs-radius-sm);\n }\n .fs-input-group-sm > .fs-form-control,\n .fs-input-group-sm > .fs-form-select,\n .fs-input-group-sm > .fs-input-group-text {\n height: 30px;\n padding: 0 8px;\n font-size: 0.6875rem;\n }\n .fs-input-group-lg > .fs-form-control,\n .fs-input-group-lg > .fs-form-select,\n .fs-input-group-lg > .fs-input-group-text {\n height: 46px;\n padding: 0 16px;\n font-size: 1rem;\n }\n}\n@layer components {\n .fs-check,\n .fs-radio,\n .fs-switch {\n display: inline-flex;\n align-items: center;\n }\n .fs-check {\n --fs-check-mark: var(--fs-color-on-primary);\n }\n .fs-check-input,\n .fs-radio-input,\n .fs-switch-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n .fs-check-label,\n .fs-radio-label,\n .fs-switch-label {\n position: relative;\n display: inline-flex;\n align-items: center;\n min-height: 20px;\n padding-left: 28px;\n color: var(--fs-color-text);\n font-size: 0.8125rem;\n cursor: pointer;\n user-select: none;\n }\n .fs-check-label::before,\n .fs-radio-label::before,\n .fs-switch-label::before {\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: 1px solid var(--fs-color-border);\n background-color: var(--fs-color-surface);\n content: \"\";\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n }\n .fs-check-label::before,\n .fs-radio-label::before {\n width: 18px;\n height: 18px;\n }\n .fs-check-label::before {\n border: 2px solid var(--fs-color-primary);\n border-radius: 0;\n }\n .fs-radio-label::before {\n border-radius: 50%;\n }\n .fs-check-label::after {\n position: absolute;\n left: 4px;\n width: 9px;\n height: 5px;\n content: \"\";\n opacity: 0;\n border-bottom: 2px solid var(--fs-check-mark);\n border-left: 2px solid var(--fs-check-mark);\n transform: translateY(-1px) rotate(-45deg);\n transition: opacity 0.1s ease-in-out;\n }\n .fs-radio-label::after {\n position: absolute;\n left: 5px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n content: \"\";\n opacity: 0;\n background-color: var(--fs-color-on-primary);\n transition: opacity 0.1s ease-in-out;\n }\n .fs-check-input:checked + .fs-check-label::before,\n .fs-radio-input:checked + .fs-radio-label::before {\n background-color: var(--fs-color-primary);\n border-color: var(--fs-color-primary);\n }\n .fs-check-input:checked + .fs-check-label::after,\n .fs-radio-input:checked + .fs-radio-label::after {\n opacity: 1;\n }\n .fs-check-input:not(:checked, :indeterminate, :disabled, .is-invalid) + .fs-check-label:hover::before {\n background-color: color-mix(in srgb, var(--fs-color-primary) 10%, transparent);\n }\n .fs-check-input:not(:disabled, :indeterminate, .is-invalid) + .fs-check-label:active::before {\n background-color: color-mix(in srgb, var(--fs-color-primary) 86%, var(--fs-color-black));\n border-color: var(--fs-color-primary);\n }\n .fs-check-input:checked:not(:disabled, .is-invalid) + .fs-check-label:active::after {\n transform: translateY(-1px) rotate(-45deg) scale(0.9);\n }\n .fs-switch-label {\n padding-left: 44px;\n }\n .fs-switch-label::before {\n width: 36px;\n height: 20px;\n border-radius: var(--fs-radius-md);\n }\n .fs-switch-label::after {\n position: absolute;\n left: 2px;\n width: 16px;\n height: 14px;\n border-radius: var(--fs-radius-sm);\n content: \"\";\n background-color: var(--fs-color-border);\n transition: left 0.15s ease-in-out, background-color 0.15s ease-in-out;\n }\n .fs-switch-input:checked + .fs-switch-label::before {\n background-color: var(--fs-color-primary);\n border-color: var(--fs-color-primary);\n }\n .fs-switch-input:checked + .fs-switch-label::after {\n left: 18px;\n background-color: var(--fs-color-on-primary);\n }\n .fs-check-input:focus-visible + .fs-check-label::before,\n .fs-radio-input:focus-visible + .fs-radio-label::before,\n .fs-switch-input:focus-visible + .fs-switch-label::before {\n outline: var(--fs-focus-width) solid var(--fs-color-primary);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-color-primary) 22%, transparent);\n }\n .fs-radio-input:disabled + .fs-radio-label,\n .fs-switch-input:disabled + .fs-switch-label {\n opacity: 0.5;\n pointer-events: none;\n }\n .fs-check-input:disabled + .fs-check-label {\n color: var(--fs-color-muted);\n opacity: 1;\n pointer-events: none;\n }\n .fs-check-input:disabled:not(:checked, :indeterminate) + .fs-check-label::before {\n border-color: var(--fs-color-border);\n background-color: var(--fs-color-subtle);\n }\n .fs-check-input:disabled:checked + .fs-check-label::before {\n border-color: color-mix(in srgb, var(--fs-color-primary) 55%, var(--fs-color-border));\n background-color: color-mix(in srgb, var(--fs-color-primary) 45%, var(--fs-color-subtle));\n }\n .fs-check-input:disabled:checked + .fs-check-label::after {\n opacity: 0.72;\n }\n .fs-radio-input.is-valid + .fs-radio-label::before {\n border-color: var(--fs-color-success);\n }\n .fs-check-input.is-invalid + .fs-check-label::before,\n .fs-radio-input.is-invalid + .fs-radio-label::before {\n border-color: var(--fs-color-danger);\n }\n .fs-check-sm .fs-check-label,\n .fs-radio-sm .fs-radio-label {\n min-height: 16px;\n padding-left: 24px;\n font-size: 0.75rem;\n }\n .fs-check-sm .fs-check-label::before,\n .fs-radio-sm .fs-radio-label::before {\n width: 15px;\n height: 15px;\n }\n .fs-check-sm .fs-check-label::after {\n left: 3px;\n width: 8px;\n height: 4px;\n }\n .fs-radio-sm .fs-radio-label::after {\n left: 4px;\n width: 7px;\n height: 7px;\n }\n .fs-check-lg .fs-check-label,\n .fs-radio-lg .fs-radio-label {\n min-height: 24px;\n padding-left: 34px;\n font-size: 1rem;\n }\n .fs-check-lg .fs-check-label::before,\n .fs-radio-lg .fs-radio-label::before {\n width: 22px;\n height: 22px;\n }\n .fs-check-lg .fs-check-label::after {\n left: 5px;\n width: 11px;\n height: 6px;\n }\n .fs-radio-lg .fs-radio-label::after {\n left: 6px;\n width: 10px;\n height: 10px;\n }\n .fs-switch-sm .fs-switch-label {\n min-height: 16px;\n padding-left: 38px;\n font-size: 0.75rem;\n }\n .fs-switch-sm .fs-switch-label::before {\n width: 30px;\n height: 16px;\n }\n .fs-switch-sm .fs-switch-label::after {\n width: 12px;\n height: 10px;\n }\n .fs-switch-sm .fs-switch-input:checked + .fs-switch-label::after {\n left: 16px;\n }\n .fs-switch-lg .fs-switch-label {\n min-height: 26px;\n padding-left: 52px;\n font-size: 1rem;\n }\n .fs-switch-lg .fs-switch-label::before {\n width: 44px;\n height: 24px;\n }\n .fs-switch-lg .fs-switch-label::after {\n width: 20px;\n height: 18px;\n }\n .fs-switch-lg .fs-switch-input:checked + .fs-switch-label::after {\n left: 22px;\n }\n .fs-check-input:indeterminate + .fs-check-label::before {\n border: 2px dashed var(--fs-color-primary);\n background-color: var(--fs-color-surface);\n }\n .fs-check-input:indeterminate + .fs-check-label::after {\n left: 4px;\n width: 10px;\n height: 0;\n opacity: 1;\n border-bottom: 2px solid var(--fs-color-primary);\n border-left: 0;\n transform: translateY(3px) rotate(0deg);\n }\n .fs-check-sm .fs-check-input:indeterminate + .fs-check-label::after {\n left: 3px;\n width: 8px;\n }\n .fs-check-lg .fs-check-input:indeterminate + .fs-check-label::after {\n left: 5px;\n width: 12px;\n }\n .fs-check-input.is-invalid + .fs-check-label::before {\n background-color: var(--fs-color-danger);\n }\n .fs-check-input.is-invalid + .fs-check-label::after {\n top: 6px;\n left: 5px;\n width: 8px;\n height: 8px;\n opacity: 1;\n border: 0;\n background-image: linear-gradient(45deg, transparent 42%, #ffffff 42% 58%, transparent 58%), linear-gradient(-45deg, transparent 42%, #ffffff 42% 58%, transparent 58%);\n transform: none;\n }\n .fs-check-sm .fs-check-input.is-invalid + .fs-check-label::after {\n top: 5px;\n left: 4px;\n width: 7px;\n height: 7px;\n }\n .fs-check-lg .fs-check-input.is-invalid + .fs-check-label::after {\n top: 6px;\n left: 6px;\n width: 10px;\n height: 10px;\n }\n}\n@layer components {\n .fs-form-range {\n --fs-range-track-height: 6px;\n --fs-range-track-color: var(--fs-color-border);\n --fs-range-fill-color: var(--fs-color-primary);\n --fs-range-thumb-size: 18px;\n --fs-range-thumb-color: var(--fs-color-surface);\n --fs-range-thumb-border-color: var(--fs-color-primary);\n --fs-range-percent: 0%;\n width: 100%;\n height: var(--fs-range-thumb-size);\n padding: 0;\n background: transparent;\n appearance: none;\n cursor: pointer;\n }\n .fs-form-range::-webkit-slider-runnable-track {\n height: var(--fs-range-track-height);\n border-radius: var(--fs-radius-sm);\n background: linear-gradient(to right, var(--fs-range-fill-color) var(--fs-range-percent), var(--fs-range-track-color) var(--fs-range-percent));\n }\n .fs-form-range::-moz-range-track {\n height: var(--fs-range-track-height);\n border-radius: var(--fs-radius-sm);\n background: linear-gradient(to right, var(--fs-range-fill-color) var(--fs-range-percent), var(--fs-range-track-color) var(--fs-range-percent));\n }\n .fs-form-range::-webkit-slider-thumb {\n width: var(--fs-range-thumb-size);\n height: var(--fs-range-thumb-size);\n margin-top: calc((var(--fs-range-track-height) - var(--fs-range-thumb-size)) / 2);\n border: 2px solid var(--fs-range-thumb-border-color);\n border-radius: 50%;\n background-color: var(--fs-range-thumb-color);\n appearance: none;\n cursor: pointer;\n }\n .fs-form-range::-moz-range-thumb {\n width: calc(var(--fs-range-thumb-size) - 4px);\n height: calc(var(--fs-range-thumb-size) - 4px);\n border: 2px solid var(--fs-range-thumb-border-color);\n border-radius: 50%;\n background-color: var(--fs-range-thumb-color);\n cursor: pointer;\n }\n .fs-form-range:focus-visible::-webkit-slider-thumb {\n outline: var(--fs-focus-width) solid var(--fs-range-thumb-border-color);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-range-thumb-border-color);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-range-thumb-border-color) 22%, transparent);\n }\n .fs-form-range:focus-visible::-moz-range-thumb {\n outline: var(--fs-focus-width) solid var(--fs-range-thumb-border-color);\n outline-offset: var(--fs-focus-offset);\n border-color: var(--fs-range-thumb-border-color);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--fs-range-thumb-border-color) 22%, transparent);\n }\n .fs-form-range:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n .fs-form-range:disabled::-webkit-slider-thumb {\n cursor: not-allowed;\n }\n .fs-form-range:disabled::-moz-range-thumb {\n cursor: not-allowed;\n }\n .fs-range-output {\n display: inline-block;\n min-width: 2.5em;\n color: var(--fs-color-text);\n font-size: 0.75rem;\n font-weight: 500;\n text-align: center;\n }\n}\n@layer components {\n .fs-file-upload-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n margin-top: 12px;\n padding: 0;\n list-style: none;\n }\n .fs-file-upload-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 12px;\n border: 1px solid var(--fs-color-border);\n border-radius: var(--fs-radius-sm);\n background-color: var(--fs-color-surface);\n }\n .fs-file-upload-thumb {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: var(--fs-radius-sm);\n background-color: var(--fs-color-subtle);\n color: var(--fs-color-muted);\n }\n .fs-file-upload-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n .fs-file-upload-info {\n flex: 1;\n min-width: 0;\n }\n .fs-file-upload-name {\n margin: 0;\n color: var(--fs-color-text);\n font-size: 0.75rem;\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .fs-file-upload-size {\n margin: 0 0 4px;\n color: var(--fs-color-muted);\n font-size: 0.6875rem;\n }\n .fs-file-upload-item.is-error .fs-file-upload-size {\n color: var(--fs-alert-danger-text);\n }\n .fs-file-upload-remove {\n flex-shrink: 0;\n }\n}\n@layer tokens {\n [data-fs-brand=violet] {\n --fs-color-primary: #6d28d9;\n --fs-alert-primary-bg: rgb(229.8834406263, 225.8717327657, 252.5458384302);\n --fs-alert-primary-text: rgb(37.7006407433, 8.7385189481, 83.109047167);\n --fs-feedback-primary-bg: rgb(229.8834406263, 225.8717327657, 252.5458384302);\n }\n [data-fs-brand=violet][data-theme=dark],\n [data-theme=dark] [data-fs-brand=violet] {\n --fs-color-primary: rgb(114.6495158739, 57.1165361442, 219.9746158745);\n --fs-alert-primary-bg: rgb(31.4819726714, 47.0564006856, 82.6607876597);\n --fs-alert-primary-text: rgb(167.4962913963, 147.746130571, 240.0249534535);\n --fs-feedback-primary-bg: rgb(31.4819726714, 47.0564006856, 82.6607876597);\n }\n @supports (color: oklch(0% 0 0deg)) {\n [data-fs-brand=violet] {\n --fs-color-primary: oklch(49.0666497236% 0.2412317343 292.5809393311deg);\n --fs-alert-primary-bg: oklch(92.3599974585% 0.0361847601 292.5809393311deg);\n --fs-alert-primary-text: oklch(24.5333248618% 0.1206158672 292.5809393311deg);\n --fs-feedback-primary-bg: oklch(92.3599974585% 0.0361847601 292.5809393311deg);\n }\n [data-fs-brand=violet][data-theme=dark],\n [data-theme=dark] [data-fs-brand=violet] {\n --fs-color-primary: oklch(51.6133172374% 0.2291701476 292.5809393311deg);\n --fs-alert-primary-bg: oklch(31.117092664% 0.067505667 264.9134801836deg);\n --fs-alert-primary-text: oklch(71.986657348% 0.1326774539 292.5809393311deg);\n --fs-feedback-primary-bg: oklch(31.117092664% 0.067505667 264.9134801836deg);\n }\n }\n [data-fs-brand=corporate] {\n --fs-color-primary: #1d4e89;\n --fs-alert-primary-bg: rgb(219.2237954153, 227.2186121739, 237.6990809983);\n --fs-alert-primary-text: rgb(5.0598830676, 24.6667463069, 49.4731905568);\n --fs-feedback-primary-bg: rgb(219.2237954153, 227.2186121739, 237.6990809983);\n }\n [data-fs-brand=corporate][data-theme=dark],\n [data-theme=dark] [data-fs-brand=corporate] {\n --fs-color-primary: rgb(40.8593466225, 86.5224214637, 143.0926598584);\n --fs-alert-primary-bg: rgb(31.2586947979, 46.3186220749, 70.1321749545);\n --fs-alert-primary-text: rgb(127.9940036809, 155.4045223568, 190.9765129762);\n --fs-feedback-primary-bg: rgb(31.2586947979, 46.3186220749, 70.1321749545);\n }\n [data-fs-brand=vibrant] {\n --fs-color-primary: #f2542d;\n --fs-alert-primary-bg: rgb(255, 231.3637253432, 224.6456124112);\n --fs-alert-primary-text: rgb(93.6202523577, 27.1894355526, 10.7919554552);\n --fs-feedback-primary-bg: rgb(255, 231.3637253432, 224.6456124112);\n }\n [data-fs-brand=vibrant][data-theme=dark],\n [data-theme=dark] [data-fs-brand=vibrant] {\n --fs-color-primary: rgb(244.0763687777, 94.774513804, 58.7750761343);\n --fs-alert-primary-bg: rgb(48.9487024594, 50.7990197305, 85.9119190034);\n --fs-alert-primary-text: rgb(255, 166.953251087, 144.6609410048);\n --fs-feedback-primary-bg: rgb(48.9487024594, 50.7990197305, 85.9119190034);\n }\n @supports (color: oklch(0% 0 0deg)) {\n [data-fs-brand=corporate] {\n --fs-color-primary: oklch(42.3377990386% 0.1112359961 255.1073474093deg);\n --fs-alert-primary-bg: oklch(91.3506698558% 0.0166853994 255.1073474093deg);\n --fs-alert-primary-text: oklch(21.1688995193% 0.055617998 255.1073474093deg);\n --fs-feedback-primary-bg: oklch(91.3506698558% 0.0166853994 255.1073474093deg);\n }\n [data-fs-brand=corporate][data-theme=dark],\n [data-theme=dark] [data-fs-brand=corporate] {\n --fs-color-primary: oklch(45.2209090867% 0.1056741963 255.1073474093deg);\n --fs-alert-primary-bg: oklch(30.1077650613% 0.0480063062 259.2924413953deg);\n --fs-alert-primary-text: oklch(68.2857894712% 0.0611797979 255.1073474093deg);\n --fs-feedback-primary-bg: oklch(30.1077650613% 0.0480063062 259.2924413953deg);\n }\n [data-fs-brand=vibrant] {\n --fs-color-primary: oklch(65.5786741493% 0.2007639921 34.7814711243deg);\n --fs-alert-primary-bg: oklch(94.8368011224% 0.0301145988 34.7814711243deg);\n --fs-alert-primary-text: oklch(32.7893370747% 0.1003819961 34.7814711243deg);\n --fs-feedback-primary-bg: oklch(94.8368011224% 0.0301145988 34.7814711243deg);\n }\n [data-fs-brand=vibrant][data-theme=dark],\n [data-theme=dark] [data-fs-brand=vibrant] {\n --fs-color-primary: oklch(67.2997404419% 0.1907257925 34.7814711243deg);\n --fs-alert-primary-bg: oklch(33.5938963279% 0.0614355056 280.2435599526deg);\n --fs-alert-primary-text: oklch(81.0682707821% 0.1104201957 34.7814711243deg);\n --fs-feedback-primary-bg: oklch(33.5938963279% 0.0614355056 280.2435599526deg);\n }\n }\n}\n@layer overrides {\n [data-fs-brand=vibrant] .fs-btn-primary,\n [data-fs-brand=vibrant] .fs-badge-primary {\n --fs-btn-color: #000000;\n --fs-badge-color: #000000;\n }\n [data-fs-brand=vibrant] .fs-check {\n --fs-check-mark: #000000;\n }\n}\n@layer tokens {\n [data-theme=dark],\n [data-fs-theme=dark] {\n --fs-color-text: #f1f3f4;\n --fs-color-muted: #bdc1c6;\n --fs-color-border: #3c4043;\n --fs-color-surface: #202124;\n --fs-color-subtle: #2b2c2f;\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 50%), 0 1px 2px rgb(0 0 0 / 40%);\n --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 55%), 0 3px 6px rgb(0 0 0 / 45%);\n --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 60%), 0 6px 12px rgb(0 0 0 / 50%);\n --fs-tooltip-bg: #f8fafc;\n --fs-tooltip-text: #1e293b;\n --fs-color-primary: rgb(39.8728684152, 106.2372587275, 232.1894887664);\n --fs-alert-primary-bg: rgb(30.765779113, 49.9974662348, 82.3021425489);\n --fs-alert-primary-text: rgb(130.6636212695, 172.0850768824, 246.4419684583);\n --fs-feedback-primary-bg: rgb(30.765779113, 49.9974662348, 82.3021425489);\n --fs-color-secondary: rgb(114.3557068426, 129.039220146, 150.1520317181);\n --fs-alert-secondary-bg: rgb(39.6548148226, 51.4270943358, 70.2648514061);\n --fs-alert-secondary-text: rgb(166.7597509121, 176.2809684237, 189.9919576187);\n --fs-feedback-secondary-bg: rgb(39.6548148226, 51.4270943358, 70.2648514061);\n --fs-color-success: rgb(134.4501166043, 226.9563331209, 149.6185042518);\n --fs-alert-success-bg: rgb(24.8621518491, 61.9088085702, 89.0318819222);\n --fs-alert-success-text: rgb(155.0475916512, 231.7231823866, 166.1609492581);\n --fs-feedback-success-bg: rgb(24.8621518491, 61.9088085702, 89.0318819222);\n --fs-color-warning: rgb(252.9400238762, 208.7461261831, 137.9221837268);\n --fs-alert-warning-bg: rgb(59.1359779173, 56.6792370273, 88.6687774507);\n --fs-alert-warning-text: rgb(253.5439861058, 216.1213263099, 157.1705651606);\n --fs-feedback-warning-bg: rgb(59.1359779173, 56.6792370273, 88.6687774507);\n --fs-color-danger: rgb(208.1189955268, 64.9740184262, 63.4302936954);\n --fs-alert-danger-bg: rgb(44.6823973866, 47.5125073063, 81.2083778204);\n --fs-alert-danger-text: rgb(235.4050745756, 149.9650253478, 142.4924034553);\n --fs-feedback-danger-bg: rgb(44.6823973866, 47.5125073063, 81.2083778204);\n --fs-color-info: #5e5cc7;\n --fs-alert-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);\n --fs-alert-info-text: rgb(160.628671266, 165.881962789, 227.610600335);\n --fs-feedback-info-bg: rgb(35.0058091619, 49.6887857769, 78.5757788254);\n }\n @supports (color: oklch(0% 0 0deg)) {\n [data-theme=dark],\n [data-fs-theme=dark] {\n --fs-color-text: oklch(96.2913383165% 0.002529697 228.7848682695deg);\n --fs-color-muted: oklch(80.9268110646% 0.0083071608 253.8653061211deg);\n --fs-color-border: oklch(36.8827622528% 0.0074489239 240.018838067deg);\n --fs-color-surface: oklch(24.7936263361% 0.0058460141 271.1764187765deg);\n --fs-color-subtle: oklch(29.3286259539% 0.0055990771 271.2234269855deg);\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n --fs-tooltip-bg: oklch(98.4151869501% 0.0034126992 247.8577745944deg);\n --fs-tooltip-text: oklch(27.9495237712% 0.0368481257 260.0309873929deg);\n --fs-color-primary: oklch(55.884857057% 0.2025537915 261.6264320248deg);\n --fs-alert-primary-bg: oklch(31.7915463198% 0.0633030844 260.2703040876deg);\n --fs-alert-primary-text: oklch(74.4596540856% 0.1172679846 261.6264320248deg);\n --fs-feedback-primary-bg: oklch(31.7915463198% 0.0633030844 260.2703040876deg);\n --fs-color-secondary: oklch(59.8951906896% 0.0366453387 257.4166191214deg);\n --fs-alert-secondary-bg: oklch(32.0729603204% 0.0374284633 259.6388321521deg);\n --fs-alert-secondary-text: oklch(75.4915054214% 0.0223943736 257.4166191214deg);\n --fs-feedback-secondary-bg: oklch(32.0729603204% 0.0374284633 259.6388321521deg);\n --fs-color-success: oklch(83.8485321344% 0.139498201 148.125846236deg);\n --fs-alert-success-bg: oklch(35.0298333903% 0.0635127994 243.2452162193deg);\n --fs-alert-success-text: oklch(86.3333733445% 0.1180369393 148.125846236deg);\n --fs-feedback-success-bg: oklch(35.0298333903% 0.0635127994 243.2452162193deg);\n --fs-color-warning: oklch(88.2682030181% 0.1015699084 78.6575213966deg);\n --fs-alert-warning-bg: oklch(36.0497574404% 0.0547601164 286.8249674934deg);\n --fs-alert-warning-text: oklch(90.0730948615% 0.0859437686 78.6575213966deg);\n --fs-feedback-warning-bg: oklch(36.0497574404% 0.0547601164 286.8249674934deg);\n --fs-color-danger: oklch(58.1670482336% 0.1802407312 25.2407937498deg);\n --fs-alert-danger-bg: oklch(32.151892295% 0.0597799696 278.8124583464deg);\n --fs-alert-danger-text: oklch(75.7809226615% 0.104349897 25.2407937498deg);\n --fs-feedback-danger-bg: oklch(32.151892295% 0.0597799696 278.8124583464deg);\n --fs-color-info: oklch(53.3359780029% 0.1620131129 280.2231949375deg);\n --fs-alert-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);\n --fs-alert-info-text: oklch(74.3347879016% 0.0891072121 280.2231949375deg);\n --fs-feedback-info-bg: oklch(31.7574919059% 0.0556228738 263.0598185246deg);\n }\n }\n @media (prefers-color-scheme: dark) {\n [data-fs-theme=auto] {\n --fs-color-text: #f1f3f4;\n --fs-color-muted: #bdc1c6;\n --fs-color-border: #3c4043;\n --fs-color-surface: #202124;\n --fs-color-subtle: #2b2c2f;\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-tooltip-bg: #f8fafc;\n --fs-tooltip-text: #1e293b;\n }\n }\n @media (forced-colors: active) {\n :root,\n [data-theme=dark],\n [data-fs-theme=light],\n [data-fs-theme=dark],\n [data-fs-theme=auto] {\n --fs-color-border: CanvasText;\n --fs-color-text: CanvasText;\n --fs-color-surface: Canvas;\n --fs-color-subtle: Canvas;\n --fs-focus-color: Highlight;\n }\n }\n}","// Camada semântica: nomeia tokens por PAPEL (o que a cor faz na interface),\n// não por valor. Cada token aqui é um alias `var()` de um token primitivo\n// (`_root.scss`) — não introduz nenhuma cor nova, só um vocabulário estável\n// entre o primitivo e o consumo por componente (ver `_component-buttons.scss`\n// como referência de como um componente deve consumir esta camada).\n// Por que alias e não recalcular o valor: um `var()` encadeado continua\n// resolvendo o fallback sRGB/OKLCH já decidido em `_root.scss` — não precisa\n// repetir a lógica de `@supports` aqui.\n@layer tokens {\n :root {\n // Superfícies\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n\n // Texto\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n\n // Bordas\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n\n // Ação (mapeiam para a cor de tema correspondente — existem para dar um\n // nome estável a \"a cor de ação primária\", independente de qual token\n // primitivo ela usa por baixo).\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n }\n}\n","// Tokens de gráficos: agnósticos de biblioteca — não é um wrapper de\n// Chart.js/ECharts/Recharts/etc., só cores/tema que qualquer uma delas pode\n// consumir via `getComputedStyle`/CSS custom properties. Aliases da camada\n// semântica já existente (mesma técnica de `_semantic.scss`), então\n// acompanham `data-theme`/`data-fs-brand` automaticamente sem token novo por\n// tema. Ver docs/guides/charts.md.\n@layer tokens {\n :root {\n --fs-chart-series-1: var(--fs-color-primary);\n --fs-chart-series-2: var(--fs-color-success);\n --fs-chart-series-3: var(--fs-color-warning);\n --fs-chart-series-4: var(--fs-color-danger);\n --fs-chart-series-5: var(--fs-color-info);\n --fs-chart-series-6: var(--fs-color-secondary);\n --fs-chart-grid: var(--fs-color-border);\n --fs-chart-axis: var(--fs-color-muted);\n --fs-chart-tooltip-bg: var(--fs-tooltip-bg);\n --fs-chart-tooltip-text: var(--fs-tooltip-text);\n }\n}\n","@layer reset {\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n html {\n line-height: var(--fs-line-height-base);\n text-size-adjust: 100%;\n }\n\n body {\n margin: 0;\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n }\n\n [hidden] {\n display: none !important;\n }\n}\n","// As declarações @font-face das fontes self-hosted ficam em `_fonts.scss`,\n// distribuído à parte (dist/css/fonts.css) e fora dos bundles principais —\n// ver a nota nesse arquivo. Aqui só aplicamos as pilhas de `font-family`\n// (com fallback sans-serif/monospace, que valem mesmo sem fonts.css).\n\n@layer base {\n body,\n button,\n input,\n select,\n textarea {\n font-family: var(--fs-font-sans);\n font-size: var(--fs-font-size-md);\n }\n\n code,\n kbd,\n pre,\n samp {\n font-family: var(--fs-font-mono);\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n font-weight: var(--fs-font-weight-semibold);\n line-height: var(--fs-line-height-heading);\n }\n\n h1 {\n font-size: var(--fs-font-size-h1);\n }\n\n h2 {\n font-size: var(--fs-font-size-h2);\n }\n\n h3 {\n font-size: var(--fs-font-size-h3);\n }\n\n h4 {\n font-size: var(--fs-font-size-h4);\n }\n\n h5 {\n font-size: var(--fs-font-size-h5);\n }\n\n h6 {\n font-size: var(--fs-font-size-h6);\n }\n}\n","// Respeita a preferência do sistema sem remover a funcionalidade dos\n// componentes: apenas reduz transições e animações ao estado final.\n@layer base {\n @media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n scroll-behavior: auto !important;\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n }\n\n // Spinner comunica uma operação em curso; congelá-lo o transforma em um\n // ícone ambíguo. Mantemos a animação, porém em ritmo mais lento, para\n // respeitar a preferência sem perder o significado de carregamento.\n .fs-spinner,\n .fs-progress-bar-animated,\n .fs-progress-indeterminate .fs-progress-bar {\n animation-duration: 1.5s !important;\n animation-iteration-count: infinite !important;\n }\n }\n}\n","/* stylelint-disable property-no-deprecated, selector-not-notation */\n@layer reset {\n :focus-visible {\n outline: var(--fs-focus-width) solid var(--fs-focus-color);\n outline-offset: var(--fs-focus-offset);\n }\n\n @media (forced-colors: active) {\n :focus-visible {\n outline: 2px solid CanvasText;\n outline-offset: 2px;\n }\n\n button,\n [role=\"button\"],\n input,\n select,\n textarea,\n .fs-btn {\n border-color: ButtonText;\n forced-color-adjust: auto;\n }\n\n .fs-u-focus-ring:focus-visible {\n outline: 3px solid Highlight;\n }\n }\n}\n\n@layer utilities {\n .fs-u-visually-hidden:not(:focus):not(:focus-within),\n .fs-u-visually-hidden-focusable:not(:focus):not(:focus-within) {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip-path: inset(50%) !important;\n white-space: nowrap !important;\n border: 0 !important;\n }\n\n .fs-skip-link {\n position: fixed;\n z-index: 1000;\n inset-block-start: var(--fs-space-2);\n inset-inline-start: var(--fs-space-2);\n transform: translateY(-200%);\n padding: var(--fs-space-2) var(--fs-space-3);\n color: var(--fs-color-on-primary);\n background: var(--fs-color-primary);\n border-radius: var(--fs-radius-sm);\n }\n\n .fs-skip-link:focus {\n transform: translateY(0);\n }\n}\n","@use \"../../../fokus-core/scss/settings\" as *;\n@use \"../../../fokus-core/scss/tools\" as *;\n\n@layer components {\n .fs-form-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: flex-start;\n gap: 12px 16px;\n width: 100%;\n }\n\n .fs-form-col {\n display: flex;\n flex: 1 1 240px;\n flex-direction: column;\n align-items: stretch;\n min-width: 0;\n gap: 4px;\n }\n\n .fs-form-label {\n width: auto;\n margin: 0;\n color: var(--fs-color-muted);\n font-size: $font-size-sm;\n font-weight: $font-weight-regular;\n }\n\n .fs-form-text {\n width: auto;\n margin: 0;\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n font-weight: $font-weight-regular;\n }\n\n .fs-form-text,\n .fs-valid-feedback,\n .fs-invalid-feedback {\n min-height: 1.25rem;\n padding: 3px 8px;\n border-radius: var(--fs-radius-sm);\n }\n\n .fs-form-text {\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n font-weight: $font-weight-regular;\n }\n\n .fs-valid-feedback,\n .fs-invalid-feedback {\n display: none;\n font-size: $font-size-xs;\n font-weight: $font-weight-regular;\n\n }\n\n .fs-valid-feedback {\n color: var(--fs-alert-success-text);\n background-color: var(--fs-feedback-success-bg);\n }\n\n .fs-invalid-feedback {\n color: var(--fs-alert-danger-text);\n background-color: var(--fs-feedback-danger-bg);\n }\n\n .is-valid ~ .fs-valid-feedback,\n .is-invalid ~ .fs-invalid-feedback {\n display: block;\n }\n\n .fs-form-control {\n width: 100%;\n min-width: 0;\n height: var(--fs-control-height);\n padding: 0 7px;\n border: var(--fs-border-width) solid var(--fs-color-border-default);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n font-size: $font-size-md;\n font-weight: $font-weight-medium;\n }\n\n .fs-form-control::placeholder {\n color: var(--fs-color-muted);\n }\n\n .fs-form-control:focus-visible {\n @include focus-ring;\n }\n\n .fs-form-control:disabled {\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n opacity: var(--fs-disabled-opacity);\n pointer-events: none;\n }\n\n .fs-form-control:read-only {\n background-color: var(--fs-color-subtle);\n cursor: default;\n }\n\n .fs-floating-label {\n position: relative;\n }\n\n .fs-floating-label > .fs-form-control {\n height: 56px;\n padding-top: 20px;\n }\n\n .fs-floating-label > .fs-form-label {\n position: absolute;\n z-index: 1;\n top: 8px;\n left: 8px;\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n pointer-events: none;\n }\n\n .fs-form-control[aria-invalid=\"true\"],\n .fs-was-validated .fs-form-control:invalid {\n border-color: var(--fs-color-danger);\n }\n\n .fs-form-control[aria-invalid=\"false\"],\n .fs-was-validated .fs-form-control:valid {\n border-color: var(--fs-color-success);\n }\n\n .fs-form-control-sm {\n height: var(--fs-control-height-sm);\n font-size: $font-size-xs;\n }\n\n .fs-form-control-lg {\n height: var(--fs-control-height-lg);\n font-size: $font-size-md;\n }\n\n .fs-form-size-sm {\n width: 120px;\n }\n\n .fs-form-size-md {\n width: 180px;\n }\n\n .fs-form-size-lg {\n width: 240px;\n }\n\n .fs-form-size-xl {\n width: 300px;\n }\n\n .fs-form-size-xxl {\n width: 360px;\n }\n\n .fs-form-control.is-valid {\n border-color: var(--fs-color-success);\n }\n\n .fs-form-control.is-valid:focus-visible {\n @include focus-ring(var(--fs-color-success));\n }\n\n .fs-form-control.is-invalid {\n border-color: var(--fs-color-danger);\n }\n\n .fs-form-control.is-invalid:focus-visible {\n @include focus-ring(var(--fs-color-danger));\n }\n\n .fs-form-select {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: var(--fs-control-height);\n padding: 0 7px;\n border: var(--fs-border-width) solid var(--fs-color-border-default);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-surface);\n font-size: $font-size-md;\n font-weight: $font-weight-medium;\n text-align: left;\n cursor: pointer;\n }\n\n .fs-form-select::after {\n flex-shrink: 0;\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 8px;\n content: \"\";\n border-top: 5px solid;\n border-right: 5px solid transparent;\n border-left: 5px solid transparent;\n }\n\n .fs-form-select:focus-visible {\n @include focus-ring;\n }\n\n .fs-form-select:disabled {\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n opacity: 0.4;\n pointer-events: none;\n }\n\n .fs-form-select-sm {\n height: var(--fs-control-height-sm);\n font-size: $font-size-xs;\n }\n\n .fs-form-select-lg {\n height: var(--fs-control-height-lg);\n font-size: $font-size-md;\n }\n\n .fs-file-upload {\n position: relative;\n display: inline-flex;\n }\n\n .fs-file-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n\n .fs-file-label {\n display: inline-flex;\n align-items: center;\n height: 38px;\n padding: 0 14px;\n border: 1px solid var(--fs-color-border);\n border-radius: var(--fs-radius-sm);\n color: var(--fs-color-text);\n background-color: var(--fs-color-subtle);\n font-size: $font-size-md;\n font-weight: $font-weight-medium;\n cursor: pointer;\n user-select: none;\n transition: filter var(--fs-transition-fast) var(--fs-ease-standard);\n }\n\n .fs-file-label:hover {\n filter: brightness(0.96);\n }\n\n .fs-file-input:focus-visible + .fs-file-label {\n @include focus-ring;\n }\n\n .fs-file-input:disabled + .fs-file-label {\n color: var(--fs-color-muted);\n opacity: var(--fs-disabled-opacity);\n pointer-events: none;\n cursor: default;\n }\n\n .fs-file-label-sm {\n height: 30px;\n padding: 0 10px;\n font-size: $font-size-xs;\n }\n\n .fs-file-label-lg {\n height: 46px;\n padding: 0 18px;\n font-size: $font-size-lg;\n }\n\n // Drag-and-drop (js/file-drop.js): estado visual ao arrastar um arquivo por\n // cima do `.fs-file-label`, e uma variante maior (dropzone) para quando o alvo\n // de soltar precisa ser mais generoso que o botão padrão de `.fs-file-label`.\n .fs-file-label.is-dragover {\n border-color: var(--fs-color-primary);\n background-color: var(--fs-color-subtle);\n }\n\n .fs-file-label-dropzone {\n flex-direction: column;\n gap: 4px;\n width: 100%;\n height: auto;\n padding: 32px 16px;\n border-style: dashed;\n border-width: 2px;\n font-weight: $font-weight-regular;\n text-align: center;\n }\n\n .fs-file-label-dropzone .fs-file-dropzone-hint {\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n font-weight: $font-weight-regular;\n }\n\n // Input Group: funde `.fs-form-control` (ou `.fs-form-select`/`.fs-btn`) com \"addons\"\n // de texto/ícone de prefixo/sufixo, reaproveitando os tokens visuais do\n // próprio `.fs-form-control` (borda, cor, radius). 100% CSS — a altura do addon\n // acompanha a do controle via `align-items: stretch` (herdado), sem precisar\n // fixar `height` nele.\n .fs-input-group {\n display: flex;\n align-items: stretch;\n width: 100%;\n }\n\n .fs-input-group > .fs-form-control,\n .fs-input-group > .fs-form-select {\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n }\n\n .fs-input-group-text {\n display: flex;\n align-items: center;\n padding: 0 12px;\n border: 1px solid var(--fs-color-border);\n color: var(--fs-color-muted);\n background-color: var(--fs-color-subtle);\n font-size: $font-size-md;\n font-weight: $font-weight-medium;\n white-space: nowrap;\n }\n\n // Funde as bordas dos itens adjacentes (remove a dupla borda) e mantém o\n // item focado por cima da sobreposição de -1px, senão a borda de foco fica\n // parcialmente escondida atrás do vizinho.\n .fs-input-group > :not(:first-child) {\n margin-left: -1px;\n }\n\n .fs-input-group > :focus-visible,\n .fs-input-group > :focus-within {\n position: relative;\n z-index: 1;\n }\n\n .fs-input-group > * {\n border-radius: 0;\n }\n\n .fs-input-group > :first-child {\n border-top-left-radius: var(--fs-radius-sm);\n border-bottom-left-radius: var(--fs-radius-sm);\n }\n\n .fs-input-group > :last-child {\n border-top-right-radius: var(--fs-radius-sm);\n border-bottom-right-radius: var(--fs-radius-sm);\n }\n\n .fs-input-group-sm > .fs-form-control,\n .fs-input-group-sm > .fs-form-select,\n .fs-input-group-sm > .fs-input-group-text {\n height: 30px;\n padding: 0 8px;\n font-size: $font-size-xs;\n }\n\n .fs-input-group-lg > .fs-form-control,\n .fs-input-group-lg > .fs-form-select,\n .fs-input-group-lg > .fs-input-group-text {\n height: 46px;\n padding: 0 16px;\n font-size: $font-size-lg;\n }\n}\n","$font-family-sans: \"Plus Jakarta Sans\", sans-serif !default;\n$font-family-mono: \"Source Code Pro\", monospace !default;\n\n// Escala compacta: corpo (md) ~13px, piso (xs) ~11px — reservado a\n// texto de apoio (meta/label), nunca corpo de leitura.\n$font-size-xs: 0.6875rem !default;\n$font-size-sm: 0.75rem !default;\n$font-size-md: 0.8125rem !default;\n$font-size-lg: 1rem !default;\n$font-size-xl: 1.25rem !default;\n\n// Escala de headings, deliberadamente menor que o padrão do navegador\n// (preferência por texto compacto — ver docs/internal/plans).\n$font-size-h1: 1.75rem !default;\n$font-size-h2: 1.5rem !default;\n$font-size-h3: 1.3125rem !default;\n$font-size-h4: 1.125rem !default;\n$font-size-h5: 1rem !default;\n$font-size-h6: 0.875rem !default;\n\n$font-weight-regular: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n\n$line-height-base: 1.5 !default;\n$line-height-heading: 1.25 !default;\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:color\";\n@use \"../settings\" as *;\n\n@mixin fs-fluid-type($min, $max, $min-vw: 320px, $max-vw: 1280px) {\n font-size: clamp($min, calc(#{$min} + (#{ $max } - #{ $min }) * ((100vw - #{ $min-vw }) / (#{ $max-vw } - #{ $min-vw }))), $max);\n}\n\n@mixin fs-fluid-value($property, $min, $max, $min-vw: 320px, $max-vw: 1280px) {\n #{$property}: clamp($min, calc(#{$min} + (#{ $max } - #{ $min }) * ((100vw - #{ $min-vw }) / (#{ $max-vw } - #{ $min-vw }))), $max);\n}\n\n@mixin media-breakpoint-up($name) {\n $min: map.get($breakpoints, $name);\n\n @if $min == null {\n @error \"Unknown breakpoint `#{$name}`.\";\n }\n\n @if $min == 0 {\n @content;\n } @else {\n @media (min-width: $min) {\n @content;\n }\n }\n}\n\n@function breakpoint-infix($name) {\n @if $name == xs {\n @return \"\";\n }\n\n @return \"-#{$name}\";\n}\n\n@mixin focus-ring($color: var(--fs-color-primary)) {\n outline: var(--fs-focus-width) solid $color;\n outline-offset: var(--fs-focus-offset);\n border-color: $color;\n box-shadow: 0 0 0 3px color-mix(in srgb, #{$color} 22%, transparent);\n}\n\n@mixin truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@function linearize-channel($value) {\n $c: math.div($value, 255);\n\n @if $c <= 0.0393 {\n @return math.div($c, 12.92);\n }\n\n @return math.pow(math.div($c + 0.055, 1.055), 2.4);\n}\n\n@function relative-luminance($color) {\n $r: linearize-channel(color.channel($color, \"red\", $space: rgb));\n $g: linearize-channel(color.channel($color, \"green\", $space: rgb));\n $b: linearize-channel(color.channel($color, \"blue\", $space: rgb));\n\n @return (0.2126 * $r) + (0.7152 * $g) + (0.0722 * $b);\n}\n\n@function color-contrast($background, $min-contrast: 4.5) {\n $contrast-with-white: math.div(1.05, relative-luminance($background) + 0.05);\n\n @if $contrast-with-white >= $min-contrast {\n @return $color-white;\n }\n\n @return $color-black;\n}\n\n// Razão de contraste WCAG entre duas cores (1–21). Usada pelo relatório de\n// contraste do build (`npm run contrast`, `scripts/contrast-report.scss`) —\n// ver docs/reference/contrast-report.md para os pares auditados.\n@function contrast-ratio($foreground, $background) {\n $l1: relative-luminance($foreground) + 0.05;\n $l2: relative-luminance($background) + 0.05;\n\n @if $l1 > $l2 {\n @return math.div($l1, $l2);\n }\n\n @return math.div($l2, $l1);\n}\n\n@function tint-color($color, $weight: 15%) {\n @return color.mix($color, $color-white, $weight, $method: oklch);\n}\n\n@function shade-color($color, $weight: 50%) {\n @return color.mix($color, $color-black, $weight, $method: oklch);\n}\n\n// Fallback sRGB de uma cor OKLCH para navegadores sem suporte a `oklch()`\n// (ver `@supports` em tokens/_root.scss e themes/_dark.scss). Faz gamut\n// mapping antes da conversão — misturas em OKLCH frequentemente caem fora do\n// gamut sRGB, e converter sem mapear gera `rgb()`/`hsl()` com canais\n// inválidos (saturação > 100%, etc.).\n@function rgb-fallback($color) {\n $mapped: color.to-gamut($color, $space: rgb, $method: local-minde);\n\n @return color.to-space($mapped, rgb);\n}\n","@use \"../../../fokus-core/scss/settings\" as *;\n@use \"../../../fokus-core/scss/tools\" as *;\n\n// Checkbox/radio/switch 100% CSS, reusando a técnica de input oculto +\n// label irmã do Segmented Control (_segmented-control.scss) e do Rating\n// (_rating.scss): `<input>` clipado visualmente (não `display: none` — teclado\n// e leitor de tela continuam enxergando o controle) + `<label for=\"id\">`\n// como irmã, que desenha a caixa/trilho via `::before` e a marca/knob via\n// `::after`. O `<label>` é o alvo de clique/hover/estado, mas o input\n// continua sendo o elemento focável e semântico (checkbox/radio nativos).\n// Wrapper (`.fs-check`/`.fs-radio`/`.fs-switch`) carrega o tamanho\n// (`-sm`/`-lg`) e agrupa input+label, no mesmo papel de `.fs-segmented-item`.\n@layer components {\n .fs-check,\n .fs-radio,\n .fs-switch {\n display: inline-flex;\n align-items: center;\n }\n\n .fs-check {\n --fs-check-mark: var(--fs-color-on-primary);\n }\n\n .fs-check-input,\n .fs-radio-input,\n .fs-switch-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n\n .fs-check-label,\n .fs-radio-label,\n .fs-switch-label {\n position: relative;\n display: inline-flex;\n align-items: center;\n min-height: 20px;\n padding-left: 28px;\n color: var(--fs-color-text);\n font-size: $font-size-md;\n cursor: pointer;\n user-select: none;\n }\n\n // Caixa (checkbox/radio) ou trilho (switch), desenhados no `::before` da\n // label. Radio é a exceção redonda da regra anti-circular do projeto\n // (junto do spinner) — ver docs/internal/plans.\n .fs-check-label::before,\n .fs-radio-label::before,\n .fs-switch-label::before {\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: 1px solid var(--fs-color-border);\n background-color: var(--fs-color-surface);\n content: \"\";\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n }\n\n .fs-check-label::before,\n .fs-radio-label::before {\n width: 18px;\n height: 18px;\n }\n\n .fs-check-label::before {\n border: 2px solid var(--fs-color-primary);\n border-radius: 0;\n }\n\n .fs-radio-label::before {\n border-radius: 50%;\n }\n\n // Marca de check (dois traços em \"V\", via borda rotacionada). Os estados\n // indeterminado e inválido substituem essa geometria mais abaixo.\n .fs-check-label::after {\n position: absolute;\n left: 4px;\n width: 9px;\n height: 5px;\n content: \"\";\n opacity: 0;\n border-bottom: 2px solid var(--fs-check-mark);\n border-left: 2px solid var(--fs-check-mark);\n transform: translateY(-1px) rotate(-45deg);\n transition: opacity 0.1s ease-in-out;\n }\n\n .fs-radio-label::after {\n position: absolute;\n left: 5px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n content: \"\";\n opacity: 0;\n background-color: var(--fs-color-on-primary);\n transition: opacity 0.1s ease-in-out;\n }\n\n .fs-check-input:checked + .fs-check-label::before,\n .fs-radio-input:checked + .fs-radio-label::before {\n background-color: var(--fs-color-primary);\n border-color: var(--fs-color-primary);\n }\n\n .fs-check-input:checked + .fs-check-label::after,\n .fs-radio-input:checked + .fs-radio-label::after {\n opacity: 1;\n }\n\n .fs-check-input:not(:checked, :indeterminate, :disabled, .is-invalid) + .fs-check-label:hover::before {\n background-color: color-mix(in srgb, var(--fs-color-primary) 10%, transparent);\n }\n\n .fs-check-input:not(:disabled, :indeterminate, .is-invalid) + .fs-check-label:active::before {\n background-color: color-mix(in srgb, var(--fs-color-primary) 86%, var(--fs-color-black));\n border-color: var(--fs-color-primary);\n }\n\n .fs-check-input:checked:not(:disabled, .is-invalid) + .fs-check-label:active::after {\n transform: translateY(-1px) rotate(-45deg) scale(0.9);\n }\n\n // Switch: trilho retangular arredondado (não pílula) e knob também\n // retangular arredondado — decisão de forma do projeto (nada circular além\n // do radio/spinner). Desliza via `left` no `::after`.\n .fs-switch-label {\n padding-left: 44px;\n }\n\n .fs-switch-label::before {\n width: 36px;\n height: 20px;\n border-radius: var(--fs-radius-md);\n }\n\n .fs-switch-label::after {\n position: absolute;\n left: 2px;\n width: 16px;\n height: 14px;\n border-radius: var(--fs-radius-sm);\n content: \"\";\n background-color: var(--fs-color-border);\n transition: left 0.15s ease-in-out, background-color 0.15s ease-in-out;\n }\n\n .fs-switch-input:checked + .fs-switch-label::before {\n background-color: var(--fs-color-primary);\n border-color: var(--fs-color-primary);\n }\n\n .fs-switch-input:checked + .fs-switch-label::after {\n left: 18px;\n background-color: var(--fs-color-on-primary);\n }\n\n // Foco: anel sobre a caixa/trilho (`::before`), não sobre o texto.\n .fs-check-input:focus-visible + .fs-check-label::before,\n .fs-radio-input:focus-visible + .fs-radio-label::before,\n .fs-switch-input:focus-visible + .fs-switch-label::before {\n @include focus-ring;\n }\n\n .fs-radio-input:disabled + .fs-radio-label,\n .fs-switch-input:disabled + .fs-switch-label {\n opacity: 0.5;\n pointer-events: none;\n }\n\n .fs-check-input:disabled + .fs-check-label {\n color: var(--fs-color-muted);\n opacity: 1;\n pointer-events: none;\n }\n\n .fs-check-input:disabled:not(:checked, :indeterminate) + .fs-check-label::before {\n border-color: var(--fs-color-border);\n background-color: var(--fs-color-subtle);\n }\n\n .fs-check-input:disabled:checked + .fs-check-label::before {\n border-color: color-mix(in srgb, var(--fs-color-primary) 55%, var(--fs-color-border));\n background-color: color-mix(in srgb, var(--fs-color-primary) 45%, var(--fs-color-subtle));\n }\n\n .fs-check-input:disabled:checked + .fs-check-label::after {\n opacity: 0.72;\n }\n\n // Validação (mesma convenção de `.fs-form-control.is-valid`/`.is-invalid`).\n .fs-radio-input.is-valid + .fs-radio-label::before {\n border-color: var(--fs-color-success);\n }\n\n .fs-check-input.is-invalid + .fs-check-label::before,\n .fs-radio-input.is-invalid + .fs-radio-label::before {\n border-color: var(--fs-color-danger);\n }\n\n // Tamanhos: reescalam caixa/trilho/knob e o espaço reservado para eles\n // (`padding-left`) proporcionalmente.\n .fs-check-sm .fs-check-label,\n .fs-radio-sm .fs-radio-label {\n min-height: 16px;\n padding-left: 24px;\n font-size: $font-size-sm;\n }\n\n .fs-check-sm .fs-check-label::before,\n .fs-radio-sm .fs-radio-label::before {\n width: 15px;\n height: 15px;\n }\n\n .fs-check-sm .fs-check-label::after {\n left: 3px;\n width: 8px;\n height: 4px;\n }\n\n .fs-radio-sm .fs-radio-label::after {\n left: 4px;\n width: 7px;\n height: 7px;\n }\n\n .fs-check-lg .fs-check-label,\n .fs-radio-lg .fs-radio-label {\n min-height: 24px;\n padding-left: 34px;\n font-size: $font-size-lg;\n }\n\n .fs-check-lg .fs-check-label::before,\n .fs-radio-lg .fs-radio-label::before {\n width: 22px;\n height: 22px;\n }\n\n .fs-check-lg .fs-check-label::after {\n left: 5px;\n width: 11px;\n height: 6px;\n }\n\n .fs-radio-lg .fs-radio-label::after {\n left: 6px;\n width: 10px;\n height: 10px;\n }\n\n .fs-switch-sm .fs-switch-label {\n min-height: 16px;\n padding-left: 38px;\n font-size: $font-size-sm;\n }\n\n .fs-switch-sm .fs-switch-label::before {\n width: 30px;\n height: 16px;\n }\n\n .fs-switch-sm .fs-switch-label::after {\n width: 12px;\n height: 10px;\n }\n\n .fs-switch-sm .fs-switch-input:checked + .fs-switch-label::after {\n left: 16px;\n }\n\n .fs-switch-lg .fs-switch-label {\n min-height: 26px;\n padding-left: 52px;\n font-size: $font-size-lg;\n }\n\n .fs-switch-lg .fs-switch-label::before {\n width: 44px;\n height: 24px;\n }\n\n .fs-switch-lg .fs-switch-label::after {\n width: 20px;\n height: 18px;\n }\n\n .fs-switch-lg .fs-switch-input:checked + .fs-switch-label::after {\n left: 22px;\n }\n\n // Estado parcial: borda tracejada em primary e traço horizontal. Mantém o\n // fundo definido para não se confundir com a superfície ao redor.\n .fs-check-input:indeterminate + .fs-check-label::before {\n border: 2px dashed var(--fs-color-primary);\n background-color: var(--fs-color-surface);\n }\n\n .fs-check-input:indeterminate + .fs-check-label::after {\n left: 4px;\n width: 10px;\n height: 0;\n opacity: 1;\n border-bottom: 2px solid var(--fs-color-primary);\n border-left: 0;\n transform: translateY(3px) rotate(0deg);\n }\n\n .fs-check-sm .fs-check-input:indeterminate + .fs-check-label::after {\n left: 3px;\n width: 8px;\n }\n\n .fs-check-lg .fs-check-input:indeterminate + .fs-check-label::after {\n left: 5px;\n width: 12px;\n }\n\n // Erro: X branco sobre fundo danger, visível mesmo quando o checkbox não\n // está marcado. Os gradientes desenham o símbolo sem conteúdo decorativo no\n // HTML e preservam o input nativo como fonte de semântica.\n .fs-check-input.is-invalid + .fs-check-label::before {\n background-color: var(--fs-color-danger);\n }\n\n .fs-check-input.is-invalid + .fs-check-label::after {\n top: 6px;\n left: 5px;\n width: 8px;\n height: 8px;\n opacity: 1;\n border: 0;\n background-image:\n linear-gradient(45deg, transparent 42%, #{color-contrast($fokus-color-danger)} 42% 58%, transparent 58%),\n linear-gradient(-45deg, transparent 42%, #{color-contrast($fokus-color-danger)} 42% 58%, transparent 58%);\n transform: none;\n }\n\n .fs-check-sm .fs-check-input.is-invalid + .fs-check-label::after {\n top: 5px;\n left: 4px;\n width: 7px;\n height: 7px;\n }\n\n .fs-check-lg .fs-check-input.is-invalid + .fs-check-label::after {\n top: 6px;\n left: 6px;\n width: 10px;\n height: 10px;\n }\n}\n","@use \"../../../fokus-core/scss/settings\" as *;\n@use \"../../../fokus-core/scss/tools\" as *;\n\n// Range/Slider: <input type=\"range\"> nativo — teclado (setas, Home/End,\n// PageUp/Down) e ARIA (role=slider implícito, aria-valuenow/min/max\n// automáticos) já vêm de graça do navegador, então este componente só\n// estiliza a trilha/thumb (pseudo-elementos vendor-prefixados, sem padrão\n// unificado) e usa `--fs-range-percent` (escrito pelo JS opcional, ver\n// js/range.js) pra pintar a parte preenchida da trilha via gradiente —\n// truque necessário porque só o Firefox suporta `::-moz-range-progress`;\n// Chrome/Safari não têm equivalente.\n@layer components {\n .fs-form-range {\n --fs-range-track-height: 6px;\n --fs-range-track-color: var(--fs-color-border);\n --fs-range-fill-color: var(--fs-color-primary);\n --fs-range-thumb-size: 18px;\n --fs-range-thumb-color: var(--fs-color-surface);\n --fs-range-thumb-border-color: var(--fs-color-primary);\n --fs-range-percent: 0%;\n\n width: 100%;\n height: var(--fs-range-thumb-size);\n padding: 0;\n background: transparent;\n appearance: none;\n cursor: pointer;\n }\n\n .fs-form-range::-webkit-slider-runnable-track {\n height: var(--fs-range-track-height);\n border-radius: var(--fs-radius-sm);\n background: linear-gradient(\n to right,\n var(--fs-range-fill-color) var(--fs-range-percent),\n var(--fs-range-track-color) var(--fs-range-percent)\n );\n }\n\n .fs-form-range::-moz-range-track {\n height: var(--fs-range-track-height);\n border-radius: var(--fs-radius-sm);\n background: linear-gradient(\n to right,\n var(--fs-range-fill-color) var(--fs-range-percent),\n var(--fs-range-track-color) var(--fs-range-percent)\n );\n }\n\n .fs-form-range::-webkit-slider-thumb {\n width: var(--fs-range-thumb-size);\n height: var(--fs-range-thumb-size);\n margin-top: calc((var(--fs-range-track-height) - var(--fs-range-thumb-size)) / 2);\n border: 2px solid var(--fs-range-thumb-border-color);\n border-radius: 50%;\n background-color: var(--fs-range-thumb-color);\n appearance: none;\n cursor: pointer;\n }\n\n .fs-form-range::-moz-range-thumb {\n width: calc(var(--fs-range-thumb-size) - 4px);\n height: calc(var(--fs-range-thumb-size) - 4px);\n border: 2px solid var(--fs-range-thumb-border-color);\n border-radius: 50%;\n background-color: var(--fs-range-thumb-color);\n cursor: pointer;\n }\n\n .fs-form-range:focus-visible::-webkit-slider-thumb {\n @include focus-ring(var(--fs-range-thumb-border-color));\n }\n\n .fs-form-range:focus-visible::-moz-range-thumb {\n @include focus-ring(var(--fs-range-thumb-border-color));\n }\n\n .fs-form-range:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .fs-form-range:disabled::-webkit-slider-thumb {\n cursor: not-allowed;\n }\n\n .fs-form-range:disabled::-moz-range-thumb {\n cursor: not-allowed;\n }\n\n .fs-range-output {\n display: inline-block;\n min-width: 2.5em;\n color: var(--fs-color-text);\n font-size: $font-size-sm;\n font-weight: $font-weight-medium;\n text-align: center;\n }\n}\n","@use \"../../../fokus-core/scss/settings\" as *;\n@use \"../../../fokus-core/scss/tools\" as *;\n\n// Upload avançado (js/file-upload-advanced.js): evolução do File Upload\n// simples (`.fs-file-upload`/`.fs-file-label`, forms/_forms.scss) — reusa a\n// mesma dropzone/botão como gatilho, só adiciona a lista de itens\n// selecionados (thumbnail/nome/tamanho/progresso/remoção) gerada pelo JS.\n@layer components {\n .fs-file-upload-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n margin-top: 12px;\n padding: 0;\n list-style: none;\n }\n\n .fs-file-upload-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 12px;\n border: 1px solid var(--fs-color-border);\n border-radius: var(--fs-radius-sm);\n background-color: var(--fs-color-surface);\n }\n\n .fs-file-upload-thumb {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: var(--fs-radius-sm);\n background-color: var(--fs-color-subtle);\n color: var(--fs-color-muted);\n }\n\n .fs-file-upload-thumb img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .fs-file-upload-info {\n flex: 1;\n min-width: 0;\n }\n\n .fs-file-upload-name {\n margin: 0;\n color: var(--fs-color-text);\n font-size: $font-size-sm;\n font-weight: $font-weight-medium;\n\n @include truncate;\n }\n\n .fs-file-upload-size {\n margin: 0 0 4px;\n color: var(--fs-color-muted);\n font-size: $font-size-xs;\n }\n\n .fs-file-upload-item.is-error .fs-file-upload-size {\n color: var(--fs-alert-danger-text);\n }\n\n .fs-file-upload-remove {\n flex-shrink: 0;\n }\n}\n","@use \"sass:color\";\n@use \"../settings\" as *;\n@use \"../tools\" as *;\n\n// Theming multi-brand: um `data-fs-brand=\"x\"` sobrescreve só a cor de AÇÃO\n// PRIMÁRIA (--fs-color-primary e os tokens derivados) — secondary/success/\n// warning/danger/info continuam universais entre marcas, porque são\n// semânticos (sucesso é sempre verde, erro sempre vermelho, independente\n// de qual marca está ativa). Composto com `data-theme=\"dark\"` do mesmo\n// jeito que `_dark.scss` faz para a paleta padrão: mistura o primitivo com\n// branco/preto em OKLCH, não recalcula do zero.\n// Limitação conhecida: `.fs-btn-primary`/`.fs-badge-primary` (preenchimento\n// sólido) calculam a cor do texto em tempo de build via `color-contrast()`\n// a partir do primary padrão (azul) — não recalculam por marca. Escolha um\n// primitivo de marca escuro o bastante pro texto branco continuar legível\n// (como o exemplo abaixo), ou sobrescreva `--fs-btn-color`/`--fs-badge-color`\n// manualmente se o primitivo da marca for muito claro. Ver\n// `docs/guides/theming.md#multi-brand`.\n@layer tokens {\n // Marca de exemplo (\"violet\") — mesmo tom usado no exemplo de\n // customização do README, só pra provar que a troca funciona em runtime\n // sem recompilar CSS. Um projeto real substitui/adiciona marcas\n // definindo o próprio primitivo antes de `@use` este arquivo.\n $brand-violet-primary: color.to-space(#6d28d9, oklch) !default;\n\n [data-fs-brand=\"violet\"] {\n --fs-color-primary: #{rgb-fallback($brand-violet-primary)};\n --fs-alert-primary-bg: #{rgb-fallback(tint-color($brand-violet-primary))};\n --fs-alert-primary-text: #{rgb-fallback(shade-color($brand-violet-primary))};\n --fs-feedback-primary-bg: #{rgb-fallback(tint-color($brand-violet-primary))};\n }\n\n [data-fs-brand=\"violet\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"violet\"] {\n --fs-color-primary: #{rgb-fallback(color.mix($brand-violet-primary, $color-white, 95%, $method: oklch))};\n --fs-alert-primary-bg: #{rgb-fallback(color.mix($brand-violet-primary, $color-gray-900, 15%, $method: oklch))};\n --fs-alert-primary-text: #{rgb-fallback(color.mix($brand-violet-primary, $color-white, 55%, $method: oklch))};\n --fs-feedback-primary-bg: #{rgb-fallback(color.mix($brand-violet-primary, $color-gray-900, 15%, $method: oklch))};\n }\n\n @supports (color: oklch(0% 0 0)) {\n [data-fs-brand=\"violet\"] {\n --fs-color-primary: #{$brand-violet-primary};\n --fs-alert-primary-bg: #{tint-color($brand-violet-primary)};\n --fs-alert-primary-text: #{shade-color($brand-violet-primary)};\n --fs-feedback-primary-bg: #{tint-color($brand-violet-primary)};\n }\n\n [data-fs-brand=\"violet\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"violet\"] {\n --fs-color-primary: #{color.mix($brand-violet-primary, $color-white, 95%, $method: oklch)};\n --fs-alert-primary-bg: #{color.mix($brand-violet-primary, $color-gray-900, 15%, $method: oklch)};\n --fs-alert-primary-text: #{color.mix($brand-violet-primary, $color-white, 55%, $method: oklch)};\n --fs-feedback-primary-bg: #{color.mix($brand-violet-primary, $color-gray-900, 15%, $method: oklch)};\n }\n }\n\n // Preset \"corporate\" — azul-marinho/steel blue, tom sóbrio para\n // aplicações internas/B2B. Mesma técnica de mistura OKLCH acima.\n $brand-corporate-primary: color.to-space(#1d4e89, oklch) !default;\n\n [data-fs-brand=\"corporate\"] {\n --fs-color-primary: #{rgb-fallback($brand-corporate-primary)};\n --fs-alert-primary-bg: #{rgb-fallback(tint-color($brand-corporate-primary))};\n --fs-alert-primary-text: #{rgb-fallback(shade-color($brand-corporate-primary))};\n --fs-feedback-primary-bg: #{rgb-fallback(tint-color($brand-corporate-primary))};\n }\n\n [data-fs-brand=\"corporate\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"corporate\"] {\n --fs-color-primary: #{rgb-fallback(color.mix($brand-corporate-primary, $color-white, 95%, $method: oklch))};\n --fs-alert-primary-bg: #{rgb-fallback(color.mix($brand-corporate-primary, $color-gray-900, 15%, $method: oklch))};\n --fs-alert-primary-text: #{rgb-fallback(color.mix($brand-corporate-primary, $color-white, 55%, $method: oklch))};\n --fs-feedback-primary-bg: #{rgb-fallback(color.mix($brand-corporate-primary, $color-gray-900, 15%, $method: oklch))};\n }\n\n // Preset \"vibrant\" — laranja energético, tom para produtos de consumo/\n // marketing que queiram uma ação primária mais chamativa.\n $brand-vibrant-primary: color.to-space(#f2542d, oklch) !default;\n\n [data-fs-brand=\"vibrant\"] {\n --fs-color-primary: #{rgb-fallback($brand-vibrant-primary)};\n --fs-alert-primary-bg: #{rgb-fallback(tint-color($brand-vibrant-primary))};\n --fs-alert-primary-text: #{rgb-fallback(shade-color($brand-vibrant-primary))};\n --fs-feedback-primary-bg: #{rgb-fallback(tint-color($brand-vibrant-primary))};\n }\n\n [data-fs-brand=\"vibrant\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"vibrant\"] {\n --fs-color-primary: #{rgb-fallback(color.mix($brand-vibrant-primary, $color-white, 95%, $method: oklch))};\n --fs-alert-primary-bg: #{rgb-fallback(color.mix($brand-vibrant-primary, $color-gray-900, 15%, $method: oklch))};\n --fs-alert-primary-text: #{rgb-fallback(color.mix($brand-vibrant-primary, $color-white, 55%, $method: oklch))};\n --fs-feedback-primary-bg: #{rgb-fallback(color.mix($brand-vibrant-primary, $color-gray-900, 15%, $method: oklch))};\n }\n\n @supports (color: oklch(0% 0 0)) {\n [data-fs-brand=\"corporate\"] {\n --fs-color-primary: #{$brand-corporate-primary};\n --fs-alert-primary-bg: #{tint-color($brand-corporate-primary)};\n --fs-alert-primary-text: #{shade-color($brand-corporate-primary)};\n --fs-feedback-primary-bg: #{tint-color($brand-corporate-primary)};\n }\n\n [data-fs-brand=\"corporate\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"corporate\"] {\n --fs-color-primary: #{color.mix($brand-corporate-primary, $color-white, 95%, $method: oklch)};\n --fs-alert-primary-bg: #{color.mix($brand-corporate-primary, $color-gray-900, 15%, $method: oklch)};\n --fs-alert-primary-text: #{color.mix($brand-corporate-primary, $color-white, 55%, $method: oklch)};\n --fs-feedback-primary-bg: #{color.mix($brand-corporate-primary, $color-gray-900, 15%, $method: oklch)};\n }\n\n [data-fs-brand=\"vibrant\"] {\n --fs-color-primary: #{$brand-vibrant-primary};\n --fs-alert-primary-bg: #{tint-color($brand-vibrant-primary)};\n --fs-alert-primary-text: #{shade-color($brand-vibrant-primary)};\n --fs-feedback-primary-bg: #{tint-color($brand-vibrant-primary)};\n }\n\n [data-fs-brand=\"vibrant\"][data-theme=\"dark\"],\n [data-theme=\"dark\"] [data-fs-brand=\"vibrant\"] {\n --fs-color-primary: #{color.mix($brand-vibrant-primary, $color-white, 95%, $method: oklch)};\n --fs-alert-primary-bg: #{color.mix($brand-vibrant-primary, $color-gray-900, 15%, $method: oklch)};\n --fs-alert-primary-text: #{color.mix($brand-vibrant-primary, $color-white, 55%, $method: oklch)};\n --fs-feedback-primary-bg: #{color.mix($brand-vibrant-primary, $color-gray-900, 15%, $method: oklch)};\n }\n }\n}\n\n// Ao contrário de violet/corporate, o primitivo \"vibrant\" (laranja) é claro\n// o bastante pra o texto branco padrão de `.fs-btn-primary`/`.fs-badge-primary`\n// (calculado em tempo de build a partir do primary PADRÃO, não do de marca —\n// ver nota no topo do arquivo) cair abaixo de 4.5:1 — exatamente o caso que\n// a mitigação documentada em docs/guides/theming.md#multi-brand cobre.\n// Precisa estar em `@layer overrides` (a camada de maior prioridade — ver\n// `tokens/_root.scss`): `.fs-btn-primary`/`.fs-badge-primary` setam\n// `--fs-btn-color`/`--fs-badge-color` no próprio elemento dentro de\n// `@layer components`, e cascade layers ignoram especificidade — um\n// seletor mais específico em `@layer tokens` (onde vivem os blocos acima)\n// perderia mesmo assim.\n@layer overrides {\n [data-fs-brand=\"vibrant\"] .fs-btn-primary,\n [data-fs-brand=\"vibrant\"] .fs-badge-primary {\n --fs-btn-color: #{$color-black};\n --fs-badge-color: #{$color-black};\n }\n\n [data-fs-brand=\"vibrant\"] .fs-check {\n --fs-check-mark: #{$color-black};\n }\n}\n","@use \"sass:color\";\n@use \"sass:map\";\n@use \"../settings\" as *;\n@use \"../tools\" as *;\n\n// Peso (% da cor original mantida, ver color.mix()) de cada cor de estado no\n// tema escuro. O limite de cada uma é o quanto dá pra clarear em direção ao\n// branco antes de virar o texto branco/preto que color-contrast() já\n// pré-calculou para os preenchimentos sólidos (botões, badges) no tema claro\n// — passar do limite deixaria esse texto ilegível. `primary` e `danger` têm\n// texto branco no preenchimento, então clareiam pouco (clarear reduz o\n// contraste com o branco); `info` não tem margem e fica sem alteração (100%).\n// Misturas em `$method: oklch` (ver tools/_mixins.scss) — recalibrado e\n// revalidado com `npm run contrast` após a migração para OKLCH.\n@layer tokens {\n $dark-color-weights: (\n primary: 95%,\n secondary: 90%,\n success: 65%,\n warning: 65%,\n danger: 95%,\n info: 100%\n ) !default;\n\n $dark-text: color.to-space(#f1f3f4, oklch) !default;\n $dark-muted: color.to-space(#bdc1c6, oklch) !default;\n $dark-border: color.to-space(#3c4043, oklch) !default;\n $dark-surface: color.to-space(#202124, oklch) !default;\n $dark-subtle: color.to-space(#2b2c2f, oklch) !default;\n\n // Pesos de alert/feedback bg+text no escuro: validados por\n // `npm run contrast` para ≥4.5:1 (texto normal) em todas as 6 cores —\n // não abaixe sem reconferir o relatório.\n $dark-alert-bg-weight: 15%;\n $dark-alert-text-weight: 55%;\n\n [data-theme=\"dark\"],\n [data-fs-theme=\"dark\"] {\n --fs-color-text: #{rgb-fallback($dark-text)};\n --fs-color-muted: #{rgb-fallback($dark-muted)};\n --fs-color-border: #{rgb-fallback($dark-border)};\n --fs-color-surface: #{rgb-fallback($dark-surface)};\n --fs-color-subtle: #{rgb-fallback($dark-subtle)};\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n --fs-shadow-sm: 0 1px 3px rgb(0 0 0 / 50%), 0 1px 2px rgb(0 0 0 / 40%);\n --fs-shadow-md: 0 6px 12px rgb(0 0 0 / 55%), 0 3px 6px rgb(0 0 0 / 45%);\n --fs-shadow-lg: 0 15px 30px rgb(0 0 0 / 60%), 0 6px 12px rgb(0 0 0 / 50%);\n --fs-tooltip-bg: #{rgb-fallback($color-gray-100)};\n --fs-tooltip-text: #{rgb-fallback($color-gray-900)};\n\n @each $name, $color in $theme-colors {\n --fs-color-#{$name}: #{rgb-fallback(color.mix($color, $color-white, map.get($dark-color-weights, $name), $method: oklch))};\n --fs-alert-#{$name}-bg: #{rgb-fallback(color.mix($color, $color-gray-900, $dark-alert-bg-weight, $method: oklch))};\n --fs-alert-#{$name}-text: #{rgb-fallback(color.mix($color, $color-white, $dark-alert-text-weight, $method: oklch))};\n --fs-feedback-#{$name}-bg: #{rgb-fallback(color.mix($color, $color-gray-900, $dark-alert-bg-weight, $method: oklch))};\n }\n }\n\n @supports (color: oklch(0% 0 0)) {\n [data-theme=\"dark\"],\n [data-fs-theme=\"dark\"] {\n --fs-color-text: #{$dark-text};\n --fs-color-muted: #{$dark-muted};\n --fs-color-border: #{$dark-border};\n --fs-color-surface: #{$dark-surface};\n --fs-color-subtle: #{$dark-subtle};\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-color-action-primary: var(--fs-color-primary);\n --fs-color-action-danger: var(--fs-color-danger);\n --fs-tooltip-bg: #{$color-gray-100};\n --fs-tooltip-text: #{$color-gray-900};\n\n @each $name, $color in $theme-colors {\n --fs-color-#{$name}: #{color.mix($color, $color-white, map.get($dark-color-weights, $name), $method: oklch)};\n --fs-alert-#{$name}-bg: #{color.mix($color, $color-gray-900, $dark-alert-bg-weight, $method: oklch)};\n --fs-alert-#{$name}-text: #{color.mix($color, $color-white, $dark-alert-text-weight, $method: oklch)};\n --fs-feedback-#{$name}-bg: #{color.mix($color, $color-gray-900, $dark-alert-bg-weight, $method: oklch)};\n }\n }\n }\n\n @media (prefers-color-scheme: dark) {\n [data-fs-theme=\"auto\"] {\n --fs-color-text: #{rgb-fallback($dark-text)};\n --fs-color-muted: #{rgb-fallback($dark-muted)};\n --fs-color-border: #{rgb-fallback($dark-border)};\n --fs-color-surface: #{rgb-fallback($dark-surface)};\n --fs-color-subtle: #{rgb-fallback($dark-subtle)};\n --fs-color-bg-surface: var(--fs-color-surface);\n --fs-color-bg-subtle: var(--fs-color-subtle);\n --fs-color-surface-raised: var(--fs-color-surface);\n --fs-color-surface-interactive: var(--fs-color-subtle);\n --fs-color-text-primary: var(--fs-color-text);\n --fs-color-text-muted: var(--fs-color-muted);\n --fs-color-border-default: var(--fs-color-border);\n --fs-color-focus: var(--fs-color-primary);\n --fs-tooltip-bg: #{rgb-fallback($color-gray-100)};\n --fs-tooltip-text: #{rgb-fallback($color-gray-900)};\n }\n }\n\n @media (forced-colors: active) {\n :root,\n [data-theme=\"dark\"],\n [data-fs-theme=\"light\"],\n [data-fs-theme=\"dark\"],\n [data-fs-theme=\"auto\"] {\n --fs-color-border: CanvasText;\n --fs-color-text: CanvasText;\n --fs-color-surface: Canvas;\n --fs-color-subtle: Canvas;\n --fs-focus-color: Highlight;\n }\n }\n}\n"]}
|