@erikt/ui 0.0.7 → 0.0.9

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.
Files changed (3) hide show
  1. package/README.md +25 -0
  2. package/package.json +4 -2
  3. package/ui.css.map +1 -1
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ ![](.github/cover-min.jpg)
2
+
3
+ # @erikt/ui
4
+
5
+ **[Documentation](https://ui.erikt.me)**
6
+
7
+ [![gzip size](https://img.badgesize.io/erikthq/ui/main/ui.css?compression=gzip&label=gzipped&color=3b82f6)](https://ui.erikt.me)
8
+
9
+ CSS cascade layers, custom properties, `color-mix()`, `light-dark()`, anchor positioning, and the Popover API have collectively closed most of the gap that large UI libraries were built to fill. @erikt/ui takes that foundation and adds a focused component layer on top. A single stylesheet that styles native HTML elements without requiring a component model, a compiler, or a runtime.
10
+
11
+ ```html
12
+ <link rel="stylesheet" href="https://esm.sh/@erikt/ui" />
13
+ ```
14
+
15
+ - 🗂️ **One file**
16
+ - 🏷️ **No class names required**
17
+ - ⚔️ **Your styles always win**
18
+ - 🌗 **Dark mode built in**
19
+ - 🎨 **Themeable**
20
+ - 📐 **Zero layout opinions**
21
+ - 🤖 **AI-ready**
22
+
23
+ ## License
24
+
25
+ MIT
package/package.json CHANGED
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "name": "@erikt/ui",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "type": "module",
5
+ "homepage": "https://ui.erikt.me",
5
6
  "exports": {
6
7
  ".": "./ui.css"
7
8
  },
8
9
  "style": "./ui.css",
9
10
  "files": [
10
11
  "ui.css",
11
- "ui.css.map"
12
+ "ui.css.map",
13
+ "README.md"
12
14
  ],
13
15
  "devDependencies": {
14
16
  "browserslist": "^4.28.1",
package/ui.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":null,"mappings":"AAAA,gBCAA,2QAYA,6BAIA,0EAOA,0DAUA,yBAMA,8BAKA,0BAIA,0DAMA,yBAKA,mDAIA,wCAGE,6CAAA,8CAMF,8FDxEA,UIAA,iyfSAA,gTAcE,+EAKA,6EAKA,4FAKA,yFAKA,0EAKA,0EAKA,0EAKA,0EAKA,0EAKA,0EAKA,6DAKA,4BRrEF,iGAOE,mIAQA,yCAIA,2SAcE,uCAIA,qdAcA,qBACE,4CAKF,8FAOF,gDAIA,uEGpEF,kJAQE,iCAIA,0EAOA,gIAKA,gIAKA,qDAIA,kEAGE,yDAKA,6DAQJ,0BACE,oCAGE,oEAMA,8EI3DJ,odAyBE,iBACE,qBACE,gDAKF,gEAKA,4EAMF,qCAKA,oBAIA,wEAMA,0BAIA,gLAWA,qGAOA,+DAKA,4CAMA,+GAKE,iBACE,qBACE,gDAKF,iDAKF,sFAKF,+EAIE,iBACE,qBACE,gDAKF,iDAKF,sFAKF,2DAIE,iBACE,qBACE,gDAKF,iDAKF,sFAKF,oFAKE,iBACE,qBACE,gCAKF,kCAMJ,qFAIE,iBACE,qBACE,oDAKF,qDAKF,0FAKF,uEAIE,iBACE,qBACE,oDAKF,qDAKF,2FOlNJ,yGAQE,oHAOE,wCAIA,sDAKA,2CAOF,0FAOA,4CAIA,2BAIE,4CAKF,2DqBnDF,2XAwBE,kDAMA,gBACE,mCAMF,+MAUA,4BAIA,gBACE,8BAMJ,iGrC1DA,sKAOE,kDAMF,uOAaE,+fAWA,keAWA,2EAKA,sCIrDF,oKAUE,0CAIA,sDAKA,mDAKA,4EIxBF,gGAKE,+DAIE,mBAKF,qIAAA,uIAAA,sIAAA,sIAAA,wIAAA,uIOdF,wIAOE,kDAMF,oOAaE,ibAWA,qCAKA,8FgB1CF,wGAOA,qNASE,8GAWA,0DAKA,iGAOF,0BACE,qCnB/BF,4iBA6BE,yDAMF,uFAIA,ucAaA,2IAOE,0IAMA,uEAOA,oFAKA,8HAMA,+FAKA,mFAKA,kIAME,oCAMF,uTAkBA,8BACE,0BAGA,qBAOJ,wFACE,oBAKF,mKAME,6SAgBE,gBAAiB,WAKnB,uNAQF,oOAKA,kOAKA,mPClMA,kXAiBE,mCAKA,oCAIA,sEAOA,wEIjCF,4BAGE,0JAQA,yJAQE,oCAIA,ycAeJ,iRAUA,8OAUA,0GC1DA,oBACE,0DAKA,gHCNF,+TAiBE,kDAKA,gDAKA,ybC3BF,kEAKE,6DAIA,qDAKA,gHAKA,iJAUF,2BrB7BA,iKAQE,qEAMA,qDAKA,6EInBF,iuBAqBE,mCAIA,sCIzBF,0XAQE,gDIRF,+BAGE,mBAIA,qLGPF,8OASE,8MAUA,yLAeA,iGAMA,6FAMA,sCkB9CF,wRAeE,yMAYA,mEAIE,qCAKF,2EAKA,sCCzCF,wEAGE,2GASA,sLAWA,sFASA,+HAKA,kNASA,6EAKA,qKASA,8EAKA,gKASA,8EAKA,iKAQA,qBACE,wCAMF,wDC9FF,sMCAA,4TAcE,uBAIA,yGAQE,sBC1BJ,2yBAIA,oMfJA,+FAKA,kGAQE,yDAIA,2EAKA,sEAKA,mQAYE,uCACA,yCACA,sCCzCJ,kZAuBE,0CAIE,kEAKA,2DAIA,0DAIA,6EAMM,6KAQR,4CAIA,mDAMA,gBACE,4DAOJ,iIAOA,kHAMA,sJASA,uDAGA,wDAGA,0DAMA,iIAOA,mIAQA,2HAOA,6HAQA,2IAQA,iJASA,6IAQA,mJCjKA,KACE,kFAOA,yLASE,4HAUA,qBACE,0CAKF,8CACE,icAcA,gDAMJ,sCAIA,+NC1DF,2CCCA,yCACE,4aAeF,kEAIA,kHCrBA,whBAwBE,4HAUA,sCAIA,wMAUA,kEAOE,gBAAiB,qBAMnB,gEAYA,6DAGE,kDAKE,gBAAiB,qBAMnB,qDAWF,gEAKA,oGAKA,2BACE,iDAMF,iFAKA,iDAKA,6CC7HF,+IASA,qEAGA,sEAGA,sEAGA,sEAGA,sEAGA,sEAGA,sEAGA,sEAGA,sEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAIA,qGAOA,mCAMA,+DAKE,qBACE,6CAMJ,oHAOA,6CAKA,wDAMA,yEAKA,oEAKA,2ECzJA,+BACE,uEAIA,gLAWE,sDAIA,wTAkBA,iPAaE,oEAMA,qBACE,qCAKF,iDAIA,wGAMA,sEAQJ,2GAMA,mHASA,69CAWE,gBAAiB,YC3GrB,OACE,6BAIA,8CASA,mCAKA,wHAWE,+BAGE,0EAOJ,4FAOE,0IAWA,4EAOF,iCAGE,0DAMF,0CC1EF,qLAWE,6BAIA,8HASA,qDAIA,mBAIA,+DAOA,+CjCOA","sources":["packages/core/src/main.css","packages/core/src/reset.css","packages/core/src/components/radio-group.css","packages/core/src/components/checkbox.css","packages/core/src/components/accordion.css","packages/core/src/easings.css","packages/core/src/components/select.css","packages/core/src/components/color-input.css","packages/core/src/components/card.css","packages/core/src/colors.css","packages/core/src/components/datalist.css","packages/core/src/components/badge.css","packages/core/src/components/text-field.css","packages/core/src/components/combobox.css","packages/core/src/components/date-input.css","packages/core/src/components/button.css","packages/core/src/components/file-drop.css","packages/core/src/components/expander.css","packages/core/src/components/focus-group.css","packages/core/src/components/textarea.css","packages/core/src/components/field.css","packages/core/src/components/progress.css","packages/core/src/components/popover.css","packages/core/src/components/menu.css","packages/core/src/components/dropdown.css","packages/core/src/components/submenu.css","packages/core/src/components/toggle.css","packages/core/src/components/table.css","packages/core/src/components/tabs.css","packages/core/src/components/prose.css","packages/core/src/components/empty.css","packages/core/src/components/separator.css","packages/core/src/components/switch.css","packages/core/src/components/tooltip.css","packages/core/src/components/code.css","packages/core/src/components/kbd.css","packages/core/src/components/radio.css","packages/core/src/components/button-group.css","packages/core/src/components/slider.css","packages/core/src/components/loading.css","packages/core/src/components/dialog.css"],"sourcesContent":["@layer ui-reset, ui;\n\n@import \"./reset.css\" layer(ui-reset);\n\n@import \"./easings.css\" layer(ui);\n@import \"./colors.css\" layer(ui);\n\n@import \"./components/badge.css\" layer(ui);\n@import \"./components/accordion.css\" layer(ui);\n@import \"./components/card.css\" layer(ui);\n@import \"./components/button.css\" layer(ui);\n@import \"./components/button-group.css\" layer(ui);\n@import \"./components/dialog.css\" layer(ui);\n@import \"./components/checkbox.css\" layer(ui);\n@import \"./components/color-input.css\" layer(ui);\n@import \"./components/date-input.css\" layer(ui);\n@import \"./components/radio.css\" layer(ui);\n@import \"./components/separator.css\" layer(ui);\n@import \"./components/text-field.css\" layer(ui);\n@import \"./components/file-drop.css\" layer(ui);\n@import \"./components/expander.css\" layer(ui);\n@import \"./components/focus-group.css\" layer(ui);\n@import \"./components/textarea.css\" layer(ui);\n@import \"./components/field.css\" layer(ui);\n@import \"./components/radio-group.css\" layer(ui);\n@import \"./components/select.css\" layer(ui);\n@import \"./components/datalist.css\" layer(ui);\n@import \"./components/combobox.css\" layer(ui);\n@import \"./components/slider.css\" layer(ui);\n@import \"./components/switch.css\" layer(ui);\n@import \"./components/tooltip.css\" layer(ui);\n@import \"./components/code.css\" layer(ui);\n@import \"./components/kbd.css\" layer(ui);\n@import \"./components/loading.css\" layer(ui);\n@import \"./components/progress.css\" layer(ui);\n@import \"./components/popover.css\" layer(ui);\n@import \"./components/menu.css\" layer(ui);\n@import \"./components/dropdown.css\" layer(ui);\n@import \"./components/submenu.css\" layer(ui);\n@import \"./components/toggle.css\" layer(ui);\n@import \"./components/table.css\" layer(ui);\n@import \"./components/tabs.css\" layer(ui);\n@import \"./components/prose.css\" layer(ui);\n@import \"./components/empty.css\" layer(ui);\n\n@layer ui {\n :root {\n --ui-spacing: 0.25em;\n\n --ui-spacing-1: calc(var(--ui-spacing) * 1);\n --ui-spacing-2: calc(var(--ui-spacing) * 2);\n --ui-spacing-3: calc(var(--ui-spacing) * 3);\n --ui-spacing-4: calc(var(--ui-spacing) * 4);\n --ui-spacing-5: calc(var(--ui-spacing) * 5);\n --ui-spacing-6: calc(var(--ui-spacing) * 6);\n --ui-spacing-7: calc(var(--ui-spacing) * 7);\n --ui-spacing-8: calc(var(--ui-spacing) * 8);\n\n --ui-background-color: var(--ui-neutral-50);\n --ui-text-color: var(--ui-neutral-950);\n }\n}\n",":root {\n interpolate-size: allow-keywords;\n\n font-family: system-ui;\n font-size: 14px;\n text-rendering: geometricPrecision;\n -webkit-font-smoothing: antialiased;\n -webkit-tap-highlight-color: transparent;\n -moz-osx-font-smoothing: grayscale;\n text-size-adjust: 100%;\n}\n\nhtml {\n scrollbar-gutter: stable;\n}\n\n:where(*) {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n text-wrap-style: pretty;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n text-wrap-style: balance;\n font-weight: 600;\n}\n\nul,\nol,\nli {\n list-style: none;\n}\n\nul li,\nol li {\n list-style: revert;\n}\n\na {\n color: var(--ui-primary);\n}\n\nimg {\n vertical-align: middle;\n object-fit: cover;\n max-width: 100%;\n}\n\nsvg {\n width: 1lh;\n height: 1lh;\n}\n\n::selection {\n background-color: var(--ui-neutral-200);\n}\n\ninput[type=\"number\"] {\n appearance: textfield;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n appearance: none;\n }\n}\n\na:focus-visible {\n border-radius: 8px;\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n}\n","fieldset:not([role=\"group\"]):has(input[type=\"radio\"], input[type=\"checkbox\"]) {\n display: flex;\n flex-direction: column;\n gap: var(--ui-spacing-2);\n border: none;\n padding: 0;\n margin: 0;\n\n > legend {\n font-weight: 600;\n padding: 0;\n margin-bottom: var(--ui-spacing-2);\n }\n\n > small {\n color: var(--ui-neutral-500);\n font-size: 0.875em;\n }\n\n &:has(input:required) > legend::after {\n content: \" *\";\n color: var(--ui-destructive);\n }\n}\n","label:not(.field):has(> input:where([type=\"checkbox\"])) {\n display: flex;\n align-items: center;\n gap: var(--ui-spacing-2);\n cursor: pointer;\n user-select: none;\n\n &:has(> input:disabled) {\n opacity: 0.4;\n cursor: default;\n }\n}\n\ninput[type=\"checkbox\"] {\n appearance: none;\n width: 16px;\n aspect-ratio: 1;\n border-radius: 4px;\n box-shadow: 0 0 0 1.5px var(--ui-neutral-300) inset;\n background-color: transparent;\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background-color 100ms,\n box-shadow 100ms;\n\n &:checked {\n background-color: var(--ui-primary);\n box-shadow: 0 0 0 1.5px var(--ui-primary) inset;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-9.5 -10 44 45' overflow='visible'%3E%3Crect x='-100' y='-100' width='200' height='200' fill='white'/%3E%3Cpath d='M5 12l5 5l10 -10' fill='none' stroke='black' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n mask-mode: luminance;\n mask-size: 24px;\n mask-position: 50%;\n mask-repeat: no-repeat;\n mask-clip: no-clip;\n }\n\n &:indeterminate {\n background-color: var(--ui-primary);\n box-shadow: 0 0 0 1.5px var(--ui-primary) inset;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -8 40 40' overflow='visible'%3E%3Crect x='-100' y='-100' width='200' height='200' fill='white'/%3E%3Cpath d='M6 12h12' fill='none' stroke='black' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E\");\n mask-mode: luminance;\n mask-size: 24px;\n mask-position: 50%;\n mask-repeat: no-repeat;\n mask-clip: no-clip;\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: default;\n }\n}\n","details {\n interpolate-size: allow-keywords;\n\n width: 100%;\n border-bottom: 1px solid var(--ui-neutral-200);\n /* border-radius: 8px; */\n\n &::details-content {\n transition:\n block-size 300ms var(--ease-glide),\n content-visibility 200ms allow-discrete;\n overflow: hidden;\n block-size: 0; /* Or also: height:0; */\n }\n\n &[open]::details-content {\n block-size: auto; /* Or also: height:auto; */\n }\n\n summary {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n cursor: pointer;\n list-style: none;\n user-select: none;\n padding-block: var(--ui-spacing-3);\n\n text-decoration: underline;\n text-decoration-color: transparent;\n transition: text-decoration-color 100ms;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::after {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");\n mask-size: 1rem;\n mask-repeat: no-repeat;\n mask-position: center;\n width: 1rem;\n aspect-ratio: 1;\n flex-shrink: 0;\n transition: transform 300ms var(--ease-glide);\n }\n\n @media (hover: hover) {\n &:hover {\n text-decoration-color: currentColor;\n }\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n border-radius: 8px;\n }\n }\n\n &[open] > summary::after {\n transform: rotate(-180deg);\n }\n\n > *:not(summary) {\n padding-block: var(--ui-spacing-3) var(--ui-spacing-6);\n }\n}\n",":root {\n --ease-glide: linear(\n 0,\n 0.001 0.4%,\n 0.004 0.9%,\n 0.018 1.9%,\n 0.038 2.9%,\n 0.07 4.1%,\n 0.1 5.1%,\n 0.136 6.2%,\n 0.33 11.7%,\n 0.426 14.6%,\n 0.475 16.2%,\n 0.521 17.8%,\n 0.563 19.4%,\n 0.602 21%,\n 0.64 22.7%,\n 0.675 24.4%,\n 0.708 26.2%,\n 0.739 28%,\n 0.767 29.9%,\n 0.793 31.8%,\n 0.817 33.8%,\n 0.838 35.8%,\n 0.859 38.1%,\n 0.879 40.6%,\n 0.897 43.1%,\n 0.913 45.8%,\n 0.927 48.7%,\n 0.939 51.7%,\n 0.95 54.9%,\n 0.96 58.4%,\n 0.975 66%,\n 0.986 74.9%,\n 0.993 85.9%,\n 1\n );\n\n --ease-snap: linear(0, 0.03 1.1%, 0.125 2.4%, 0.906 9.8%, 1.046 12.3%, 1.11 15%, 1.116 16.3%, 1.11 17.8%, 1.014 25.8%, 0.987 31.2%, 1.001 47.2%, 1);\n\n --ease-heavy: linear(\n 0,\n 0.01 0.7%,\n 0.044 1.5%,\n 0.171 3.1%,\n 0.339 4.6%,\n 0.857 8.7%,\n 1.088 11%,\n 1.17 12.1%,\n 1.232 13.2%,\n 1.273 14.3%,\n 1.297 15.5%,\n 1.299 16.9%,\n 1.273 18.5%,\n 1.22 20.3%,\n 1.057 24.6%,\n 0.986 26.8%,\n 0.934 29.2%,\n 0.911 31.7%,\n 0.918 34.8%,\n 1.003 43%,\n 1.027 47.8%,\n 1.025 51.1%,\n 0.992 63.8%,\n 1.002 79.7%,\n 1\n );\n\n --ease-in-sine: cubic-bezier(0.12, 0, 0.39, 0);\n --ease-out-sine: cubic-bezier(0.61, 1, 0.88, 1);\n --ease-in-out-sine: cubic-bezier(0.37, 0, 0.63, 1);\n\n --ease-in-quad: cubic-bezier(0.11, 0, 0.5, 0);\n --ease-out-quad: cubic-bezier(0.5, 1, 0.89, 1);\n --ease-in-out-quad: cubic-bezier(0.45, 0, 0.55, 1);\n\n --ease-in-cubic: cubic-bezier(0.32, 0, 0.67, 0);\n --ease-out-cubic: cubic-bezier(0.33, 1, 0.68, 1);\n --ease-in-out-cubic: cubic-bezier(0.65, 0, 0.35, 1);\n\n --ease-in-quart: cubic-bezier(0.5, 0, 0.75, 0);\n --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);\n --ease-in-out-quart: cubic-bezier(0.76, 0, 0.24, 1);\n\n --ease-in-quint: cubic-bezier(0.64, 0, 0.78, 0);\n --ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1);\n --ease-in-out-quint: cubic-bezier(0.83, 0, 0.17, 1);\n\n --ease-in-expo: cubic-bezier(0.7, 0, 0.84, 0);\n --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);\n --ease-in-out-expo: cubic-bezier(0.87, 0, 0.13, 1);\n\n --ease-in-circ: cubic-bezier(0.55, 0, 1, 0.45);\n --ease-out-circ: cubic-bezier(0, 0.55, 0.45, 1);\n --ease-in-out-circ: cubic-bezier(0.85, 0, 0.15, 1);\n\n --ease-in-back: cubic-bezier(0.36, 0, 0.66, -0.56);\n --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);\n --ease-in-out-back: cubic-bezier(0.68, -0.6, 0.32, 1.6);\n}\n","select {\n appearance: none;\n border: none;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n padding-inline-end: calc(1rem + var(--ui-spacing-6));\n border-radius: var(--ui-spacing-2);\n\n font: inherit;\n cursor: pointer;\n user-select: none;\n field-sizing: content;\n\n background-color: var(--ui-background-color);\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right var(--ui-spacing-3) center;\n background-size: 1rem;\n\n &:focus {\n box-shadow: 0 0 0 1px currentColor inset;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: default;\n }\n}\n","input[type=\"color\"] {\n appearance: none;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: 8px;\n border: 1px solid var(--ui-neutral-200);\n padding: 0.2rem;\n background: none;\n cursor: pointer;\n\n &::-webkit-color-swatch-wrapper {\n padding: 0;\n }\n\n &::-webkit-color-swatch {\n border: none;\n border-radius: 4px;\n }\n\n &::-moz-color-swatch {\n border: none;\n border-radius: 4px;\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n}\n","article {\n --card-border-radius: 12px;\n\n box-shadow: 0 0 0 1px inset var(--ui-neutral-100);\n border-radius: 12px;\n overflow: hidden;\n padding: var(--ui-spacing-4);\n\n &:has(> header, > footer) {\n padding: 0;\n }\n\n & > header,\n & > footer {\n display: flex;\n align-items: center;\n gap: var(--ui-spacing-2);\n }\n\n & > header {\n box-shadow: 0 0 0 1px inset var(--ui-neutral-100);\n border-radius: var(--card-border-radius) var(--card-border-radius) 0 0;\n }\n\n & > footer {\n box-shadow: 0 0 0 1px inset var(--ui-neutral-100);\n border-radius: 0 0 var(--card-border-radius) var(--card-border-radius);\n }\n\n &:has(> header, > footer) > * {\n padding: var(--ui-spacing-4);\n }\n\n &:has(> header, > footer) > :not(header):not(footer) {\n margin-inline: 1px;\n\n &:first-child {\n margin-top: 1px;\n border-radius: 11px 11px 0 0;\n }\n\n &:last-child {\n margin-bottom: 1px;\n border-radius: 0 0 11px 11px;\n }\n }\n}\n\n/* Reduce padding when the card's parent container is narrow */\n@container (max-width: 320px) {\n article {\n padding: var(--ui-spacing-3);\n\n & > header,\n & > footer {\n padding: var(--ui-spacing-3);\n gap: var(--ui-spacing);\n }\n\n &:has(> header, > footer) > :not(header):not(footer) {\n padding: var(--ui-spacing-3);\n }\n }\n}\n",":root {\n color-scheme: light dark;\n\n --ui-primary-light: dodgerblue;\n --ui-primary-dark: color-mix(in oklab, dodgerblue, white 20%);\n\n --ui-primary: light-dark(var(--ui-primary-light), var(--ui-primary-dark));\n \n --ui-neutral: #8b8c93;\n --ui-constructive: #5dbb55;\n --ui-destructive: #ef5655;\n\n --ui-color1: crimson;\n --ui-color2: gold;\n --ui-color3: forestgreen;\n --ui-color4: royalblue;\n --ui-color5: slateblue;\n --ui-color6: plum;\n\n --ui-primary-50: light-dark(color-mix(in oklab, var(--ui-primary), white 95%), color-mix(in oklab, var(--ui-primary), black 73.75%));\n\n --ui-primary-100: light-dark(color-mix(in oklab, var(--ui-primary), white 87%), color-mix(in oklab, var(--ui-primary), black 58.5%));\n\n --ui-primary-200: light-dark(color-mix(in oklab, var(--ui-primary), white 70%), color-mix(in oklab, var(--ui-primary), black 43.5%));\n\n --ui-primary-300: light-dark(color-mix(in oklab, var(--ui-primary), white 47%), color-mix(in oklab, var(--ui-primary), black 28.25%));\n\n --ui-primary-400: light-dark(color-mix(in oklab, var(--ui-primary), white 23%), color-mix(in oklab, var(--ui-primary), black 15.5%));\n\n --ui-primary-500: var(--ui-primary);\n\n --ui-primary-600: light-dark(color-mix(in oklab, var(--ui-primary), black 15.5%), color-mix(in oklab, var(--ui-primary), white 23%));\n\n --ui-primary-700: light-dark(color-mix(in oklab, var(--ui-primary), black 28.25%), color-mix(in oklab, var(--ui-primary), white 47%));\n\n --ui-primary-800: light-dark(color-mix(in oklab, var(--ui-primary), black 43.5%), color-mix(in oklab, var(--ui-primary), white 70%));\n\n --ui-primary-900: light-dark(color-mix(in oklab, var(--ui-primary), black 58.5%), color-mix(in oklab, var(--ui-primary), white 87%));\n\n --ui-primary-950: light-dark(color-mix(in oklab, var(--ui-primary), black 73.75%), color-mix(in oklab, var(--ui-primary), white 95%));\n\n --ui-neutral-0: light-dark(color-mix(in oklab, var(--ui-neutral), white 100%), color-mix(in oklab, var(--ui-neutral), black 100%));\n\n --ui-neutral-50: light-dark(color-mix(in oklab, var(--ui-neutral), white 95%), color-mix(in oklab, var(--ui-neutral), black 73.75%));\n\n --ui-neutral-100: light-dark(color-mix(in oklab, var(--ui-neutral), white 87%), color-mix(in oklab, var(--ui-neutral), black 58.5%));\n\n --ui-neutral-200: light-dark(color-mix(in oklab, var(--ui-neutral), white 70%), color-mix(in oklab, var(--ui-neutral), black 43.5%));\n\n --ui-neutral-300: light-dark(color-mix(in oklab, var(--ui-neutral), white 47%), color-mix(in oklab, var(--ui-neutral), black 28.25%));\n\n --ui-neutral-400: light-dark(color-mix(in oklab, var(--ui-neutral), white 23%), color-mix(in oklab, var(--ui-neutral), black 15.5%));\n\n --ui-neutral-500: var(--ui-neutral);\n\n --ui-neutral-600: light-dark(color-mix(in oklab, var(--ui-neutral), black 15.5%), color-mix(in oklab, var(--ui-neutral), white 23%));\n\n --ui-neutral-700: light-dark(color-mix(in oklab, var(--ui-neutral), black 28.25%), color-mix(in oklab, var(--ui-neutral), white 47%));\n\n --ui-neutral-800: light-dark(color-mix(in oklab, var(--ui-neutral), black 43.5%), color-mix(in oklab, var(--ui-neutral), white 70%));\n\n --ui-neutral-900: light-dark(color-mix(in oklab, var(--ui-neutral), black 58.5%), color-mix(in oklab, var(--ui-neutral), white 87%));\n\n --ui-neutral-950: light-dark(color-mix(in oklab, var(--ui-neutral), black 73.75%), color-mix(in oklab, var(--ui-neutral), white 95%));\n\n --ui-neutral-1000: light-dark(color-mix(in oklab, var(--ui-neutral), black 100%), color-mix(in oklab, var(--ui-neutral), white 100%));\n\n --ui-constructive-50: light-dark(color-mix(in oklab, var(--ui-constructive), white 95%), color-mix(in oklab, var(--ui-constructive), black 73.75%));\n\n --ui-constructive-100: light-dark(color-mix(in oklab, var(--ui-constructive), white 87%), color-mix(in oklab, var(--ui-constructive), black 58.5%));\n\n --ui-constructive-200: light-dark(color-mix(in oklab, var(--ui-constructive), white 70%), color-mix(in oklab, var(--ui-constructive), black 43.5%));\n\n --ui-constructive-300: light-dark(color-mix(in oklab, var(--ui-constructive), white 47%), color-mix(in oklab, var(--ui-constructive), black 28.25%));\n\n --ui-constructive-400: light-dark(color-mix(in oklab, var(--ui-constructive), white 23%), color-mix(in oklab, var(--ui-constructive), black 15.5%));\n\n --ui-constructive-500: var(--ui-constructive);\n\n --ui-constructive-600: light-dark(color-mix(in oklab, var(--ui-constructive), black 15.5%), color-mix(in oklab, var(--ui-constructive), white 23%));\n\n --ui-constructive-700: light-dark(color-mix(in oklab, var(--ui-constructive), black 28.25%), color-mix(in oklab, var(--ui-constructive), white 47%));\n\n --ui-constructive-800: light-dark(color-mix(in oklab, var(--ui-constructive), black 43.5%), color-mix(in oklab, var(--ui-constructive), white 70%));\n\n --ui-constructive-900: light-dark(color-mix(in oklab, var(--ui-constructive), black 58.5%), color-mix(in oklab, var(--ui-constructive), white 87%));\n\n --ui-constructive-950: light-dark(color-mix(in oklab, var(--ui-constructive), black 73.75%), color-mix(in oklab, var(--ui-constructive), white 95%));\n\n --ui-destructive-50: light-dark(color-mix(in oklab, var(--ui-destructive), white 95%), color-mix(in oklab, var(--ui-destructive), black 73.75%));\n\n --ui-destructive-100: light-dark(color-mix(in oklab, var(--ui-destructive), white 87%), color-mix(in oklab, var(--ui-destructive), black 58.5%));\n\n --ui-destructive-200: light-dark(color-mix(in oklab, var(--ui-destructive), white 70%), color-mix(in oklab, var(--ui-destructive), black 43.5%));\n\n --ui-destructive-300: light-dark(color-mix(in oklab, var(--ui-destructive), white 47%), color-mix(in oklab, var(--ui-destructive), black 28.25%));\n\n --ui-destructive-400: light-dark(color-mix(in oklab, var(--ui-destructive), white 23%), color-mix(in oklab, var(--ui-destructive), black 15.5%));\n\n --ui-destructive-500: var(--ui-destructive);\n\n --ui-destructive-600: light-dark(color-mix(in oklab, var(--ui-destructive), black 15.5%), color-mix(in oklab, var(--ui-destructive), white 23%));\n\n --ui-destructive-700: light-dark(color-mix(in oklab, var(--ui-destructive), black 28.25%), color-mix(in oklab, var(--ui-destructive), white 47%));\n\n --ui-destructive-800: light-dark(color-mix(in oklab, var(--ui-destructive), black 43.5%), color-mix(in oklab, var(--ui-destructive), white 70%));\n\n --ui-destructive-900: light-dark(color-mix(in oklab, var(--ui-destructive), black 58.5%), color-mix(in oklab, var(--ui-destructive), white 87%));\n\n --ui-destructive-950: light-dark(color-mix(in oklab, var(--ui-destructive), black 73.75%), color-mix(in oklab, var(--ui-destructive), white 95%));\n\n --ui-color1-50: light-dark(color-mix(in oklab, var(--ui-color1), white 95%), color-mix(in oklab, var(--ui-color1), black 73.75%));\n\n --ui-color1-100: light-dark(color-mix(in oklab, var(--ui-color1), white 87%), color-mix(in oklab, var(--ui-color1), black 58.5%));\n\n --ui-color1-200: light-dark(color-mix(in oklab, var(--ui-color1), white 70%), color-mix(in oklab, var(--ui-color1), black 43.5%));\n\n --ui-color1-300: light-dark(color-mix(in oklab, var(--ui-color1), white 47%), color-mix(in oklab, var(--ui-color1), black 28.25%));\n\n --ui-color1-400: light-dark(color-mix(in oklab, var(--ui-color1), white 23%), color-mix(in oklab, var(--ui-color1), black 15.5%));\n\n --ui-color1-500: var(--ui-color1);\n\n --ui-color1-600: light-dark(color-mix(in oklab, var(--ui-color1), black 15.5%), color-mix(in oklab, var(--ui-color1), white 15%));\n\n --ui-color1-700: light-dark(color-mix(in oklab, var(--ui-color1), black 28.25%), color-mix(in oklab, var(--ui-color1), white 47%));\n\n --ui-color1-800: light-dark(color-mix(in oklab, var(--ui-color1), black 43.5%), color-mix(in oklab, var(--ui-color1), white 70%));\n\n --ui-color1-900: light-dark(color-mix(in oklab, var(--ui-color1), black 58.5%), color-mix(in oklab, var(--ui-color1), white 87%));\n\n --ui-color1-950: light-dark(color-mix(in oklab, var(--ui-color1), black 73.75%), color-mix(in oklab, var(--ui-color1), white 95%));\n\n --ui-color2-50: light-dark(color-mix(in oklab, var(--ui-color2), white 95%), color-mix(in oklab, var(--ui-color2), black 73.75%));\n\n --ui-color2-100: light-dark(color-mix(in oklab, var(--ui-color2), white 87%), color-mix(in oklab, var(--ui-color2), black 58.5%));\n\n --ui-color2-200: light-dark(color-mix(in oklab, var(--ui-color2), white 70%), color-mix(in oklab, var(--ui-color2), black 43.5%));\n\n --ui-color2-300: light-dark(color-mix(in oklab, var(--ui-color2), white 47%), color-mix(in oklab, var(--ui-color2), black 28.25%));\n\n --ui-color2-400: light-dark(color-mix(in oklab, var(--ui-color2), white 23%), color-mix(in oklab, var(--ui-color2), black 15.5%));\n\n --ui-color2-500: var(--ui-color2);\n\n --ui-color2-600: light-dark(color-mix(in oklab, var(--ui-color2), black 15.5%), color-mix(in oklab, var(--ui-color2), white 15%));\n\n --ui-color2-700: light-dark(color-mix(in oklab, var(--ui-color2), black 28.25%), color-mix(in oklab, var(--ui-color2), white 47%));\n\n --ui-color2-800: light-dark(color-mix(in oklab, var(--ui-color2), black 43.5%), color-mix(in oklab, var(--ui-color2), white 70%));\n\n --ui-color2-900: light-dark(color-mix(in oklab, var(--ui-color2), black 58.5%), color-mix(in oklab, var(--ui-color2), white 87%));\n\n --ui-color2-950: light-dark(color-mix(in oklab, var(--ui-color2), black 73.75%), color-mix(in oklab, var(--ui-color2), white 95%));\n\n --ui-color3-50: light-dark(color-mix(in oklab, var(--ui-color3), white 95%), color-mix(in oklab, var(--ui-color3), black 73.75%));\n\n --ui-color3-100: light-dark(color-mix(in oklab, var(--ui-color3), white 87%), color-mix(in oklab, var(--ui-color3), black 58.5%));\n\n --ui-color3-200: light-dark(color-mix(in oklab, var(--ui-color3), white 70%), color-mix(in oklab, var(--ui-color3), black 43.5%));\n\n --ui-color3-300: light-dark(color-mix(in oklab, var(--ui-color3), white 47%), color-mix(in oklab, var(--ui-color3), black 28.25%));\n\n --ui-color3-400: light-dark(color-mix(in oklab, var(--ui-color3), white 23%), color-mix(in oklab, var(--ui-color3), black 15.5%));\n\n --ui-color3-500: var(--ui-color3);\n\n --ui-color3-600: light-dark(color-mix(in oklab, var(--ui-color3), black 15.5%), color-mix(in oklab, var(--ui-color3), white 15%));\n\n --ui-color3-700: light-dark(color-mix(in oklab, var(--ui-color3), black 28.25%), color-mix(in oklab, var(--ui-color3), white 47%));\n\n --ui-color3-800: light-dark(color-mix(in oklab, var(--ui-color3), black 43.5%), color-mix(in oklab, var(--ui-color3), white 70%));\n\n --ui-color3-900: light-dark(color-mix(in oklab, var(--ui-color3), black 58.5%), color-mix(in oklab, var(--ui-color3), white 87%));\n\n --ui-color3-950: light-dark(color-mix(in oklab, var(--ui-color3), black 73.75%), color-mix(in oklab, var(--ui-color3), white 95%));\n\n --ui-color4-50: light-dark(color-mix(in oklab, var(--ui-color4), white 95%), color-mix(in oklab, var(--ui-color4), black 73.75%));\n\n --ui-color4-100: light-dark(color-mix(in oklab, var(--ui-color4), white 87%), color-mix(in oklab, var(--ui-color4), black 58.5%));\n\n --ui-color4-200: light-dark(color-mix(in oklab, var(--ui-color4), white 70%), color-mix(in oklab, var(--ui-color4), black 43.5%));\n\n --ui-color4-300: light-dark(color-mix(in oklab, var(--ui-color4), white 47%), color-mix(in oklab, var(--ui-color4), black 28.25%));\n\n --ui-color4-400: light-dark(color-mix(in oklab, var(--ui-color4), white 23%), color-mix(in oklab, var(--ui-color4), black 15.5%));\n\n --ui-color4-500: var(--ui-color4);\n\n --ui-color4-600: light-dark(color-mix(in oklab, var(--ui-color4), black 15.5%), color-mix(in oklab, var(--ui-color4), white 15%));\n\n --ui-color4-700: light-dark(color-mix(in oklab, var(--ui-color4), black 28.25%), color-mix(in oklab, var(--ui-color4), white 47%));\n\n --ui-color4-800: light-dark(color-mix(in oklab, var(--ui-color4), black 43.5%), color-mix(in oklab, var(--ui-color4), white 70%));\n\n --ui-color4-900: light-dark(color-mix(in oklab, var(--ui-color4), black 58.5%), color-mix(in oklab, var(--ui-color4), white 87%));\n\n --ui-color4-950: light-dark(color-mix(in oklab, var(--ui-color4), black 73.75%), color-mix(in oklab, var(--ui-color4), white 95%));\n\n --ui-color5-50: light-dark(color-mix(in oklab, var(--ui-color5), white 95%), color-mix(in oklab, var(--ui-color5), black 73.75%));\n\n --ui-color5-100: light-dark(color-mix(in oklab, var(--ui-color5), white 87%), color-mix(in oklab, var(--ui-color5), black 58.5%));\n\n --ui-color5-200: light-dark(color-mix(in oklab, var(--ui-color5), white 70%), color-mix(in oklab, var(--ui-color5), black 43.5%));\n\n --ui-color5-300: light-dark(color-mix(in oklab, var(--ui-color5), white 47%), color-mix(in oklab, var(--ui-color5), black 28.25%));\n\n --ui-color5-400: light-dark(color-mix(in oklab, var(--ui-color5), white 23%), color-mix(in oklab, var(--ui-color5), black 15.5%));\n\n --ui-color5-500: var(--ui-color5);\n\n --ui-color5-600: light-dark(color-mix(in oklab, var(--ui-color5), black 15.5%), color-mix(in oklab, var(--ui-color5), white 15%));\n\n --ui-color5-700: light-dark(color-mix(in oklab, var(--ui-color5), black 28.25%), color-mix(in oklab, var(--ui-color5), white 47%));\n\n --ui-color5-800: light-dark(color-mix(in oklab, var(--ui-color5), black 43.5%), color-mix(in oklab, var(--ui-color5), white 70%));\n\n --ui-color5-900: light-dark(color-mix(in oklab, var(--ui-color5), black 58.5%), color-mix(in oklab, var(--ui-color5), white 87%));\n\n --ui-color5-950: light-dark(color-mix(in oklab, var(--ui-color5), black 73.75%), color-mix(in oklab, var(--ui-color5), white 95%));\n\n --ui-color6-50: light-dark(color-mix(in oklab, var(--ui-color6), white 95%), color-mix(in oklab, var(--ui-color6), black 73.75%));\n\n --ui-color6-100: light-dark(color-mix(in oklab, var(--ui-color6), white 87%), color-mix(in oklab, var(--ui-color6), black 58.5%));\n\n --ui-color6-200: light-dark(color-mix(in oklab, var(--ui-color6), white 70%), color-mix(in oklab, var(--ui-color6), black 43.5%));\n\n --ui-color6-300: light-dark(color-mix(in oklab, var(--ui-color6), white 47%), color-mix(in oklab, var(--ui-color6), black 28.25%));\n\n --ui-color6-400: light-dark(color-mix(in oklab, var(--ui-color6), white 23%), color-mix(in oklab, var(--ui-color6), black 15.5%));\n\n --ui-color6-500: var(--ui-color6);\n\n --ui-color6-600: light-dark(color-mix(in oklab, var(--ui-color6), black 15.5%), color-mix(in oklab, var(--ui-color6), white 15%));\n\n --ui-color6-700: light-dark(color-mix(in oklab, var(--ui-color6), black 28.25%), color-mix(in oklab, var(--ui-color6), white 47%));\n\n --ui-color6-800: light-dark(color-mix(in oklab, var(--ui-color6), black 43.5%), color-mix(in oklab, var(--ui-color6), white 70%));\n\n --ui-color6-900: light-dark(color-mix(in oklab, var(--ui-color6), black 58.5%), color-mix(in oklab, var(--ui-color6), white 87%));\n\n --ui-color6-950: light-dark(color-mix(in oklab, var(--ui-color6), black 73.75%), color-mix(in oklab, var(--ui-color6), white 95%));\n}\n","input[list] {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6l6 -6'/%3E%3C%2Fsvg%3E\");\n background-repeat: no-repeat;\n background-position: right var(--ui-spacing-3) center;\n background-size: 1rem;\n /* padding-inline-end: calc(1rem + var(--ui-spacing-6)); */\n\n /* keep the native indicator functional but invisible so clicks still open the list */\n &::-webkit-calendar-picker-indicator {\n opacity: 0;\n }\n}\n",".badge {\n display: inline-flex;\n align-items: center;\n gap: var(--ui-spacing-1);\n padding-inline: var(--ui-spacing-2);\n border-radius: 999px;\n font-size: 0.75rem;\n font-weight: 500;\n letter-spacing: 0.02em;\n user-select: none;\n line-height: 1.5;\n background-color: var(--ui-neutral-200);\n color: var(--ui-neutral-700);\n\n &.secondary {\n background-color: var(--ui-neutral-700);\n color: var(--ui-neutral-100);\n }\n\n &.primary {\n background-color: var(--ui-primary-200);\n color: var(--ui-primary-700);\n }\n\n &.constructive {\n background-color: var(--ui-constructive-200);\n color: var(--ui-constructive-700);\n }\n\n &.destructive {\n background-color: var(--ui-destructive-200);\n color: var(--ui-destructive-700);\n }\n\n &.color1 {\n background-color: var(--ui-color1-200);\n color: var(--ui-color1-700);\n }\n\n &.color2 {\n background-color: var(--ui-color2-200);\n color: var(--ui-color2-700);\n }\n\n &.color3 {\n background-color: var(--ui-color3-200);\n color: var(--ui-color3-700);\n }\n\n &.color4 {\n background-color: var(--ui-color4-200);\n color: var(--ui-color4-700);\n }\n\n &.color5 {\n background-color: var(--ui-color5-200);\n color: var(--ui-color5-700);\n }\n\n &.color6 {\n background-color: var(--ui-color6-200);\n color: var(--ui-color6-700);\n }\n\n &.outlined {\n background-color: transparent;\n box-shadow: 0 0 0 1px currentColor inset;\n }\n\n svg {\n width: 1em;\n height: 1em;\n }\n}\n","/* @keyframes prevent-scroll {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n} */\n\ninput[type=\"text\"],\ninput[type=\"email\"],\ninput[type=\"search\"],\ninput[type=\"password\"],\ninput[type=\"number\"],\ninput[type=\"tel\"],\ninput[type=\"url\"],\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"],\ninput[type=\"week\"] {\n appearance: none;\n border: none;\n\n background-color: transparent;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: 8px;\n\n font: inherit;\n line-height: calc((16 / 14) * 1rem);\n\n transition-property: padding-inline-start;\n transition-duration: 150ms;\n transition-timing-function: var(--ease-glide);\n\n &:focus-visible {\n box-shadow: 0 0 0 1px currentColor inset;\n outline: none;\n }\n}\n\nlabel:has([data-suffix]) input[type=\"search\"]::-webkit-search-cancel-button {\n display: none;\n}\n\ninput[type=\"search\"]::-webkit-search-cancel-button {\n appearance: none;\n width: 1em;\n height: 1em;\n cursor: pointer;\n background-color: var(--ui-neutral-400);\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6l-12 12'/%3E%3Cpath d='M6 6l12 12'/%3E%3C/svg%3E\");\n mask-size: contain;\n mask-repeat: no-repeat;\n mask-position: center;\n}\n\n/* Input with leading/trailing adornments (svg, kbd, button, etc.) */\nlabel:not(.toggle):has(> [data-prefix], > [data-suffix]) {\n display: grid;\n grid-template-columns: auto 1fr auto auto;\n align-items: center;\n cursor: text;\n\n /* Input spans all columns as the full-width background */\n > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n grid-column: 1 / -1;\n grid-row: 1;\n }\n\n /* Adornments sit on top */\n > [data-prefix],\n > [data-suffix] {\n grid-row: 1;\n position: relative;\n z-index: 1;\n }\n\n > [data-prefix]:not(button),\n > [data-suffix]:not(button) {\n color: var(--ui-neutral-400);\n }\n\n > [data-prefix] {\n grid-column: 1;\n margin-inline: var(--ui-spacing-3) var(--ui-spacing-2);\n transition: opacity 150ms var(--ease-glide);\n }\n\n > [data-suffix]:last-child {\n grid-column: 4;\n margin-inline: var(--ui-spacing-2) var(--ui-spacing-3);\n }\n\n > [data-suffix]:not(:last-child) {\n grid-column: 3;\n margin-inline: var(--ui-spacing-2) 0;\n }\n\n > button[data-suffix] {\n padding: var(--ui-spacing-2) var(--ui-spacing-2);\n font-size: smaller;\n height: calc(100% - 8px);\n border-radius: 4px;\n\n &:last-child {\n margin-inline-end: 4px;\n }\n }\n\n /* Spinner always rendered in column 1; crossfades with data-prefix */\n &::before {\n content: \"\";\n display: block;\n grid-column: 1;\n grid-row: 1;\n z-index: 2;\n position: relative;\n width: 1em;\n height: 1em;\n background-color: var(--ui-neutral-400);\n mask-image: var(--ui-loading);\n mask-size: contain;\n mask-repeat: no-repeat;\n margin-inline: var(--ui-spacing-3) var(--ui-spacing-2);\n opacity: 0;\n transition: opacity 150ms var(--ease-glide);\n }\n\n &:has(> input[aria-busy=\"true\"]) {\n > [data-prefix] {\n opacity: 0;\n }\n &::before {\n opacity: 1;\n }\n }\n}\n\n/* aria-busy spinner for inputs without adornments */\nlabel:not(.toggle):not(:has(> [data-prefix], > [data-suffix])):has(> input[aria-busy=\"true\"]) {\n &::before {\n opacity: 1;\n }\n}\n\nlabel:not(.toggle):not(:has(> [data-prefix], > [data-suffix])):has(> input[aria-busy=\"true\"]) {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n cursor: text;\n\n &::before {\n content: \"\";\n display: block;\n grid-column: 1;\n grid-row: 1;\n z-index: 1;\n position: relative;\n width: 1em;\n height: 1em;\n background-color: var(--ui-neutral-400);\n mask-image: var(--ui-loading);\n mask-size: contain;\n mask-repeat: no-repeat;\n margin-inline: var(--ui-spacing-3) var(--ui-spacing-2);\n transition: opacity 150ms var(--ease-glide);\n\n @starting-style {\n opacity: 0;\n }\n }\n\n > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n grid-column: 1 / -1;\n grid-row: 1;\n padding-inline-start: calc(var(--ui-spacing-3) + 1rem + var(--ui-spacing-2));\n }\n}\n\n/* Offset input text to clear leading adornment */\nlabel:not(.toggle):has(> [data-prefix]) > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n padding-inline-start: calc(var(--ui-spacing-3) + 1lh + var(--ui-spacing-2));\n}\n\n/* Offset input text to clear one trailing adornment */\nlabel:not(.toggle):has(> [data-suffix]) > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n padding-inline-end: calc(var(--ui-spacing-3) + 1lh + var(--ui-spacing-2));\n}\n\n/* Offset input text to clear two trailing adornments */\nlabel:not(.toggle):has(> [data-suffix]:not(:last-child)) > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n padding-inline-end: calc(var(--ui-spacing-3) + 2lh + var(--ui-spacing-2));\n}\n",".combobox {\n display: inline-block;\n\n > input {\n width: 100%;\n }\n\n > [popover] > menu:not(:has(li:not([hidden])))::after {\n content: \"No results\";\n display: block;\n padding: var(--ui-spacing-2) var(--ui-spacing-3);\n color: var(--ui-neutral-400);\n text-align: center;\n }\n}\n","input[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"],\ninput[type=\"week\"] {\n &::-webkit-calendar-picker-indicator {\n opacity: 0.5;\n cursor: pointer;\n\n &:hover {\n opacity: 1;\n }\n }\n\n &::-webkit-datetime-edit-day-field:focus,\n &::-webkit-datetime-edit-month-field:focus,\n &::-webkit-datetime-edit-year-field:focus,\n &::-webkit-datetime-edit-hour-field:focus,\n &::-webkit-datetime-edit-minute-field:focus,\n &::-webkit-datetime-edit-ampm-field:focus {\n background-color: var(--ui-primary);\n color: var(--ui-neutral-0);\n border-radius: 2px;\n outline: none;\n }\n}\n","button,\n.button {\n transition-property: translate, background-color;\n transition-duration: 100ms;\n transition-timing-function: ease-out;\n\n background-color: var(--ui-primary);\n border: none;\n color: var(--ui-neutral-50);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5em;\n\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: 8px;\n\n font: inherit;\n line-height: calc((16 / 14) * 1rem);\n cursor: pointer;\n user-select: none;\n text-decoration: none;\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-primary-600);\n }\n }\n\n &:active {\n background-color: var(--ui-primary-700);\n translate: 0 1px;\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n }\n\n &:disabled {\n cursor: default;\n opacity: 0.4;\n }\n\n svg {\n flex-shrink: 0;\n }\n\n kbd {\n padding-block: 0;\n padding-inline: var(--ui-spacing);\n margin-left: auto;\n }\n\n .badge {\n margin-left: auto;\n }\n\n &[aria-busy=\"true\"]:before {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: var(--ui-loading);\n mask-size: 1rem;\n width: 1rem;\n height: 1rem;\n mask-repeat: no-repeat;\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-primary-600);\n translate: 0 1px;\n }\n\n /* modifiers */\n\n &.round {\n padding-inline: var(--ui-spacing-2);\n border-radius: 100px;\n }\n\n &.square {\n padding-inline: var(--ui-spacing-2);\n }\n\n /* variants */\n\n &.outlined {\n color: var(--ui-neutral-950);\n background-color: transparent;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-neutral-100);\n }\n }\n\n &:active {\n background-color: var(--ui-neutral-200);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-neutral-100);\n }\n }\n\n &.secondary {\n background-color: var(--ui-neutral-100);\n color: var(--ui-neutral-950);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-neutral-200);\n }\n }\n\n &:active {\n background-color: var(--ui-neutral-300);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-neutral-300);\n }\n }\n\n &.ghost {\n background-color: transparent;\n color: var(--ui-neutral-950);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-neutral-100);\n }\n }\n\n &:active {\n background-color: var(--ui-neutral-200);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-neutral-200);\n }\n }\n\n &.link {\n background-color: transparent;\n text-decoration: underline;\n color: var(--ui-neutral-950);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: transparent;\n }\n }\n\n &:active {\n background-color: transparent;\n }\n }\n }\n\n &.destructive {\n background-color: var(--ui-destructive);\n color: var(--ui-destructive-100);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-destructive-600);\n }\n }\n\n &:active {\n background-color: var(--ui-destructive-700);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-destructive-600);\n }\n }\n\n &.ghost.destructive {\n background-color: transparent;\n color: var(--ui-destructive);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-destructive-100);\n }\n }\n\n &:active {\n background-color: var(--ui-destructive-200);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-destructive-100);\n }\n }\n}\n",".file-drop {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ui-spacing-2);\n padding: var(--ui-spacing-8);\n border: 1px dashed var(--ui-neutral-400);\n border-radius: var(--ui-spacing-3);\n position: relative;\n cursor: pointer;\n color: var(--ui-neutral-500);\n text-align: center;\n transition:\n color 0.15s var(--ease-glide),\n border-color 0.15s var(--ease-glide);\n\n > svg {\n width: 1.75rem;\n height: 1.75rem;\n }\n\n > small {\n color: var(--ui-neutral-400);\n }\n\n > input[type=\"file\"] {\n position: absolute;\n inset: 0;\n opacity: 0;\n cursor: pointer;\n }\n\n &:hover {\n color: var(--ui-neutral-700);\n border-color: var(--ui-neutral-600);\n }\n}\n",".expander {\n position: relative;\n\n > :not(label) {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n interpolate-size: allow-keywords;\n transition: max-height 400ms var(--ease-glide);\n }\n\n > label {\n display: flex;\n align-items: center;\n gap: var(--ui-spacing-2);\n padding-top: var(--ui-spacing-4);\n cursor: pointer;\n user-select: none;\n\n > input[type=\"checkbox\"] {\n display: none;\n }\n\n &::after {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");\n mask-size: 1rem;\n mask-repeat: no-repeat;\n mask-position: center;\n width: 1rem;\n aspect-ratio: 1;\n transition: transform 400ms var(--ease-glide);\n }\n }\n}\n\n.expander:has(> label > input[type=\"checkbox\"]) > :not(label) {\n -webkit-line-clamp: var(--lines, 3);\n line-clamp: var(--lines, 3);\n max-height: calc(var(--lines, 3) * 1lh);\n transition:\n max-height 400ms var(--ease-glide),\n -webkit-line-clamp 0s 400ms allow-discrete,\n line-clamp 0s 400ms allow-discrete;\n}\n\n.expander:has(> label > input[type=\"checkbox\"]:checked) > :not(label) {\n -webkit-line-clamp: none;\n line-clamp: none;\n max-height: max-content;\n transition:\n max-height 400ms var(--ease-glide),\n -webkit-line-clamp 0s allow-discrete,\n line-clamp 0s allow-discrete;\n}\n\n.expander:has(> label > input[type=\"checkbox\"]:checked) > label::after {\n transform: perspective(1rem) rotateX(180deg);\n}\n","[data-focus-within] {\n [data-focus]:focus-visible {\n outline: none;\n box-shadow: none;\n }\n\n &:has([data-focus]:focus-visible) {\n border-radius: 8px;\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n}\n","textarea {\n appearance: none;\n border: none;\n\n background-color: transparent;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: var(--ui-spacing-2);\n\n font: inherit;\n\n resize: vertical;\n display: block;\n width: stretch;\n\n &:not([rows]) {\n field-sizing: content;\n min-height: 6lh;\n }\n\n &:focus {\n box-shadow: 0 0 0 1px currentColor inset;\n outline: none;\n }\n\n &::-webkit-resizer {\n background-color: transparent;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cline x1='5' y1='13' x2='13' y2='5' stroke='%23888' stroke-width='1.5' stroke-linecap='round'/%3E%3Cline x1='9' y1='13' x2='13' y2='9' stroke='%23888' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E\");\n background-size: 100%;\n background-position: bottom right;\n background-repeat: no-repeat;\n }\n}\n",".field {\n display: flex;\n flex-direction: column;\n gap: var(--ui-spacing-2);\n\n > span:not([data-prefix]):not([data-suffix]) {\n font-weight: 600;\n }\n\n > small {\n color: var(--ui-neutral-500);\n font-size: 0.875em;\n }\n\n &:has(input:required) > span:not([data-prefix]):not([data-suffix])::after {\n content: \" *\";\n color: var(--ui-destructive);\n }\n\n > input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"color\"]),\n > textarea,\n > select,\n > progress,\n > button[popovertarget],\n > .file-drop {\n width: 100%;\n }\n}\n\nlabel.field {\n cursor: pointer;\n}\n","@keyframes ui-progress-indeterminate {\n from { background-position: 100% center; }\n to { background-position: -100% center; }\n}\n\nprogress {\n appearance: none;\n width: 100%;\n height: 0.25rem;\n border-radius: 100px;\n border: none;\n overflow: hidden;\n\n &::-webkit-progress-bar {\n background: var(--ui-neutral-200);\n }\n\n &::-webkit-progress-value {\n background: var(--ui-primary);\n border-radius: 100px;\n }\n\n &::-moz-progress-bar {\n background: var(--ui-primary);\n border-radius: 100px;\n }\n\n &:indeterminate {\n background: linear-gradient(\n 90deg,\n var(--ui-neutral-200) 0%,\n var(--ui-neutral-200) 40%,\n var(--ui-primary) 40%,\n var(--ui-primary) 60%,\n var(--ui-neutral-200) 60%\n );\n background-size: 200% 100%;\n animation: ui-progress-indeterminate 1.5s linear infinite;\n\n &::-webkit-progress-bar { background: transparent; }\n &::-webkit-progress-value { background: transparent; }\n &::-moz-progress-bar { background: transparent; }\n }\n}\n","[popover] {\n /* reset browser defaults */\n position: fixed;\n inset: unset;\n margin: 0;\n border: none;\n padding: 0;\n\n /* position below trigger by default */\n top: calc(anchor(bottom) + var(--ui-spacing-1));\n left: anchor(left);\n min-width: anchor-size(width);\n --_translate-from: 0 -2px;\n\n /* try right-aligned, then above, then above-right */\n position-try-fallbacks: --popover-right, --popover-above, --popover-above-right;\n\n /* visual */\n background: var(--ui-background-color);\n border: 1px solid var(--ui-neutral-200);\n border-radius: 12px;\n box-shadow: 0 4px 16px oklch(0% 0 0 / 0.08);\n\n & > article {\n box-shadow: none;\n border-radius: 0;\n\n & > header,\n & > footer {\n padding: var(--ui-spacing-2) var(--ui-spacing-2);\n }\n\n & > header {\n box-shadow: 0 -1px 0 0 inset var(--ui-neutral-100);\n }\n\n & > footer {\n box-shadow: 0 1px 0 0 inset var(--ui-neutral-100);\n }\n\n &:has(> header, > footer) > :not(header):not(footer) {\n padding: var(--ui-spacing-2);\n }\n }\n\n /* animation */\n opacity: 0;\n translate: var(--_translate-from);\n transition:\n opacity 100ms var(--ease-glide),\n translate 100ms var(--ease-glide),\n display 100ms allow-discrete,\n overlay 100ms allow-discrete;\n\n &:not(:popover-open) {\n display: none !important;\n }\n\n &:popover-open {\n display: unset;\n opacity: 1;\n translate: 0 0;\n }\n\n @starting-style {\n &:popover-open {\n opacity: 0;\n translate: var(--_translate-from);\n }\n }\n}\n\n@position-try --popover-above {\n top: unset;\n bottom: calc(anchor(top) + var(--ui-spacing-1));\n left: anchor(left);\n translate: 0 4px;\n}\n\n@position-try --popover-right {\n top: calc(anchor(bottom) + var(--ui-spacing-1));\n left: unset;\n right: anchor(right);\n}\n\n@position-try --popover-above-right {\n top: unset;\n bottom: calc(anchor(top) + var(--ui-spacing-1));\n left: unset;\n right: anchor(right);\n translate: 0 4px;\n}\n\n/* per-side animation direction */\n[popover][data-placement^=\"top\"] {\n --_translate-from: 0 2px;\n}\n[popover][data-placement^=\"left\"] {\n --_translate-from: 2px 0;\n}\n[popover][data-placement^=\"right\"] {\n --_translate-from: -2px 0;\n}\n/* bottom is the default (0 -2px), no override needed */\n\n/* bottom placements */\n[popover][data-placement=\"bottom left\"] {\n top: calc(anchor(bottom) + var(--ui-spacing-1));\n bottom: unset;\n left: anchor(left);\n right: unset;\n}\n\n[popover][data-placement=\"bottom right\"] {\n top: calc(anchor(bottom) + var(--ui-spacing-1));\n bottom: unset;\n left: unset;\n right: anchor(right);\n}\n\n/* top placements */\n[popover][data-placement=\"top left\"] {\n top: unset;\n bottom: calc(anchor(top) + var(--ui-spacing-1));\n left: anchor(left);\n right: unset;\n}\n\n[popover][data-placement=\"top right\"] {\n top: unset;\n bottom: calc(anchor(top) + var(--ui-spacing-1));\n left: unset;\n right: anchor(right);\n}\n\n/* left placements */\n[popover][data-placement=\"left top\"] {\n top: anchor(top);\n bottom: unset;\n left: unset;\n right: calc(anchor(left) + var(--ui-spacing-1));\n min-width: unset;\n}\n\n[popover][data-placement=\"left bottom\"] {\n top: unset;\n bottom: anchor(bottom);\n left: unset;\n right: calc(anchor(left) + var(--ui-spacing-1));\n min-width: unset;\n}\n\n/* right placements */\n[popover][data-placement=\"right top\"] {\n top: anchor(top);\n bottom: unset;\n left: calc(anchor(right) + var(--ui-spacing-1));\n right: unset;\n min-width: unset;\n}\n\n[popover][data-placement=\"right bottom\"] {\n top: unset;\n bottom: anchor(bottom);\n left: calc(anchor(right) + var(--ui-spacing-1));\n right: unset;\n min-width: unset;\n}\n","menu {\n & > li > button,\n & > li > .button {\n width: 100%;\n justify-content: flex-start;\n white-space: nowrap;\n }\n\n & > li > label {\n width: 100%;\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: 8px;\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n\n > input[type=\"radio\"],\n > input[type=\"checkbox\"] {\n appearance: none;\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n }\n\n @media (hover: hover) {\n &:hover {\n background: var(--ui-neutral-100);\n }\n }\n\n &:has(input[type=\"checkbox\"], input[type=\"radio\"]) {\n &::after {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E\");\n mask-size: 1rem;\n mask-repeat: no-repeat;\n mask-position: center;\n width: 1rem;\n height: 1rem;\n visibility: hidden;\n margin-left: auto;\n }\n\n &:has(input:checked)::after {\n visibility: visible;\n }\n }\n }\n\n & hr {\n margin-block: var(--ui-spacing-1);\n }\n\n & > li > small:only-child:not(:has(*)) {\n display: block;\n padding: var(--ui-spacing-2) var(--ui-spacing-3) var(--ui-spacing-1);\n color: var(--ui-neutral-500);\n font-size: 0.8125rem;\n margin-left: 2px;\n user-select: none;\n }\n}\n","[popover] > menu {\n padding: var(--ui-spacing-1);\n}\n","/* Trigger: button inside a menu item that has a sibling popover */\n[popover] > menu > li:has(> [popover]) > button {\n &::after {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18l6-6-6-6'/%3E%3C/svg%3E\");\n mask-size: 1rem;\n mask-repeat: no-repeat;\n mask-position: center;\n width: 1rem;\n height: 1rem;\n margin-left: auto;\n }\n}\n\n/* Submenu popover: fall back to left side when no space on the right */\n[popover] > menu > li > [popover] {\n position-try-fallbacks: --submenu-left;\n}\n\n@position-try --submenu-left {\n top: anchor(top);\n left: unset;\n right: calc(anchor(left) + 0.25rem);\n translate: 2px 0;\n}\n","label:not(.field).toggle {\n display: inline-grid;\n text-align: center;\n grid-auto-flow: column;\n align-items: center;\n gap: var(--ui-spacing);\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: 8px;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n cursor: pointer;\n user-select: none;\n interpolate-size: allow-keywords;\n transition:\n background-color 100ms,\n box-shadow 100ms,\n color 100ms,\n grid-template-columns var(--toggle-duration) var(--ease-glide);\n\n --toggle-duration: 150ms;\n\n font-weight: 500;\n line-height: calc(16 / 14 * 1rem);\n\n > input[type=\"checkbox\"],\n > input[type=\"radio\"] {\n appearance: none;\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n }\n\n svg {\n transition: background-color 100ms;\n }\n\n [data-checked],\n [data-unchecked] {\n overflow: hidden;\n white-space: nowrap;\n transition:\n opacity var(--toggle-duration) ease,\n scale var(--toggle-duration) ease,\n display var(--toggle-duration) allow-discrete;\n }\n\n [data-unchecked] {\n grid-column: 1;\n grid-row: 1;\n display: revert;\n opacity: 1;\n scale: 1;\n\n @starting-style {\n opacity: 0;\n scale: 0.75;\n }\n }\n\n [data-checked] {\n grid-column: 1;\n grid-row: 1;\n display: none;\n opacity: 0;\n scale: 0.75;\n }\n\n /* &:has([data-unchecked]) {\n grid-template-columns: max-content 0px;\n } */\n\n &:has(> input:checked) {\n background-color: var(--ui-neutral-100);\n\n [data-checked] {\n display: revert;\n opacity: 1;\n scale: 1;\n\n @starting-style {\n opacity: 0;\n scale: 0.75;\n }\n }\n\n [data-unchecked] {\n display: none;\n opacity: 0;\n scale: 0.75;\n }\n\n /* &:has([data-unchecked]) {\n grid-template-columns: 0px max-content;\n } */\n }\n\n &.ghost {\n background-color: transparent;\n box-shadow: 0 0 0 1px transparent inset;\n }\n\n &.ghost:has(> input:checked) {\n background-color: var(--ui-neutral-100);\n box-shadow: 0 0 0 1px transparent inset;\n }\n\n &.fill:has(> input:checked) {\n svg {\n fill: currentColor;\n color: var(--ui-primary);\n }\n }\n\n &:has(:focus-visible) {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n\n &:has(> input:disabled) {\n opacity: 0.4;\n cursor: default;\n }\n\n &.square {\n padding-inline: var(--ui-spacing-2);\n }\n}\n","table {\n display: grid;\n grid-template-columns: var(--cols, repeat(auto-fill, minmax(max-content, 1fr)));\n width: 100%;\n overflow-x: auto;\n white-space: nowrap;\n}\n\n/* Auto-detect column count from header row (up to 30 columns) */\ntable:has(> thead > tr > th:last-child:nth-child(1)) {\n --cols: repeat(1, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(2)) {\n --cols: repeat(2, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(3)) {\n --cols: repeat(3, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(4)) {\n --cols: repeat(4, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(5)) {\n --cols: repeat(5, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(6)) {\n --cols: repeat(6, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(7)) {\n --cols: repeat(7, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(8)) {\n --cols: repeat(8, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(9)) {\n --cols: repeat(9, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(10)) {\n --cols: repeat(10, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(11)) {\n --cols: repeat(11, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(12)) {\n --cols: repeat(12, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(13)) {\n --cols: repeat(13, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(14)) {\n --cols: repeat(14, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(15)) {\n --cols: repeat(15, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(16)) {\n --cols: repeat(16, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(17)) {\n --cols: repeat(17, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(18)) {\n --cols: repeat(18, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(19)) {\n --cols: repeat(19, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(20)) {\n --cols: repeat(20, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(21)) {\n --cols: repeat(21, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(22)) {\n --cols: repeat(22, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(23)) {\n --cols: repeat(23, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(24)) {\n --cols: repeat(24, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(25)) {\n --cols: repeat(25, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(26)) {\n --cols: repeat(26, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(27)) {\n --cols: repeat(27, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(28)) {\n --cols: repeat(28, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(29)) {\n --cols: repeat(29, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(30)) {\n --cols: repeat(30, 1fr);\n}\n\ncaption {\n grid-column: 1 / -1;\n padding: var(--ui-spacing-3) var(--ui-spacing-3);\n color: var(--ui-neutral-400);\n /* border-bottom: 1px solid var(--ui-neutral-200); */\n}\n\nthead,\ntbody,\ntfoot {\n display: contents;\n}\n\ntr {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: subgrid;\n\n @media (hover: hover) {\n &:hover > td {\n background: var(--ui-neutral-50);\n }\n }\n}\n\nth,\ntd {\n padding: var(--ui-spacing-3) var(--ui-spacing-3);\n text-align: left;\n border-bottom: 1px solid var(--ui-neutral-200);\n}\n\nth:last-child,\ntd:last-child {\n text-align: right;\n}\n\nthead > tr > th {\n font-weight: 600;\n color: var(--ui-neutral-600);\n /* background: var(--ui-neutral-50); */\n}\n\ntbody > tr:last-child > td,\ntfoot > tr:last-child > :is(th, td) {\n border-bottom: none;\n}\n\ntfoot > tr > :is(th, td) {\n background: var(--ui-neutral-50);\n font-weight: 600;\n}\n\ntfoot > tr:first-child > :is(th, td) {\n border-top: 1px solid var(--ui-neutral-200);\n}\n","@scope (.tabs) to (.tabs .tabs) {\n :scope {\n width: stretch;\n }\n\n [role=\"tablist\"] {\n position: relative;\n display: flex;\n width: fit-content;\n\n background-color: var(--ui-neutral-200);\n border-radius: 9px;\n\n anchor-name: --hovered-link;\n anchor-scope: --hovered-link;\n\n > label:has(input:checked) {\n anchor-name: --hovered-link;\n }\n\n &::before {\n content: \"\";\n position: absolute;\n top: calc(anchor(top) + 1px);\n left: calc(anchor(left) + 1px);\n right: calc(anchor(right) + 1px);\n bottom: calc(anchor(bottom) + 1px);\n z-index: 0;\n\n border-radius: 8px;\n background-color: var(--ui-neutral-50);\n pointer-events: none;\n\n position-anchor: --hovered-link;\n\n transition: var(--ease-glide) 200ms;\n }\n\n > label {\n display: inline-flex;\n align-items: center;\n gap: var(--ui-spacing-2);\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-4);\n color: var(--ui-neutral-800);\n white-space: nowrap;\n transition: color 100ms;\n line-height: 1.14286rem;\n\n z-index: 1;\n\n > input[type=\"radio\"] {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n }\n\n @media (hover: hover) {\n &:hover {\n color: var(--ui-neutral-950);\n }\n }\n\n &:has(input:checked) {\n color: var(--ui-neutral-950);\n }\n\n &:has(input:focus-visible) {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n border-radius: 8px;\n }\n\n &:has(input:disabled) {\n opacity: 0.4;\n cursor: default;\n pointer-events: none;\n }\n }\n }\n\n [role=\"tabpanel\"]:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 4px;\n border-radius: 4px;\n }\n\n [role=\"tabpanel\"] {\n transition:\n opacity 250ms var(--ease-glide),\n display 50ms ease allow-discrete;\n\n display: none;\n opacity: 0;\n }\n\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(1 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(1 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(2 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(2 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(3 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(3 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(4 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(4 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(5 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(5 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(6 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(6 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(7 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(7 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(8 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(8 of [role=\"tabpanel\"]) {\n display: block;\n opacity: 1;\n\n @starting-style {\n opacity: 0;\n }\n }\n}\n",".prose {\n > * + * {\n margin-block-start: 1em;\n }\n\n > h1,\n > h2,\n > h3,\n > h4,\n > h5,\n > h6 {\n line-height: 1.4;\n }\n\n p {\n line-height: 1.6;\n max-width: 65ch;\n }\n\n > ul,\n > ol {\n list-style: revert;\n list-style-position: outside;\n\n display: flex;\n flex-direction: column;\n gap: 0.5lh;\n\n margin-block: 1.61em;\n\n li {\n margin-inline-start: 1.5em;\n\n &::marker {\n color: var(--ui-neutral-400);\n font-variant-numeric: tabular-nums;\n }\n }\n }\n\n > blockquote {\n /* border-inline-start: 3px solid var(--ui-neutral-200); */\n padding-inline-start: var(--ui-spacing-4);\n\n position: relative;\n margin-block: 1.61em;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n height: 100%;\n width: 3px;\n left: 0;\n background-color: var(--ui-neutral-200);\n border-radius: 3px;\n }\n\n footer,\n cite {\n margin-top: var(--ui-spacing-2);\n color: var(--ui-neutral-500);\n }\n }\n\n > hgroup {\n margin-block-end: 1.61em;\n\n > p {\n margin-block-start: 0.61em;\n color: var(--ui-neutral-500);\n }\n }\n\n a:not(.button) {\n color: var(--ui-primary);\n }\n}\n",".empty {\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: var(--ui-spacing-3);\n padding: var(--ui-spacing-8);\n color: var(--ui-neutral-400);\n\n margin: auto;\n\n &:not([hidden]) {\n display: flex;\n }\n\n > svg {\n width: 2.5rem;\n height: 2.5rem;\n background: var(--ui-neutral-100);\n color: var(--ui-neutral-800);\n padding: 0.5rem;\n border-radius: 6px;\n }\n\n > :is(h1, h2, h3, h4, h5, h6) {\n color: var(--ui-neutral-950);\n }\n\n p {\n max-width: 35ch;\n }\n\n > button,\n > a,\n > .button,\n > footer {\n margin-top: var(--ui-spacing-2);\n }\n\n > footer {\n display: flex;\n gap: var(--ui-spacing-2);\n }\n}\n","hr {\n width: 100%;\n border: none;\n border-top: 1px solid var(--ui-neutral-200);\n margin-block: var(--ui-spacing-1) 0;\n}\n\nhr[data-label] {\n border: none;\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n\n isolation: isolate;\n background: linear-gradient(var(--ui-neutral-200), var(--ui-neutral-200)) center / 100% 1px no-repeat;\n\n &::before,\n &::after {\n grid-row: 1;\n grid-column: 2;\n content: \"\";\n justify-self: center;\n font-size: 0.875rem;\n height: 1lh;\n white-space: nowrap;\n }\n\n &::before {\n width: 100%;\n background: var(--ui-background-color);\n }\n\n &::after {\n content: attr(data-label);\n color: var(--ui-neutral-500);\n padding-inline: var(--ui-spacing-3);\n }\n}\n\n@container (min-width: 480px) {\n hr {\n margin-block: var(--ui-spacing-4);\n }\n}\n","input[type=\"checkbox\"].switch {\n appearance: none;\n width: 2.25rem;\n height: 1.2lh;\n border-radius: 100px;\n box-shadow: none;\n background-color: var(--ui-neutral-200);\n cursor: pointer;\n flex-shrink: 0;\n position: relative;\n display: inline-flex;\n align-items: center;\n transition: background-color 100ms;\n mask-image: none;\n\n &::after {\n content: \"\";\n position: absolute;\n left: 0;\n width: calc(1.2lh - 2px);\n aspect-ratio: 1;\n margin-inline: 1px;\n border-radius: 50%;\n background-color: var(--ui-background-color);\n transition: left 300ms var(--ease-glide);\n }\n\n &:checked {\n background-color: var(--ui-primary);\n background-image: none;\n\n &::after {\n left: calc(100% - 1lh - 2px - 1px);\n }\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: default;\n }\n}\n","[data-tooltip][aria-label]:not(input, select, textarea) {\n position: relative;\n\n &::before,\n &::after {\n position: absolute;\n z-index: 2147483647;\n pointer-events: none;\n opacity: 0;\n transition: opacity 100ms;\n }\n\n &::before {\n content: attr(aria-label);\n background: var(--ui-neutral-950);\n color: var(--ui-neutral-50);\n padding: 0.4em 0.75em;\n border-radius: 6px;\n font-size: 0.875rem;\n line-height: 1;\n white-space: nowrap;\n }\n\n &::after {\n content: \"\";\n width: 8px;\n height: 8px;\n rotate: 45deg;\n background: var(--ui-neutral-950);\n }\n\n /* top (default) */\n &:not([data-tooltip=\"bottom\"], [data-tooltip=\"left\"], [data-tooltip=\"right\"])::before {\n bottom: calc(100% + 0.5rem);\n left: 50%;\n translate: -50% 0;\n }\n &:not([data-tooltip=\"bottom\"], [data-tooltip=\"left\"], [data-tooltip=\"right\"])::after {\n bottom: calc(100% + 0.5rem);\n left: 50%;\n translate: -50% 50%;\n mask-image: linear-gradient(-45deg, black 51%, transparent 50%);\n border-end-end-radius: 2px;\n }\n\n /* bottom */\n &[data-tooltip=\"bottom\"]::before {\n top: calc(100% + 0.5rem);\n left: 50%;\n translate: -50% 0;\n }\n &[data-tooltip=\"bottom\"]::after {\n top: calc(100% + 0.5rem);\n left: 50%;\n translate: -50% -50%;\n mask-image: linear-gradient(-45deg, transparent 50%, black 50%);\n border-start-start-radius: 2px;\n }\n\n /* left */\n &[data-tooltip=\"left\"]::before {\n right: calc(100% + 0.5rem);\n top: 50%;\n translate: 0 -50%;\n }\n &[data-tooltip=\"left\"]::after {\n right: calc(100% + 0.5rem);\n top: 50%;\n translate: 50% -50%;\n mask-image: linear-gradient(45deg, transparent 50%, black 50%);\n border-start-end-radius: 2px;\n }\n\n /* right */\n &[data-tooltip=\"right\"]::before {\n left: calc(100% + 0.5rem);\n top: 50%;\n translate: 0 -50%;\n }\n &[data-tooltip=\"right\"]::after {\n left: calc(100% + 0.5rem);\n top: 50%;\n translate: -50% -50%;\n mask-image: linear-gradient(45deg, black 50%, transparent 50%);\n border-end-start-radius: 2px;\n }\n\n @media (hover: hover) {\n &:hover::before,\n &:hover::after {\n opacity: 1;\n }\n }\n\n &:focus-visible::before,\n &:focus-visible::after {\n opacity: 1;\n }\n}\n",":not(pre) > code {\n font-family: ui-monospace, \"Cascadia Code\", \"Fira Code\", monospace;\n font-size: 0.9em;\n background: var(--ui-neutral-100);\n border: 1px solid var(--ui-neutral-200);\n border-radius: 4px;\n padding: 0.15em 0.4em;\n}\n","kbd {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n border-radius: 4px;\n padding-block: calc(var(--ui-spacing) / 2);\n padding-inline: var(--ui-spacing-2);\n background: var(--ui-neutral-100);\n color: var(--ui-neutral-800);\n font-family: inherit;\n font-size: 0.85em;\n user-select: none;\n\n + kbd {\n margin-left: 0.5em;\n }\n\n &:has(> kbd) {\n background: none;\n padding: 0;\n min-width: unset;\n font-size: 1em;\n color: var(--ui-neutral-400);\n gap: 0.35em;\n\n > kbd {\n margin-left: 0;\n }\n }\n}\n","label:has(> input:where([type=\"radio\"])) {\n display: flex;\n align-items: center;\n gap: 0.5em;\n cursor: pointer;\n user-select: none;\n\n &:has(> input:disabled) {\n opacity: 0.4;\n cursor: default;\n }\n}\n\ninput[type=\"radio\"] {\n appearance: none;\n width: 16px;\n aspect-ratio: 1;\n border-radius: 50%;\n box-shadow: 0 0 0 1.5px var(--ui-neutral-300) inset;\n background-color: transparent;\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background-color 100ms,\n box-shadow 100ms;\n\n &:checked {\n background-color: var(--ui-primary);\n box-shadow: 0 0 0 1.5px var(--ui-primary) inset;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -8 40 40' overflow='visible'%3E%3Crect x='-100' y='-100' width='200' height='200' fill='white'/%3E%3Ccircle cx='12' cy='12' r='6' fill='black'/%3E%3C/svg%3E\");\n mask-mode: luminance;\n mask-size: 24px;\n mask-position: 50%;\n mask-repeat: no-repeat;\n mask-clip: no-clip;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: default;\n }\n\n &:focus-visible {\n border-radius: 8px;\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n}\n","fieldset[role=\"group\"] {\n display: inline-flex;\n align-items: stretch;\n padding: 0;\n vertical-align: bottom;\n border: none;\n /* background: var(--ui-background-color); */\n\n & > *:not(.field) {\n position: relative;\n border-radius: 0;\n margin-right: -1px;\n\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n &:first-child {\n border-radius: 8px 0 0 8px;\n }\n\n &:last-child {\n border-radius: 0 8px 8px 0;\n margin-right: 0;\n }\n\n &:hover,\n &:focus-within,\n &:active {\n z-index: 1;\n }\n }\n\n & > button:not(.ghost),\n & > .button:not(.ghost) {\n box-shadow: none;\n margin-left: 1px;\n margin-right: 0;\n }\n\n & > :only-child:not(.field) {\n border-radius: 8px;\n }\n\n & > input {\n flex: 1;\n min-width: 0;\n\n &:focus {\n border-color: var(--ui-neutral-500);\n }\n }\n\n label:not(.field) {\n line-height: calc(16 / 14 * 1em);\n border-radius: 0;\n }\n}\n","input[type=\"range\"] {\n appearance: none;\n width: 100%;\n height: 0.25rem;\n border-radius: 100px;\n background: linear-gradient(to right, var(--ui-primary) calc(var(--pct, 0) * 100%), var(--ui-neutral-200) calc(var(--pct, 0) * 100%));\n cursor: pointer;\n outline: none;\n\n &::-webkit-slider-thumb {\n appearance: none;\n width: 1.125rem;\n aspect-ratio: 1;\n border-radius: 50%;\n background: var(--ui-background-color);\n box-shadow: 0 0 0 1.5px var(--ui-neutral-300) inset;\n transition: outline-color 100ms;\n }\n\n &::-moz-range-thumb {\n width: 1.125rem;\n height: 1.125rem;\n border-radius: 50%;\n border: none;\n background: var(--ui-background-color);\n box-shadow: 0 0 0 1.5px var(--ui-neutral-300) inset;\n cursor: pointer;\n }\n\n /* &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n } */\n\n &:focus-visible::-webkit-slider-thumb {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n /* box-shadow: 0 0 0 1.5px var(--ui-neutral-950) inset; */\n }\n\n &:focus-visible::-moz-range-thumb {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n /* box-shadow: 0 0 0 1.5px var(--ui-neutral-950) inset; */\n }\n\n &:disabled {\n cursor: default;\n opacity: 0.4;\n }\n}\n",":root {\n --ui-loading: url(\"data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='white' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E\");\n}\n\n:where(*:not(button)[aria-busy=\"true\"]):before {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: var(--ui-loading);\n mask-size: 1em;\n width: 1em;\n aspect-ratio: 1;\n mask-repeat: no-repeat;\n}\n","dialog {\n container-type: inline-size;\n\n position: fixed;\n inset: 0;\n margin: auto;\n z-index: 1;\n background: var(--ui-background-color);\n border: none;\n border-radius: 12px;\n padding: 0;\n max-width: min(480px, calc(100vw - 2rem));\n width: 100%;\n\n pointer-events: none;\n\n opacity: 0;\n translate: 0 4px;\n transition:\n opacity 300ms var(--ease-glide),\n translate 300ms var(--ease-glide),\n display 100ms allow-discrete,\n overlay 100ms allow-discrete;\n\n &[open] {\n opacity: 1;\n translate: 0 0;\n pointer-events: auto;\n }\n\n @starting-style {\n &[open] {\n opacity: 0;\n translate: 0 4px;\n }\n }\n\n &::backdrop {\n opacity: 0;\n background: oklch(0% 0 0 / 0.4);\n backdrop-filter: blur(2px);\n transition:\n opacity 200ms var(--ease-glide),\n display 100ms allow-discrete,\n overlay 100ms allow-discrete;\n }\n\n &[open]::backdrop {\n opacity: 1;\n }\n\n @starting-style {\n &[open]::backdrop {\n opacity: 0;\n }\n }\n}\n\nbody:has(dialog[scroll-lock][open], details[scroll-lock][open]) {\n overflow: hidden;\n touch-action: none;\n}\n"],"names":[]}
1
+ {"version":3,"sourceRoot":null,"mappings":"AAAA,gBCAA,2QAYA,6BAIA,0EAOA,0DAUA,yBAMA,8BAKA,0BAIA,0DAMA,yBAKA,mDAIA,wCAGE,6CAAA,8CAMF,8FDxEA,UOAA,iyfQAA,gTAcE,+EAKA,6EAKA,4FAKA,yFAKA,0EAKA,0EAKA,0EAKA,0EAKA,0EAKA,0EAKA,6DAKA,4BXrEF,iGAOE,mIAQA,yCAIA,2SAcE,uCAIA,qdAcA,qBACE,4CAKF,8FAOF,gDAIA,uEIpEF,kJAQE,iCAIA,0EAOA,gIAKA,gIAKA,qDAIA,kEAGE,yDAKA,6DAQJ,0BACE,oCAGE,oEAMA,8EI3DJ,odAyBE,iBACE,qBACE,gDAKF,gEAKA,4EAMF,qCAKA,oBAIA,wEAMA,0BAIA,gLAWA,qGAOA,+DAKA,4CAMA,+GAKE,iBACE,qBACE,gDAKF,iDAKF,sFAKF,+EAIE,iBACE,qBACE,gDAKF,iDAKF,sFAKF,2DAIE,iBACE,qBACE,gDAKF,iDAKF,sFAKF,oFAKE,iBACE,qBACE,gCAKF,kCAMJ,qFAIE,iBACE,qBACE,oDAKF,qDAKF,0FAKF,uEAIE,iBACE,qBACE,oDAKF,qDAKF,2FIlNJ,yGAQE,oHAOE,wCAIA,sDAKA,2CAOF,0FAOA,4CAIA,2BAIE,4CAKF,2DGnDF,2XAwBE,kDAMA,gBACE,mCAMF,+MAUA,4BAIA,gBACE,8BAMJ,iGjB1DA,sKAOE,kDAMF,uOAaE,+fAWA,keAWA,2EAKA,sCGrDF,oKAUE,0CAIA,sDAKA,mDAKA,4EIxBF,gGAKE,+DAIE,mBAKF,qIAAA,uIAAA,sIAAA,sIAAA,wIAAA,uIIdF,wIAOE,kDAMF,oOAaE,ibAWA,qCAKA,8FI1CF,wGAOA,qNASE,8GAWA,0DAKA,iGAOF,0BACE,qCG/BF,4iBA6BE,yDAMF,uFAIA,ucAaA,2IAOE,0IAMA,uEAOA,oFAKA,8HAMA,+FAKA,mFAKA,kIAME,oCAMF,uTAkBA,8BACE,0BAGA,qBAOJ,wFACE,oBAKF,mKAME,6SAgBE,gBAAiB,WAKnB,uNAQF,oOAKA,kOAKA,mPIlMA,kXAiBE,mCAKA,oCAIA,sEAOA,wEIjCF,4BAGE,0JAQA,yJAQE,oCAIA,ycAeJ,iRAUA,8OAUA,0GE1DA,oBACE,0DAKA,gHINF,+TAiBE,kDAKA,gDAKA,ybM3BF,kEAKE,6DAIA,qDAKA,gHAKA,iJAUF,2BrC7BA,iKAQE,qEAMA,qDAKA,6EGnBF,iuBAqBE,mCAIA,sCIzBF,0XAQE,gDIRF,+BAGE,mBAIA,qLIPF,8OASE,8MAUA,yLAeA,iGAMA,6FAMA,sCI9CF,wRAeE,yMAYA,mEAIE,qCAKF,2EAKA,sCIzCF,wEAGE,2GASA,sLAWA,sFASA,+HAKA,kNASA,6EAKA,qKASA,8EAKA,gKASA,8EAKA,iKAQA,qBACE,wCAMF,wDH9FF,sMIAA,4TAcE,uBAIA,yGAQE,sBI1BJ,2yBAIA,oMVJA,+FAKA,kGAQE,yDAIA,2EAKA,sEAKA,mQAYE,uCACA,yCACA,sCIzCJ,kZAuBE,0CAIE,kEAKA,2DAIA,0DAIA,6EAMM,6KAQR,4CAIA,mDAMA,gBACE,4DAOJ,iIAOA,kHAMA,sJASA,uDAGA,wDAGA,0DAMA,iIAOA,mIAQA,2HAOA,6HAQA,2IAQA,iJASA,6IAQA,mJIjKA,KACE,kFAOA,yLASE,4HAUA,qBACE,0CAKF,8CACE,icAcA,gDAMJ,sCAIA,+NI1DF,2CICA,yCACE,4aAeF,kEAIA,kHLrBA,whBAwBE,4HAUA,sCAIA,wMAUA,kEAOE,gBAAiB,qBAMnB,gEAYA,6DAGE,kDAKE,gBAAiB,qBAMnB,qDAWF,gEAKA,oGAKA,2BACE,iDAMF,iFAKA,iDAKA,6CI7HF,+IASA,qEAGA,sEAGA,sEAGA,sEAGA,sEAGA,sEAGA,sEAGA,sEAGA,sEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAGA,wEAIA,qGAOA,mCAMA,+DAKE,qBACE,6CAMJ,oHAOA,6CAKA,wDAMA,yEAKA,oEAKA,2EEzJA,+BACE,uEAIA,gLAWE,sDAIA,wTAkBA,iPAaE,oEAMA,qBACE,qCAKF,iDAIA,wGAMA,sEAQJ,2GAMA,mHASA,69CAWE,gBAAiB,YH3GrB,OACE,6BAIA,8CASA,mCAKA,wHAWE,+BAGE,0EAOJ,4FAOE,0IAWA,4EAOF,iCAGE,0DAMF,0CI1EF,qLAWE,6BAIA,8HASA,qDAIA,mBAIA,+DAOA,+CvCOA","sources":["packages/core/src/main.css","packages/core/src/components/checkbox.css","packages/core/src/components/radio-group.css","packages/core/src/reset.css","packages/core/src/components/accordion.css","packages/core/src/components/color-input.css","packages/core/src/components/select.css","packages/core/src/easings.css","packages/core/src/components/card.css","packages/core/src/components/date-input.css","packages/core/src/components/datalist.css","packages/core/src/colors.css","packages/core/src/components/button.css","packages/core/src/components/radio.css","packages/core/src/components/combobox.css","packages/core/src/components/badge.css","packages/core/src/components/button-group.css","packages/core/src/components/separator.css","packages/core/src/components/slider.css","packages/core/src/components/dialog.css","packages/core/src/components/text-field.css","packages/core/src/components/progress.css","packages/core/src/components/switch.css","packages/core/src/components/code.css","packages/core/src/components/file-drop.css","packages/core/src/components/popover.css","packages/core/src/components/tooltip.css","packages/core/src/components/kbd.css","packages/core/src/components/expander.css","packages/core/src/components/menu.css","packages/core/src/components/focus-group.css","packages/core/src/components/loading.css","packages/core/src/components/toggle.css","packages/core/src/components/dropdown.css","packages/core/src/components/table.css","packages/core/src/components/prose.css","packages/core/src/components/textarea.css","packages/core/src/components/submenu.css","packages/core/src/components/tabs.css","packages/core/src/components/empty.css","packages/core/src/components/field.css"],"sourcesContent":["@layer ui-reset, ui;\n\n@import \"./reset.css\" layer(ui-reset);\n\n@import \"./easings.css\" layer(ui);\n@import \"./colors.css\" layer(ui);\n\n@import \"./components/badge.css\" layer(ui);\n@import \"./components/accordion.css\" layer(ui);\n@import \"./components/card.css\" layer(ui);\n@import \"./components/button.css\" layer(ui);\n@import \"./components/button-group.css\" layer(ui);\n@import \"./components/dialog.css\" layer(ui);\n@import \"./components/checkbox.css\" layer(ui);\n@import \"./components/color-input.css\" layer(ui);\n@import \"./components/date-input.css\" layer(ui);\n@import \"./components/radio.css\" layer(ui);\n@import \"./components/separator.css\" layer(ui);\n@import \"./components/text-field.css\" layer(ui);\n@import \"./components/file-drop.css\" layer(ui);\n@import \"./components/expander.css\" layer(ui);\n@import \"./components/focus-group.css\" layer(ui);\n@import \"./components/textarea.css\" layer(ui);\n@import \"./components/field.css\" layer(ui);\n@import \"./components/radio-group.css\" layer(ui);\n@import \"./components/select.css\" layer(ui);\n@import \"./components/datalist.css\" layer(ui);\n@import \"./components/combobox.css\" layer(ui);\n@import \"./components/slider.css\" layer(ui);\n@import \"./components/switch.css\" layer(ui);\n@import \"./components/tooltip.css\" layer(ui);\n@import \"./components/code.css\" layer(ui);\n@import \"./components/kbd.css\" layer(ui);\n@import \"./components/loading.css\" layer(ui);\n@import \"./components/progress.css\" layer(ui);\n@import \"./components/popover.css\" layer(ui);\n@import \"./components/menu.css\" layer(ui);\n@import \"./components/dropdown.css\" layer(ui);\n@import \"./components/submenu.css\" layer(ui);\n@import \"./components/toggle.css\" layer(ui);\n@import \"./components/table.css\" layer(ui);\n@import \"./components/tabs.css\" layer(ui);\n@import \"./components/prose.css\" layer(ui);\n@import \"./components/empty.css\" layer(ui);\n\n@layer ui {\n :root {\n --ui-spacing: 0.25em;\n\n --ui-spacing-1: calc(var(--ui-spacing) * 1);\n --ui-spacing-2: calc(var(--ui-spacing) * 2);\n --ui-spacing-3: calc(var(--ui-spacing) * 3);\n --ui-spacing-4: calc(var(--ui-spacing) * 4);\n --ui-spacing-5: calc(var(--ui-spacing) * 5);\n --ui-spacing-6: calc(var(--ui-spacing) * 6);\n --ui-spacing-7: calc(var(--ui-spacing) * 7);\n --ui-spacing-8: calc(var(--ui-spacing) * 8);\n\n --ui-background-color: var(--ui-neutral-50);\n --ui-text-color: var(--ui-neutral-950);\n }\n}\n","label:not(.field):has(> input:where([type=\"checkbox\"])) {\n display: flex;\n align-items: center;\n gap: var(--ui-spacing-2);\n cursor: pointer;\n user-select: none;\n\n &:has(> input:disabled) {\n opacity: 0.4;\n cursor: default;\n }\n}\n\ninput[type=\"checkbox\"] {\n appearance: none;\n width: 16px;\n aspect-ratio: 1;\n border-radius: 4px;\n box-shadow: 0 0 0 1.5px var(--ui-neutral-300) inset;\n background-color: transparent;\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background-color 100ms,\n box-shadow 100ms;\n\n &:checked {\n background-color: var(--ui-primary);\n box-shadow: 0 0 0 1.5px var(--ui-primary) inset;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-9.5 -10 44 45' overflow='visible'%3E%3Crect x='-100' y='-100' width='200' height='200' fill='white'/%3E%3Cpath d='M5 12l5 5l10 -10' fill='none' stroke='black' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n mask-mode: luminance;\n mask-size: 24px;\n mask-position: 50%;\n mask-repeat: no-repeat;\n mask-clip: no-clip;\n }\n\n &:indeterminate {\n background-color: var(--ui-primary);\n box-shadow: 0 0 0 1.5px var(--ui-primary) inset;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -8 40 40' overflow='visible'%3E%3Crect x='-100' y='-100' width='200' height='200' fill='white'/%3E%3Cpath d='M6 12h12' fill='none' stroke='black' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E\");\n mask-mode: luminance;\n mask-size: 24px;\n mask-position: 50%;\n mask-repeat: no-repeat;\n mask-clip: no-clip;\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: default;\n }\n}\n","fieldset:not([role=\"group\"]):has(input[type=\"radio\"], input[type=\"checkbox\"]) {\n display: flex;\n flex-direction: column;\n gap: var(--ui-spacing-2);\n border: none;\n padding: 0;\n margin: 0;\n\n > legend {\n font-weight: 600;\n padding: 0;\n margin-bottom: var(--ui-spacing-2);\n }\n\n > small {\n color: var(--ui-neutral-500);\n font-size: 0.875em;\n }\n\n &:has(input:required) > legend::after {\n content: \" *\";\n color: var(--ui-destructive);\n }\n}\n",":root {\n interpolate-size: allow-keywords;\n\n font-family: system-ui;\n font-size: 14px;\n text-rendering: geometricPrecision;\n -webkit-font-smoothing: antialiased;\n -webkit-tap-highlight-color: transparent;\n -moz-osx-font-smoothing: grayscale;\n text-size-adjust: 100%;\n}\n\nhtml {\n scrollbar-gutter: stable;\n}\n\n:where(*) {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n text-wrap-style: pretty;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n text-wrap-style: balance;\n font-weight: 600;\n}\n\nul,\nol,\nli {\n list-style: none;\n}\n\nul li,\nol li {\n list-style: revert;\n}\n\na {\n color: var(--ui-primary);\n}\n\nimg {\n vertical-align: middle;\n object-fit: cover;\n max-width: 100%;\n}\n\nsvg {\n width: 1lh;\n height: 1lh;\n}\n\n::selection {\n background-color: var(--ui-neutral-200);\n}\n\ninput[type=\"number\"] {\n appearance: textfield;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n appearance: none;\n }\n}\n\na:focus-visible {\n border-radius: 8px;\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n}\n","details {\n interpolate-size: allow-keywords;\n\n width: 100%;\n border-bottom: 1px solid var(--ui-neutral-200);\n /* border-radius: 8px; */\n\n &::details-content {\n transition:\n block-size 300ms var(--ease-glide),\n content-visibility 200ms allow-discrete;\n overflow: hidden;\n block-size: 0; /* Or also: height:0; */\n }\n\n &[open]::details-content {\n block-size: auto; /* Or also: height:auto; */\n }\n\n summary {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n cursor: pointer;\n list-style: none;\n user-select: none;\n padding-block: var(--ui-spacing-3);\n\n text-decoration: underline;\n text-decoration-color: transparent;\n transition: text-decoration-color 100ms;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &::after {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");\n mask-size: 1rem;\n mask-repeat: no-repeat;\n mask-position: center;\n width: 1rem;\n aspect-ratio: 1;\n flex-shrink: 0;\n transition: transform 300ms var(--ease-glide);\n }\n\n @media (hover: hover) {\n &:hover {\n text-decoration-color: currentColor;\n }\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n border-radius: 8px;\n }\n }\n\n &[open] > summary::after {\n transform: rotate(-180deg);\n }\n\n > *:not(summary) {\n padding-block: var(--ui-spacing-3) var(--ui-spacing-6);\n }\n}\n","input[type=\"color\"] {\n appearance: none;\n width: 2.25rem;\n height: 2.25rem;\n border-radius: 8px;\n border: 1px solid var(--ui-neutral-200);\n padding: 0.2rem;\n background: none;\n cursor: pointer;\n\n &::-webkit-color-swatch-wrapper {\n padding: 0;\n }\n\n &::-webkit-color-swatch {\n border: none;\n border-radius: 4px;\n }\n\n &::-moz-color-swatch {\n border: none;\n border-radius: 4px;\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n}\n","select {\n appearance: none;\n border: none;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n padding-inline-end: calc(1rem + var(--ui-spacing-6));\n border-radius: var(--ui-spacing-2);\n\n font: inherit;\n cursor: pointer;\n user-select: none;\n field-sizing: content;\n\n background-color: var(--ui-background-color);\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right var(--ui-spacing-3) center;\n background-size: 1rem;\n\n &:focus {\n box-shadow: 0 0 0 1px currentColor inset;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: default;\n }\n}\n",":root {\n --ease-glide: linear(\n 0,\n 0.001 0.4%,\n 0.004 0.9%,\n 0.018 1.9%,\n 0.038 2.9%,\n 0.07 4.1%,\n 0.1 5.1%,\n 0.136 6.2%,\n 0.33 11.7%,\n 0.426 14.6%,\n 0.475 16.2%,\n 0.521 17.8%,\n 0.563 19.4%,\n 0.602 21%,\n 0.64 22.7%,\n 0.675 24.4%,\n 0.708 26.2%,\n 0.739 28%,\n 0.767 29.9%,\n 0.793 31.8%,\n 0.817 33.8%,\n 0.838 35.8%,\n 0.859 38.1%,\n 0.879 40.6%,\n 0.897 43.1%,\n 0.913 45.8%,\n 0.927 48.7%,\n 0.939 51.7%,\n 0.95 54.9%,\n 0.96 58.4%,\n 0.975 66%,\n 0.986 74.9%,\n 0.993 85.9%,\n 1\n );\n\n --ease-snap: linear(0, 0.03 1.1%, 0.125 2.4%, 0.906 9.8%, 1.046 12.3%, 1.11 15%, 1.116 16.3%, 1.11 17.8%, 1.014 25.8%, 0.987 31.2%, 1.001 47.2%, 1);\n\n --ease-heavy: linear(\n 0,\n 0.01 0.7%,\n 0.044 1.5%,\n 0.171 3.1%,\n 0.339 4.6%,\n 0.857 8.7%,\n 1.088 11%,\n 1.17 12.1%,\n 1.232 13.2%,\n 1.273 14.3%,\n 1.297 15.5%,\n 1.299 16.9%,\n 1.273 18.5%,\n 1.22 20.3%,\n 1.057 24.6%,\n 0.986 26.8%,\n 0.934 29.2%,\n 0.911 31.7%,\n 0.918 34.8%,\n 1.003 43%,\n 1.027 47.8%,\n 1.025 51.1%,\n 0.992 63.8%,\n 1.002 79.7%,\n 1\n );\n\n --ease-in-sine: cubic-bezier(0.12, 0, 0.39, 0);\n --ease-out-sine: cubic-bezier(0.61, 1, 0.88, 1);\n --ease-in-out-sine: cubic-bezier(0.37, 0, 0.63, 1);\n\n --ease-in-quad: cubic-bezier(0.11, 0, 0.5, 0);\n --ease-out-quad: cubic-bezier(0.5, 1, 0.89, 1);\n --ease-in-out-quad: cubic-bezier(0.45, 0, 0.55, 1);\n\n --ease-in-cubic: cubic-bezier(0.32, 0, 0.67, 0);\n --ease-out-cubic: cubic-bezier(0.33, 1, 0.68, 1);\n --ease-in-out-cubic: cubic-bezier(0.65, 0, 0.35, 1);\n\n --ease-in-quart: cubic-bezier(0.5, 0, 0.75, 0);\n --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);\n --ease-in-out-quart: cubic-bezier(0.76, 0, 0.24, 1);\n\n --ease-in-quint: cubic-bezier(0.64, 0, 0.78, 0);\n --ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1);\n --ease-in-out-quint: cubic-bezier(0.83, 0, 0.17, 1);\n\n --ease-in-expo: cubic-bezier(0.7, 0, 0.84, 0);\n --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);\n --ease-in-out-expo: cubic-bezier(0.87, 0, 0.13, 1);\n\n --ease-in-circ: cubic-bezier(0.55, 0, 1, 0.45);\n --ease-out-circ: cubic-bezier(0, 0.55, 0.45, 1);\n --ease-in-out-circ: cubic-bezier(0.85, 0, 0.15, 1);\n\n --ease-in-back: cubic-bezier(0.36, 0, 0.66, -0.56);\n --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);\n --ease-in-out-back: cubic-bezier(0.68, -0.6, 0.32, 1.6);\n}\n","article {\n --card-border-radius: 12px;\n\n box-shadow: 0 0 0 1px inset var(--ui-neutral-100);\n border-radius: 12px;\n overflow: hidden;\n padding: var(--ui-spacing-4);\n\n &:has(> header, > footer) {\n padding: 0;\n }\n\n & > header,\n & > footer {\n display: flex;\n align-items: center;\n gap: var(--ui-spacing-2);\n }\n\n & > header {\n box-shadow: 0 0 0 1px inset var(--ui-neutral-100);\n border-radius: var(--card-border-radius) var(--card-border-radius) 0 0;\n }\n\n & > footer {\n box-shadow: 0 0 0 1px inset var(--ui-neutral-100);\n border-radius: 0 0 var(--card-border-radius) var(--card-border-radius);\n }\n\n &:has(> header, > footer) > * {\n padding: var(--ui-spacing-4);\n }\n\n &:has(> header, > footer) > :not(header):not(footer) {\n margin-inline: 1px;\n\n &:first-child {\n margin-top: 1px;\n border-radius: 11px 11px 0 0;\n }\n\n &:last-child {\n margin-bottom: 1px;\n border-radius: 0 0 11px 11px;\n }\n }\n}\n\n/* Reduce padding when the card's parent container is narrow */\n@container (max-width: 320px) {\n article {\n padding: var(--ui-spacing-3);\n\n & > header,\n & > footer {\n padding: var(--ui-spacing-3);\n gap: var(--ui-spacing);\n }\n\n &:has(> header, > footer) > :not(header):not(footer) {\n padding: var(--ui-spacing-3);\n }\n }\n}\n","input[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"],\ninput[type=\"week\"] {\n &::-webkit-calendar-picker-indicator {\n opacity: 0.5;\n cursor: pointer;\n\n &:hover {\n opacity: 1;\n }\n }\n\n &::-webkit-datetime-edit-day-field:focus,\n &::-webkit-datetime-edit-month-field:focus,\n &::-webkit-datetime-edit-year-field:focus,\n &::-webkit-datetime-edit-hour-field:focus,\n &::-webkit-datetime-edit-minute-field:focus,\n &::-webkit-datetime-edit-ampm-field:focus {\n background-color: var(--ui-primary);\n color: var(--ui-neutral-0);\n border-radius: 2px;\n outline: none;\n }\n}\n","input[list] {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6l6 -6'/%3E%3C%2Fsvg%3E\");\n background-repeat: no-repeat;\n background-position: right var(--ui-spacing-3) center;\n background-size: 1rem;\n /* padding-inline-end: calc(1rem + var(--ui-spacing-6)); */\n\n /* keep the native indicator functional but invisible so clicks still open the list */\n &::-webkit-calendar-picker-indicator {\n opacity: 0;\n }\n}\n",":root {\n color-scheme: light dark;\n\n --ui-primary-light: dodgerblue;\n --ui-primary-dark: color-mix(in oklab, dodgerblue, white 20%);\n\n --ui-primary: light-dark(var(--ui-primary-light), var(--ui-primary-dark));\n \n --ui-neutral: #8b8c93;\n --ui-constructive: #5dbb55;\n --ui-destructive: #ef5655;\n\n --ui-color1: crimson;\n --ui-color2: gold;\n --ui-color3: forestgreen;\n --ui-color4: royalblue;\n --ui-color5: slateblue;\n --ui-color6: plum;\n\n --ui-primary-50: light-dark(color-mix(in oklab, var(--ui-primary), white 95%), color-mix(in oklab, var(--ui-primary), black 73.75%));\n\n --ui-primary-100: light-dark(color-mix(in oklab, var(--ui-primary), white 87%), color-mix(in oklab, var(--ui-primary), black 58.5%));\n\n --ui-primary-200: light-dark(color-mix(in oklab, var(--ui-primary), white 70%), color-mix(in oklab, var(--ui-primary), black 43.5%));\n\n --ui-primary-300: light-dark(color-mix(in oklab, var(--ui-primary), white 47%), color-mix(in oklab, var(--ui-primary), black 28.25%));\n\n --ui-primary-400: light-dark(color-mix(in oklab, var(--ui-primary), white 23%), color-mix(in oklab, var(--ui-primary), black 15.5%));\n\n --ui-primary-500: var(--ui-primary);\n\n --ui-primary-600: light-dark(color-mix(in oklab, var(--ui-primary), black 15.5%), color-mix(in oklab, var(--ui-primary), white 23%));\n\n --ui-primary-700: light-dark(color-mix(in oklab, var(--ui-primary), black 28.25%), color-mix(in oklab, var(--ui-primary), white 47%));\n\n --ui-primary-800: light-dark(color-mix(in oklab, var(--ui-primary), black 43.5%), color-mix(in oklab, var(--ui-primary), white 70%));\n\n --ui-primary-900: light-dark(color-mix(in oklab, var(--ui-primary), black 58.5%), color-mix(in oklab, var(--ui-primary), white 87%));\n\n --ui-primary-950: light-dark(color-mix(in oklab, var(--ui-primary), black 73.75%), color-mix(in oklab, var(--ui-primary), white 95%));\n\n --ui-neutral-0: light-dark(color-mix(in oklab, var(--ui-neutral), white 100%), color-mix(in oklab, var(--ui-neutral), black 100%));\n\n --ui-neutral-50: light-dark(color-mix(in oklab, var(--ui-neutral), white 95%), color-mix(in oklab, var(--ui-neutral), black 73.75%));\n\n --ui-neutral-100: light-dark(color-mix(in oklab, var(--ui-neutral), white 87%), color-mix(in oklab, var(--ui-neutral), black 58.5%));\n\n --ui-neutral-200: light-dark(color-mix(in oklab, var(--ui-neutral), white 70%), color-mix(in oklab, var(--ui-neutral), black 43.5%));\n\n --ui-neutral-300: light-dark(color-mix(in oklab, var(--ui-neutral), white 47%), color-mix(in oklab, var(--ui-neutral), black 28.25%));\n\n --ui-neutral-400: light-dark(color-mix(in oklab, var(--ui-neutral), white 23%), color-mix(in oklab, var(--ui-neutral), black 15.5%));\n\n --ui-neutral-500: var(--ui-neutral);\n\n --ui-neutral-600: light-dark(color-mix(in oklab, var(--ui-neutral), black 15.5%), color-mix(in oklab, var(--ui-neutral), white 23%));\n\n --ui-neutral-700: light-dark(color-mix(in oklab, var(--ui-neutral), black 28.25%), color-mix(in oklab, var(--ui-neutral), white 47%));\n\n --ui-neutral-800: light-dark(color-mix(in oklab, var(--ui-neutral), black 43.5%), color-mix(in oklab, var(--ui-neutral), white 70%));\n\n --ui-neutral-900: light-dark(color-mix(in oklab, var(--ui-neutral), black 58.5%), color-mix(in oklab, var(--ui-neutral), white 87%));\n\n --ui-neutral-950: light-dark(color-mix(in oklab, var(--ui-neutral), black 73.75%), color-mix(in oklab, var(--ui-neutral), white 95%));\n\n --ui-neutral-1000: light-dark(color-mix(in oklab, var(--ui-neutral), black 100%), color-mix(in oklab, var(--ui-neutral), white 100%));\n\n --ui-constructive-50: light-dark(color-mix(in oklab, var(--ui-constructive), white 95%), color-mix(in oklab, var(--ui-constructive), black 73.75%));\n\n --ui-constructive-100: light-dark(color-mix(in oklab, var(--ui-constructive), white 87%), color-mix(in oklab, var(--ui-constructive), black 58.5%));\n\n --ui-constructive-200: light-dark(color-mix(in oklab, var(--ui-constructive), white 70%), color-mix(in oklab, var(--ui-constructive), black 43.5%));\n\n --ui-constructive-300: light-dark(color-mix(in oklab, var(--ui-constructive), white 47%), color-mix(in oklab, var(--ui-constructive), black 28.25%));\n\n --ui-constructive-400: light-dark(color-mix(in oklab, var(--ui-constructive), white 23%), color-mix(in oklab, var(--ui-constructive), black 15.5%));\n\n --ui-constructive-500: var(--ui-constructive);\n\n --ui-constructive-600: light-dark(color-mix(in oklab, var(--ui-constructive), black 15.5%), color-mix(in oklab, var(--ui-constructive), white 23%));\n\n --ui-constructive-700: light-dark(color-mix(in oklab, var(--ui-constructive), black 28.25%), color-mix(in oklab, var(--ui-constructive), white 47%));\n\n --ui-constructive-800: light-dark(color-mix(in oklab, var(--ui-constructive), black 43.5%), color-mix(in oklab, var(--ui-constructive), white 70%));\n\n --ui-constructive-900: light-dark(color-mix(in oklab, var(--ui-constructive), black 58.5%), color-mix(in oklab, var(--ui-constructive), white 87%));\n\n --ui-constructive-950: light-dark(color-mix(in oklab, var(--ui-constructive), black 73.75%), color-mix(in oklab, var(--ui-constructive), white 95%));\n\n --ui-destructive-50: light-dark(color-mix(in oklab, var(--ui-destructive), white 95%), color-mix(in oklab, var(--ui-destructive), black 73.75%));\n\n --ui-destructive-100: light-dark(color-mix(in oklab, var(--ui-destructive), white 87%), color-mix(in oklab, var(--ui-destructive), black 58.5%));\n\n --ui-destructive-200: light-dark(color-mix(in oklab, var(--ui-destructive), white 70%), color-mix(in oklab, var(--ui-destructive), black 43.5%));\n\n --ui-destructive-300: light-dark(color-mix(in oklab, var(--ui-destructive), white 47%), color-mix(in oklab, var(--ui-destructive), black 28.25%));\n\n --ui-destructive-400: light-dark(color-mix(in oklab, var(--ui-destructive), white 23%), color-mix(in oklab, var(--ui-destructive), black 15.5%));\n\n --ui-destructive-500: var(--ui-destructive);\n\n --ui-destructive-600: light-dark(color-mix(in oklab, var(--ui-destructive), black 15.5%), color-mix(in oklab, var(--ui-destructive), white 23%));\n\n --ui-destructive-700: light-dark(color-mix(in oklab, var(--ui-destructive), black 28.25%), color-mix(in oklab, var(--ui-destructive), white 47%));\n\n --ui-destructive-800: light-dark(color-mix(in oklab, var(--ui-destructive), black 43.5%), color-mix(in oklab, var(--ui-destructive), white 70%));\n\n --ui-destructive-900: light-dark(color-mix(in oklab, var(--ui-destructive), black 58.5%), color-mix(in oklab, var(--ui-destructive), white 87%));\n\n --ui-destructive-950: light-dark(color-mix(in oklab, var(--ui-destructive), black 73.75%), color-mix(in oklab, var(--ui-destructive), white 95%));\n\n --ui-color1-50: light-dark(color-mix(in oklab, var(--ui-color1), white 95%), color-mix(in oklab, var(--ui-color1), black 73.75%));\n\n --ui-color1-100: light-dark(color-mix(in oklab, var(--ui-color1), white 87%), color-mix(in oklab, var(--ui-color1), black 58.5%));\n\n --ui-color1-200: light-dark(color-mix(in oklab, var(--ui-color1), white 70%), color-mix(in oklab, var(--ui-color1), black 43.5%));\n\n --ui-color1-300: light-dark(color-mix(in oklab, var(--ui-color1), white 47%), color-mix(in oklab, var(--ui-color1), black 28.25%));\n\n --ui-color1-400: light-dark(color-mix(in oklab, var(--ui-color1), white 23%), color-mix(in oklab, var(--ui-color1), black 15.5%));\n\n --ui-color1-500: var(--ui-color1);\n\n --ui-color1-600: light-dark(color-mix(in oklab, var(--ui-color1), black 15.5%), color-mix(in oklab, var(--ui-color1), white 15%));\n\n --ui-color1-700: light-dark(color-mix(in oklab, var(--ui-color1), black 28.25%), color-mix(in oklab, var(--ui-color1), white 47%));\n\n --ui-color1-800: light-dark(color-mix(in oklab, var(--ui-color1), black 43.5%), color-mix(in oklab, var(--ui-color1), white 70%));\n\n --ui-color1-900: light-dark(color-mix(in oklab, var(--ui-color1), black 58.5%), color-mix(in oklab, var(--ui-color1), white 87%));\n\n --ui-color1-950: light-dark(color-mix(in oklab, var(--ui-color1), black 73.75%), color-mix(in oklab, var(--ui-color1), white 95%));\n\n --ui-color2-50: light-dark(color-mix(in oklab, var(--ui-color2), white 95%), color-mix(in oklab, var(--ui-color2), black 73.75%));\n\n --ui-color2-100: light-dark(color-mix(in oklab, var(--ui-color2), white 87%), color-mix(in oklab, var(--ui-color2), black 58.5%));\n\n --ui-color2-200: light-dark(color-mix(in oklab, var(--ui-color2), white 70%), color-mix(in oklab, var(--ui-color2), black 43.5%));\n\n --ui-color2-300: light-dark(color-mix(in oklab, var(--ui-color2), white 47%), color-mix(in oklab, var(--ui-color2), black 28.25%));\n\n --ui-color2-400: light-dark(color-mix(in oklab, var(--ui-color2), white 23%), color-mix(in oklab, var(--ui-color2), black 15.5%));\n\n --ui-color2-500: var(--ui-color2);\n\n --ui-color2-600: light-dark(color-mix(in oklab, var(--ui-color2), black 15.5%), color-mix(in oklab, var(--ui-color2), white 15%));\n\n --ui-color2-700: light-dark(color-mix(in oklab, var(--ui-color2), black 28.25%), color-mix(in oklab, var(--ui-color2), white 47%));\n\n --ui-color2-800: light-dark(color-mix(in oklab, var(--ui-color2), black 43.5%), color-mix(in oklab, var(--ui-color2), white 70%));\n\n --ui-color2-900: light-dark(color-mix(in oklab, var(--ui-color2), black 58.5%), color-mix(in oklab, var(--ui-color2), white 87%));\n\n --ui-color2-950: light-dark(color-mix(in oklab, var(--ui-color2), black 73.75%), color-mix(in oklab, var(--ui-color2), white 95%));\n\n --ui-color3-50: light-dark(color-mix(in oklab, var(--ui-color3), white 95%), color-mix(in oklab, var(--ui-color3), black 73.75%));\n\n --ui-color3-100: light-dark(color-mix(in oklab, var(--ui-color3), white 87%), color-mix(in oklab, var(--ui-color3), black 58.5%));\n\n --ui-color3-200: light-dark(color-mix(in oklab, var(--ui-color3), white 70%), color-mix(in oklab, var(--ui-color3), black 43.5%));\n\n --ui-color3-300: light-dark(color-mix(in oklab, var(--ui-color3), white 47%), color-mix(in oklab, var(--ui-color3), black 28.25%));\n\n --ui-color3-400: light-dark(color-mix(in oklab, var(--ui-color3), white 23%), color-mix(in oklab, var(--ui-color3), black 15.5%));\n\n --ui-color3-500: var(--ui-color3);\n\n --ui-color3-600: light-dark(color-mix(in oklab, var(--ui-color3), black 15.5%), color-mix(in oklab, var(--ui-color3), white 15%));\n\n --ui-color3-700: light-dark(color-mix(in oklab, var(--ui-color3), black 28.25%), color-mix(in oklab, var(--ui-color3), white 47%));\n\n --ui-color3-800: light-dark(color-mix(in oklab, var(--ui-color3), black 43.5%), color-mix(in oklab, var(--ui-color3), white 70%));\n\n --ui-color3-900: light-dark(color-mix(in oklab, var(--ui-color3), black 58.5%), color-mix(in oklab, var(--ui-color3), white 87%));\n\n --ui-color3-950: light-dark(color-mix(in oklab, var(--ui-color3), black 73.75%), color-mix(in oklab, var(--ui-color3), white 95%));\n\n --ui-color4-50: light-dark(color-mix(in oklab, var(--ui-color4), white 95%), color-mix(in oklab, var(--ui-color4), black 73.75%));\n\n --ui-color4-100: light-dark(color-mix(in oklab, var(--ui-color4), white 87%), color-mix(in oklab, var(--ui-color4), black 58.5%));\n\n --ui-color4-200: light-dark(color-mix(in oklab, var(--ui-color4), white 70%), color-mix(in oklab, var(--ui-color4), black 43.5%));\n\n --ui-color4-300: light-dark(color-mix(in oklab, var(--ui-color4), white 47%), color-mix(in oklab, var(--ui-color4), black 28.25%));\n\n --ui-color4-400: light-dark(color-mix(in oklab, var(--ui-color4), white 23%), color-mix(in oklab, var(--ui-color4), black 15.5%));\n\n --ui-color4-500: var(--ui-color4);\n\n --ui-color4-600: light-dark(color-mix(in oklab, var(--ui-color4), black 15.5%), color-mix(in oklab, var(--ui-color4), white 15%));\n\n --ui-color4-700: light-dark(color-mix(in oklab, var(--ui-color4), black 28.25%), color-mix(in oklab, var(--ui-color4), white 47%));\n\n --ui-color4-800: light-dark(color-mix(in oklab, var(--ui-color4), black 43.5%), color-mix(in oklab, var(--ui-color4), white 70%));\n\n --ui-color4-900: light-dark(color-mix(in oklab, var(--ui-color4), black 58.5%), color-mix(in oklab, var(--ui-color4), white 87%));\n\n --ui-color4-950: light-dark(color-mix(in oklab, var(--ui-color4), black 73.75%), color-mix(in oklab, var(--ui-color4), white 95%));\n\n --ui-color5-50: light-dark(color-mix(in oklab, var(--ui-color5), white 95%), color-mix(in oklab, var(--ui-color5), black 73.75%));\n\n --ui-color5-100: light-dark(color-mix(in oklab, var(--ui-color5), white 87%), color-mix(in oklab, var(--ui-color5), black 58.5%));\n\n --ui-color5-200: light-dark(color-mix(in oklab, var(--ui-color5), white 70%), color-mix(in oklab, var(--ui-color5), black 43.5%));\n\n --ui-color5-300: light-dark(color-mix(in oklab, var(--ui-color5), white 47%), color-mix(in oklab, var(--ui-color5), black 28.25%));\n\n --ui-color5-400: light-dark(color-mix(in oklab, var(--ui-color5), white 23%), color-mix(in oklab, var(--ui-color5), black 15.5%));\n\n --ui-color5-500: var(--ui-color5);\n\n --ui-color5-600: light-dark(color-mix(in oklab, var(--ui-color5), black 15.5%), color-mix(in oklab, var(--ui-color5), white 15%));\n\n --ui-color5-700: light-dark(color-mix(in oklab, var(--ui-color5), black 28.25%), color-mix(in oklab, var(--ui-color5), white 47%));\n\n --ui-color5-800: light-dark(color-mix(in oklab, var(--ui-color5), black 43.5%), color-mix(in oklab, var(--ui-color5), white 70%));\n\n --ui-color5-900: light-dark(color-mix(in oklab, var(--ui-color5), black 58.5%), color-mix(in oklab, var(--ui-color5), white 87%));\n\n --ui-color5-950: light-dark(color-mix(in oklab, var(--ui-color5), black 73.75%), color-mix(in oklab, var(--ui-color5), white 95%));\n\n --ui-color6-50: light-dark(color-mix(in oklab, var(--ui-color6), white 95%), color-mix(in oklab, var(--ui-color6), black 73.75%));\n\n --ui-color6-100: light-dark(color-mix(in oklab, var(--ui-color6), white 87%), color-mix(in oklab, var(--ui-color6), black 58.5%));\n\n --ui-color6-200: light-dark(color-mix(in oklab, var(--ui-color6), white 70%), color-mix(in oklab, var(--ui-color6), black 43.5%));\n\n --ui-color6-300: light-dark(color-mix(in oklab, var(--ui-color6), white 47%), color-mix(in oklab, var(--ui-color6), black 28.25%));\n\n --ui-color6-400: light-dark(color-mix(in oklab, var(--ui-color6), white 23%), color-mix(in oklab, var(--ui-color6), black 15.5%));\n\n --ui-color6-500: var(--ui-color6);\n\n --ui-color6-600: light-dark(color-mix(in oklab, var(--ui-color6), black 15.5%), color-mix(in oklab, var(--ui-color6), white 15%));\n\n --ui-color6-700: light-dark(color-mix(in oklab, var(--ui-color6), black 28.25%), color-mix(in oklab, var(--ui-color6), white 47%));\n\n --ui-color6-800: light-dark(color-mix(in oklab, var(--ui-color6), black 43.5%), color-mix(in oklab, var(--ui-color6), white 70%));\n\n --ui-color6-900: light-dark(color-mix(in oklab, var(--ui-color6), black 58.5%), color-mix(in oklab, var(--ui-color6), white 87%));\n\n --ui-color6-950: light-dark(color-mix(in oklab, var(--ui-color6), black 73.75%), color-mix(in oklab, var(--ui-color6), white 95%));\n}\n","button,\n.button {\n transition-property: translate, background-color;\n transition-duration: 100ms;\n transition-timing-function: ease-out;\n\n background-color: var(--ui-primary);\n border: none;\n color: var(--ui-neutral-50);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5em;\n\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: 8px;\n\n font: inherit;\n line-height: calc((16 / 14) * 1rem);\n cursor: pointer;\n user-select: none;\n text-decoration: none;\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-primary-600);\n }\n }\n\n &:active {\n background-color: var(--ui-primary-700);\n translate: 0 1px;\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n }\n\n &:disabled {\n cursor: default;\n opacity: 0.4;\n }\n\n svg {\n flex-shrink: 0;\n }\n\n kbd {\n padding-block: 0;\n padding-inline: var(--ui-spacing);\n margin-left: auto;\n }\n\n .badge {\n margin-left: auto;\n }\n\n &[aria-busy=\"true\"]:before {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: var(--ui-loading);\n mask-size: 1rem;\n width: 1rem;\n height: 1rem;\n mask-repeat: no-repeat;\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-primary-600);\n translate: 0 1px;\n }\n\n /* modifiers */\n\n &.round {\n padding-inline: var(--ui-spacing-2);\n border-radius: 100px;\n }\n\n &.square {\n padding-inline: var(--ui-spacing-2);\n }\n\n /* variants */\n\n &.outlined {\n color: var(--ui-neutral-950);\n background-color: transparent;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-neutral-100);\n }\n }\n\n &:active {\n background-color: var(--ui-neutral-200);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-neutral-100);\n }\n }\n\n &.secondary {\n background-color: var(--ui-neutral-100);\n color: var(--ui-neutral-950);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-neutral-200);\n }\n }\n\n &:active {\n background-color: var(--ui-neutral-300);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-neutral-300);\n }\n }\n\n &.ghost {\n background-color: transparent;\n color: var(--ui-neutral-950);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-neutral-100);\n }\n }\n\n &:active {\n background-color: var(--ui-neutral-200);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-neutral-200);\n }\n }\n\n &.link {\n background-color: transparent;\n text-decoration: underline;\n color: var(--ui-neutral-950);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: transparent;\n }\n }\n\n &:active {\n background-color: transparent;\n }\n }\n }\n\n &.destructive {\n background-color: var(--ui-destructive);\n color: var(--ui-destructive-100);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-destructive-600);\n }\n }\n\n &:active {\n background-color: var(--ui-destructive-700);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-destructive-600);\n }\n }\n\n &.ghost.destructive {\n background-color: transparent;\n color: var(--ui-destructive);\n\n &:not(:disabled) {\n @media (hover: hover) {\n &:hover {\n background-color: var(--ui-destructive-100);\n }\n }\n\n &:active {\n background-color: var(--ui-destructive-200);\n }\n }\n\n &[popovertarget]:has(+ [popover]:popover-open) {\n background-color: var(--ui-destructive-100);\n }\n }\n}\n","label:has(> input:where([type=\"radio\"])) {\n display: flex;\n align-items: center;\n gap: 0.5em;\n cursor: pointer;\n user-select: none;\n\n &:has(> input:disabled) {\n opacity: 0.4;\n cursor: default;\n }\n}\n\ninput[type=\"radio\"] {\n appearance: none;\n width: 16px;\n aspect-ratio: 1;\n border-radius: 50%;\n box-shadow: 0 0 0 1.5px var(--ui-neutral-300) inset;\n background-color: transparent;\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background-color 100ms,\n box-shadow 100ms;\n\n &:checked {\n background-color: var(--ui-primary);\n box-shadow: 0 0 0 1.5px var(--ui-primary) inset;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -8 40 40' overflow='visible'%3E%3Crect x='-100' y='-100' width='200' height='200' fill='white'/%3E%3Ccircle cx='12' cy='12' r='6' fill='black'/%3E%3C/svg%3E\");\n mask-mode: luminance;\n mask-size: 24px;\n mask-position: 50%;\n mask-repeat: no-repeat;\n mask-clip: no-clip;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: default;\n }\n\n &:focus-visible {\n border-radius: 8px;\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n}\n",".combobox {\n display: inline-block;\n\n > input {\n width: 100%;\n }\n\n > [popover] > menu:not(:has(li:not([hidden])))::after {\n content: \"No results\";\n display: block;\n padding: var(--ui-spacing-2) var(--ui-spacing-3);\n color: var(--ui-neutral-400);\n text-align: center;\n }\n}\n",".badge {\n display: inline-flex;\n align-items: center;\n gap: var(--ui-spacing-1);\n padding-inline: var(--ui-spacing-2);\n border-radius: 999px;\n font-size: 0.75rem;\n font-weight: 500;\n letter-spacing: 0.02em;\n user-select: none;\n line-height: 1.5;\n background-color: var(--ui-neutral-200);\n color: var(--ui-neutral-700);\n\n &.secondary {\n background-color: var(--ui-neutral-700);\n color: var(--ui-neutral-100);\n }\n\n &.primary {\n background-color: var(--ui-primary-200);\n color: var(--ui-primary-700);\n }\n\n &.constructive {\n background-color: var(--ui-constructive-200);\n color: var(--ui-constructive-700);\n }\n\n &.destructive {\n background-color: var(--ui-destructive-200);\n color: var(--ui-destructive-700);\n }\n\n &.color1 {\n background-color: var(--ui-color1-200);\n color: var(--ui-color1-700);\n }\n\n &.color2 {\n background-color: var(--ui-color2-200);\n color: var(--ui-color2-700);\n }\n\n &.color3 {\n background-color: var(--ui-color3-200);\n color: var(--ui-color3-700);\n }\n\n &.color4 {\n background-color: var(--ui-color4-200);\n color: var(--ui-color4-700);\n }\n\n &.color5 {\n background-color: var(--ui-color5-200);\n color: var(--ui-color5-700);\n }\n\n &.color6 {\n background-color: var(--ui-color6-200);\n color: var(--ui-color6-700);\n }\n\n &.outlined {\n background-color: transparent;\n box-shadow: 0 0 0 1px currentColor inset;\n }\n\n svg {\n width: 1em;\n height: 1em;\n }\n}\n","fieldset[role=\"group\"] {\n display: inline-flex;\n align-items: stretch;\n padding: 0;\n vertical-align: bottom;\n border: none;\n /* background: var(--ui-background-color); */\n\n & > *:not(.field) {\n position: relative;\n border-radius: 0;\n margin-right: -1px;\n\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n &:first-child {\n border-radius: 8px 0 0 8px;\n }\n\n &:last-child {\n border-radius: 0 8px 8px 0;\n margin-right: 0;\n }\n\n &:hover,\n &:focus-within,\n &:active {\n z-index: 1;\n }\n }\n\n & > button:not(.ghost),\n & > .button:not(.ghost) {\n box-shadow: none;\n margin-left: 1px;\n margin-right: 0;\n }\n\n & > :only-child:not(.field) {\n border-radius: 8px;\n }\n\n & > input {\n flex: 1;\n min-width: 0;\n\n &:focus {\n border-color: var(--ui-neutral-500);\n }\n }\n\n label:not(.field) {\n line-height: calc(16 / 14 * 1em);\n border-radius: 0;\n }\n}\n","hr {\n width: 100%;\n border: none;\n border-top: 1px solid var(--ui-neutral-200);\n margin-block: var(--ui-spacing-1) 0;\n}\n\nhr[data-label] {\n border: none;\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n\n isolation: isolate;\n background: linear-gradient(var(--ui-neutral-200), var(--ui-neutral-200)) center / 100% 1px no-repeat;\n\n &::before,\n &::after {\n grid-row: 1;\n grid-column: 2;\n content: \"\";\n justify-self: center;\n font-size: 0.875rem;\n height: 1lh;\n white-space: nowrap;\n }\n\n &::before {\n width: 100%;\n background: var(--ui-background-color);\n }\n\n &::after {\n content: attr(data-label);\n color: var(--ui-neutral-500);\n padding-inline: var(--ui-spacing-3);\n }\n}\n\n@container (min-width: 480px) {\n hr {\n margin-block: var(--ui-spacing-4);\n }\n}\n","input[type=\"range\"] {\n appearance: none;\n width: 100%;\n height: 0.25rem;\n border-radius: 100px;\n background: linear-gradient(to right, var(--ui-primary) calc(var(--pct, 0) * 100%), var(--ui-neutral-200) calc(var(--pct, 0) * 100%));\n cursor: pointer;\n outline: none;\n\n &::-webkit-slider-thumb {\n appearance: none;\n width: 1.125rem;\n aspect-ratio: 1;\n border-radius: 50%;\n background: var(--ui-background-color);\n box-shadow: 0 0 0 1.5px var(--ui-neutral-300) inset;\n transition: outline-color 100ms;\n }\n\n &::-moz-range-thumb {\n width: 1.125rem;\n height: 1.125rem;\n border-radius: 50%;\n border: none;\n background: var(--ui-background-color);\n box-shadow: 0 0 0 1.5px var(--ui-neutral-300) inset;\n cursor: pointer;\n }\n\n /* &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n } */\n\n &:focus-visible::-webkit-slider-thumb {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n /* box-shadow: 0 0 0 1.5px var(--ui-neutral-950) inset; */\n }\n\n &:focus-visible::-moz-range-thumb {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n /* box-shadow: 0 0 0 1.5px var(--ui-neutral-950) inset; */\n }\n\n &:disabled {\n cursor: default;\n opacity: 0.4;\n }\n}\n","dialog {\n container-type: inline-size;\n\n position: fixed;\n inset: 0;\n margin: auto;\n z-index: 1;\n background: var(--ui-background-color);\n border: none;\n border-radius: 12px;\n padding: 0;\n max-width: min(480px, calc(100vw - 2rem));\n width: 100%;\n\n pointer-events: none;\n\n opacity: 0;\n translate: 0 4px;\n transition:\n opacity 300ms var(--ease-glide),\n translate 300ms var(--ease-glide),\n display 100ms allow-discrete,\n overlay 100ms allow-discrete;\n\n &[open] {\n opacity: 1;\n translate: 0 0;\n pointer-events: auto;\n }\n\n @starting-style {\n &[open] {\n opacity: 0;\n translate: 0 4px;\n }\n }\n\n &::backdrop {\n opacity: 0;\n background: oklch(0% 0 0 / 0.4);\n backdrop-filter: blur(2px);\n transition:\n opacity 200ms var(--ease-glide),\n display 100ms allow-discrete,\n overlay 100ms allow-discrete;\n }\n\n &[open]::backdrop {\n opacity: 1;\n }\n\n @starting-style {\n &[open]::backdrop {\n opacity: 0;\n }\n }\n}\n\nbody:has(dialog[scroll-lock][open], details[scroll-lock][open]) {\n overflow: hidden;\n touch-action: none;\n}\n","/* @keyframes prevent-scroll {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n} */\n\ninput[type=\"text\"],\ninput[type=\"email\"],\ninput[type=\"search\"],\ninput[type=\"password\"],\ninput[type=\"number\"],\ninput[type=\"tel\"],\ninput[type=\"url\"],\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"],\ninput[type=\"week\"] {\n appearance: none;\n border: none;\n\n background-color: transparent;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: 8px;\n\n font: inherit;\n line-height: calc((16 / 14) * 1rem);\n\n transition-property: padding-inline-start;\n transition-duration: 150ms;\n transition-timing-function: var(--ease-glide);\n\n &:focus-visible {\n box-shadow: 0 0 0 1px currentColor inset;\n outline: none;\n }\n}\n\nlabel:has([data-suffix]) input[type=\"search\"]::-webkit-search-cancel-button {\n display: none;\n}\n\ninput[type=\"search\"]::-webkit-search-cancel-button {\n appearance: none;\n width: 1em;\n height: 1em;\n cursor: pointer;\n background-color: var(--ui-neutral-400);\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6l-12 12'/%3E%3Cpath d='M6 6l12 12'/%3E%3C/svg%3E\");\n mask-size: contain;\n mask-repeat: no-repeat;\n mask-position: center;\n}\n\n/* Input with leading/trailing adornments (svg, kbd, button, etc.) */\nlabel:not(.toggle):has(> [data-prefix], > [data-suffix]) {\n display: grid;\n grid-template-columns: auto 1fr auto auto;\n align-items: center;\n cursor: text;\n\n /* Input spans all columns as the full-width background */\n > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n grid-column: 1 / -1;\n grid-row: 1;\n }\n\n /* Adornments sit on top */\n > [data-prefix],\n > [data-suffix] {\n grid-row: 1;\n position: relative;\n z-index: 1;\n }\n\n > [data-prefix]:not(button),\n > [data-suffix]:not(button) {\n color: var(--ui-neutral-400);\n }\n\n > [data-prefix] {\n grid-column: 1;\n margin-inline: var(--ui-spacing-3) var(--ui-spacing-2);\n transition: opacity 150ms var(--ease-glide);\n }\n\n > [data-suffix]:last-child {\n grid-column: 4;\n margin-inline: var(--ui-spacing-2) var(--ui-spacing-3);\n }\n\n > [data-suffix]:not(:last-child) {\n grid-column: 3;\n margin-inline: var(--ui-spacing-2) 0;\n }\n\n > button[data-suffix] {\n padding: var(--ui-spacing-2) var(--ui-spacing-2);\n font-size: smaller;\n height: calc(100% - 8px);\n border-radius: 4px;\n\n &:last-child {\n margin-inline-end: 4px;\n }\n }\n\n /* Spinner always rendered in column 1; crossfades with data-prefix */\n &::before {\n content: \"\";\n display: block;\n grid-column: 1;\n grid-row: 1;\n z-index: 2;\n position: relative;\n width: 1em;\n height: 1em;\n background-color: var(--ui-neutral-400);\n mask-image: var(--ui-loading);\n mask-size: contain;\n mask-repeat: no-repeat;\n margin-inline: var(--ui-spacing-3) var(--ui-spacing-2);\n opacity: 0;\n transition: opacity 150ms var(--ease-glide);\n }\n\n &:has(> input[aria-busy=\"true\"]) {\n > [data-prefix] {\n opacity: 0;\n }\n &::before {\n opacity: 1;\n }\n }\n}\n\n/* aria-busy spinner for inputs without adornments */\nlabel:not(.toggle):not(:has(> [data-prefix], > [data-suffix])):has(> input[aria-busy=\"true\"]) {\n &::before {\n opacity: 1;\n }\n}\n\nlabel:not(.toggle):not(:has(> [data-prefix], > [data-suffix])):has(> input[aria-busy=\"true\"]) {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n cursor: text;\n\n &::before {\n content: \"\";\n display: block;\n grid-column: 1;\n grid-row: 1;\n z-index: 1;\n position: relative;\n width: 1em;\n height: 1em;\n background-color: var(--ui-neutral-400);\n mask-image: var(--ui-loading);\n mask-size: contain;\n mask-repeat: no-repeat;\n margin-inline: var(--ui-spacing-3) var(--ui-spacing-2);\n transition: opacity 150ms var(--ease-glide);\n\n @starting-style {\n opacity: 0;\n }\n }\n\n > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n grid-column: 1 / -1;\n grid-row: 1;\n padding-inline-start: calc(var(--ui-spacing-3) + 1rem + var(--ui-spacing-2));\n }\n}\n\n/* Offset input text to clear leading adornment */\nlabel:not(.toggle):has(> [data-prefix]) > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n padding-inline-start: calc(var(--ui-spacing-3) + 1lh + var(--ui-spacing-2));\n}\n\n/* Offset input text to clear one trailing adornment */\nlabel:not(.toggle):has(> [data-suffix]) > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n padding-inline-end: calc(var(--ui-spacing-3) + 1lh + var(--ui-spacing-2));\n}\n\n/* Offset input text to clear two trailing adornments */\nlabel:not(.toggle):has(> [data-suffix]:not(:last-child)) > input:is([type=\"text\"], [type=\"email\"], [type=\"search\"], [type=\"password\"], [type=\"number\"], [type=\"tel\"], [type=\"url\"], :not([type])) {\n padding-inline-end: calc(var(--ui-spacing-3) + 2lh + var(--ui-spacing-2));\n}\n","@keyframes ui-progress-indeterminate {\n from { background-position: 100% center; }\n to { background-position: -100% center; }\n}\n\nprogress {\n appearance: none;\n width: 100%;\n height: 0.25rem;\n border-radius: 100px;\n border: none;\n overflow: hidden;\n\n &::-webkit-progress-bar {\n background: var(--ui-neutral-200);\n }\n\n &::-webkit-progress-value {\n background: var(--ui-primary);\n border-radius: 100px;\n }\n\n &::-moz-progress-bar {\n background: var(--ui-primary);\n border-radius: 100px;\n }\n\n &:indeterminate {\n background: linear-gradient(\n 90deg,\n var(--ui-neutral-200) 0%,\n var(--ui-neutral-200) 40%,\n var(--ui-primary) 40%,\n var(--ui-primary) 60%,\n var(--ui-neutral-200) 60%\n );\n background-size: 200% 100%;\n animation: ui-progress-indeterminate 1.5s linear infinite;\n\n &::-webkit-progress-bar { background: transparent; }\n &::-webkit-progress-value { background: transparent; }\n &::-moz-progress-bar { background: transparent; }\n }\n}\n","input[type=\"checkbox\"].switch {\n appearance: none;\n width: 2.25rem;\n height: 1.2lh;\n border-radius: 100px;\n box-shadow: none;\n background-color: var(--ui-neutral-200);\n cursor: pointer;\n flex-shrink: 0;\n position: relative;\n display: inline-flex;\n align-items: center;\n transition: background-color 100ms;\n mask-image: none;\n\n &::after {\n content: \"\";\n position: absolute;\n left: 0;\n width: calc(1.2lh - 2px);\n aspect-ratio: 1;\n margin-inline: 1px;\n border-radius: 50%;\n background-color: var(--ui-background-color);\n transition: left 300ms var(--ease-glide);\n }\n\n &:checked {\n background-color: var(--ui-primary);\n background-image: none;\n\n &::after {\n left: calc(100% - 1lh - 2px - 1px);\n }\n }\n\n &:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: default;\n }\n}\n",":not(pre) > code {\n font-family: ui-monospace, \"Cascadia Code\", \"Fira Code\", monospace;\n font-size: 0.9em;\n background: var(--ui-neutral-100);\n border: 1px solid var(--ui-neutral-200);\n border-radius: 4px;\n padding: 0.15em 0.4em;\n}\n",".file-drop {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ui-spacing-2);\n padding: var(--ui-spacing-8);\n border: 1px dashed var(--ui-neutral-400);\n border-radius: var(--ui-spacing-3);\n position: relative;\n cursor: pointer;\n color: var(--ui-neutral-500);\n text-align: center;\n transition:\n color 0.15s var(--ease-glide),\n border-color 0.15s var(--ease-glide);\n\n > svg {\n width: 1.75rem;\n height: 1.75rem;\n }\n\n > small {\n color: var(--ui-neutral-400);\n }\n\n > input[type=\"file\"] {\n position: absolute;\n inset: 0;\n opacity: 0;\n cursor: pointer;\n }\n\n &:hover {\n color: var(--ui-neutral-700);\n border-color: var(--ui-neutral-600);\n }\n}\n","[popover] {\n /* reset browser defaults */\n position: fixed;\n inset: unset;\n margin: 0;\n border: none;\n padding: 0;\n\n /* position below trigger by default */\n top: calc(anchor(bottom) + var(--ui-spacing-1));\n left: anchor(left);\n min-width: anchor-size(width);\n --_translate-from: 0 -2px;\n\n /* try right-aligned, then above, then above-right */\n position-try-fallbacks: --popover-right, --popover-above, --popover-above-right;\n\n /* visual */\n background: var(--ui-background-color);\n border: 1px solid var(--ui-neutral-200);\n border-radius: 12px;\n box-shadow: 0 4px 16px oklch(0% 0 0 / 0.08);\n\n & > article {\n box-shadow: none;\n border-radius: 0;\n\n & > header,\n & > footer {\n padding: var(--ui-spacing-2) var(--ui-spacing-2);\n }\n\n & > header {\n box-shadow: 0 -1px 0 0 inset var(--ui-neutral-100);\n }\n\n & > footer {\n box-shadow: 0 1px 0 0 inset var(--ui-neutral-100);\n }\n\n &:has(> header, > footer) > :not(header):not(footer) {\n padding: var(--ui-spacing-2);\n }\n }\n\n /* animation */\n opacity: 0;\n translate: var(--_translate-from);\n transition:\n opacity 100ms var(--ease-glide),\n translate 100ms var(--ease-glide),\n display 100ms allow-discrete,\n overlay 100ms allow-discrete;\n\n &:not(:popover-open) {\n display: none !important;\n }\n\n &:popover-open {\n display: unset;\n opacity: 1;\n translate: 0 0;\n }\n\n @starting-style {\n &:popover-open {\n opacity: 0;\n translate: var(--_translate-from);\n }\n }\n}\n\n@position-try --popover-above {\n top: unset;\n bottom: calc(anchor(top) + var(--ui-spacing-1));\n left: anchor(left);\n translate: 0 4px;\n}\n\n@position-try --popover-right {\n top: calc(anchor(bottom) + var(--ui-spacing-1));\n left: unset;\n right: anchor(right);\n}\n\n@position-try --popover-above-right {\n top: unset;\n bottom: calc(anchor(top) + var(--ui-spacing-1));\n left: unset;\n right: anchor(right);\n translate: 0 4px;\n}\n\n/* per-side animation direction */\n[popover][data-placement^=\"top\"] {\n --_translate-from: 0 2px;\n}\n[popover][data-placement^=\"left\"] {\n --_translate-from: 2px 0;\n}\n[popover][data-placement^=\"right\"] {\n --_translate-from: -2px 0;\n}\n/* bottom is the default (0 -2px), no override needed */\n\n/* bottom placements */\n[popover][data-placement=\"bottom left\"] {\n top: calc(anchor(bottom) + var(--ui-spacing-1));\n bottom: unset;\n left: anchor(left);\n right: unset;\n}\n\n[popover][data-placement=\"bottom right\"] {\n top: calc(anchor(bottom) + var(--ui-spacing-1));\n bottom: unset;\n left: unset;\n right: anchor(right);\n}\n\n/* top placements */\n[popover][data-placement=\"top left\"] {\n top: unset;\n bottom: calc(anchor(top) + var(--ui-spacing-1));\n left: anchor(left);\n right: unset;\n}\n\n[popover][data-placement=\"top right\"] {\n top: unset;\n bottom: calc(anchor(top) + var(--ui-spacing-1));\n left: unset;\n right: anchor(right);\n}\n\n/* left placements */\n[popover][data-placement=\"left top\"] {\n top: anchor(top);\n bottom: unset;\n left: unset;\n right: calc(anchor(left) + var(--ui-spacing-1));\n min-width: unset;\n}\n\n[popover][data-placement=\"left bottom\"] {\n top: unset;\n bottom: anchor(bottom);\n left: unset;\n right: calc(anchor(left) + var(--ui-spacing-1));\n min-width: unset;\n}\n\n/* right placements */\n[popover][data-placement=\"right top\"] {\n top: anchor(top);\n bottom: unset;\n left: calc(anchor(right) + var(--ui-spacing-1));\n right: unset;\n min-width: unset;\n}\n\n[popover][data-placement=\"right bottom\"] {\n top: unset;\n bottom: anchor(bottom);\n left: calc(anchor(right) + var(--ui-spacing-1));\n right: unset;\n min-width: unset;\n}\n","[data-tooltip][aria-label]:not(input, select, textarea) {\n position: relative;\n\n &::before,\n &::after {\n position: absolute;\n z-index: 2147483647;\n pointer-events: none;\n opacity: 0;\n transition: opacity 100ms;\n }\n\n &::before {\n content: attr(aria-label);\n background: var(--ui-neutral-950);\n color: var(--ui-neutral-50);\n padding: 0.4em 0.75em;\n border-radius: 6px;\n font-size: 0.875rem;\n line-height: 1;\n white-space: nowrap;\n }\n\n &::after {\n content: \"\";\n width: 8px;\n height: 8px;\n rotate: 45deg;\n background: var(--ui-neutral-950);\n }\n\n /* top (default) */\n &:not([data-tooltip=\"bottom\"], [data-tooltip=\"left\"], [data-tooltip=\"right\"])::before {\n bottom: calc(100% + 0.5rem);\n left: 50%;\n translate: -50% 0;\n }\n &:not([data-tooltip=\"bottom\"], [data-tooltip=\"left\"], [data-tooltip=\"right\"])::after {\n bottom: calc(100% + 0.5rem);\n left: 50%;\n translate: -50% 50%;\n mask-image: linear-gradient(-45deg, black 51%, transparent 50%);\n border-end-end-radius: 2px;\n }\n\n /* bottom */\n &[data-tooltip=\"bottom\"]::before {\n top: calc(100% + 0.5rem);\n left: 50%;\n translate: -50% 0;\n }\n &[data-tooltip=\"bottom\"]::after {\n top: calc(100% + 0.5rem);\n left: 50%;\n translate: -50% -50%;\n mask-image: linear-gradient(-45deg, transparent 50%, black 50%);\n border-start-start-radius: 2px;\n }\n\n /* left */\n &[data-tooltip=\"left\"]::before {\n right: calc(100% + 0.5rem);\n top: 50%;\n translate: 0 -50%;\n }\n &[data-tooltip=\"left\"]::after {\n right: calc(100% + 0.5rem);\n top: 50%;\n translate: 50% -50%;\n mask-image: linear-gradient(45deg, transparent 50%, black 50%);\n border-start-end-radius: 2px;\n }\n\n /* right */\n &[data-tooltip=\"right\"]::before {\n left: calc(100% + 0.5rem);\n top: 50%;\n translate: 0 -50%;\n }\n &[data-tooltip=\"right\"]::after {\n left: calc(100% + 0.5rem);\n top: 50%;\n translate: -50% -50%;\n mask-image: linear-gradient(45deg, black 50%, transparent 50%);\n border-end-start-radius: 2px;\n }\n\n @media (hover: hover) {\n &:hover::before,\n &:hover::after {\n opacity: 1;\n }\n }\n\n &:focus-visible::before,\n &:focus-visible::after {\n opacity: 1;\n }\n}\n","kbd {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n border-radius: 4px;\n padding-block: calc(var(--ui-spacing) / 2);\n padding-inline: var(--ui-spacing-2);\n background: var(--ui-neutral-100);\n color: var(--ui-neutral-800);\n font-family: inherit;\n font-size: 0.85em;\n user-select: none;\n\n + kbd {\n margin-left: 0.5em;\n }\n\n &:has(> kbd) {\n background: none;\n padding: 0;\n min-width: unset;\n font-size: 1em;\n color: var(--ui-neutral-400);\n gap: 0.35em;\n\n > kbd {\n margin-left: 0;\n }\n }\n}\n",".expander {\n position: relative;\n\n > :not(label) {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n interpolate-size: allow-keywords;\n transition: max-height 400ms var(--ease-glide);\n }\n\n > label {\n display: flex;\n align-items: center;\n gap: var(--ui-spacing-2);\n padding-top: var(--ui-spacing-4);\n cursor: pointer;\n user-select: none;\n\n > input[type=\"checkbox\"] {\n display: none;\n }\n\n &::after {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");\n mask-size: 1rem;\n mask-repeat: no-repeat;\n mask-position: center;\n width: 1rem;\n aspect-ratio: 1;\n transition: transform 400ms var(--ease-glide);\n }\n }\n}\n\n.expander:has(> label > input[type=\"checkbox\"]) > :not(label) {\n -webkit-line-clamp: var(--lines, 3);\n line-clamp: var(--lines, 3);\n max-height: calc(var(--lines, 3) * 1lh);\n transition:\n max-height 400ms var(--ease-glide),\n -webkit-line-clamp 0s 400ms allow-discrete,\n line-clamp 0s 400ms allow-discrete;\n}\n\n.expander:has(> label > input[type=\"checkbox\"]:checked) > :not(label) {\n -webkit-line-clamp: none;\n line-clamp: none;\n max-height: max-content;\n transition:\n max-height 400ms var(--ease-glide),\n -webkit-line-clamp 0s allow-discrete,\n line-clamp 0s allow-discrete;\n}\n\n.expander:has(> label > input[type=\"checkbox\"]:checked) > label::after {\n transform: perspective(1rem) rotateX(180deg);\n}\n","menu {\n & > li > button,\n & > li > .button {\n width: 100%;\n justify-content: flex-start;\n white-space: nowrap;\n }\n\n & > li > label {\n width: 100%;\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: 8px;\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n\n > input[type=\"radio\"],\n > input[type=\"checkbox\"] {\n appearance: none;\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n }\n\n @media (hover: hover) {\n &:hover {\n background: var(--ui-neutral-100);\n }\n }\n\n &:has(input[type=\"checkbox\"], input[type=\"radio\"]) {\n &::after {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E\");\n mask-size: 1rem;\n mask-repeat: no-repeat;\n mask-position: center;\n width: 1rem;\n height: 1rem;\n visibility: hidden;\n margin-left: auto;\n }\n\n &:has(input:checked)::after {\n visibility: visible;\n }\n }\n }\n\n & hr {\n margin-block: var(--ui-spacing-1);\n }\n\n & > li > small:only-child:not(:has(*)) {\n display: block;\n padding: var(--ui-spacing-2) var(--ui-spacing-3) var(--ui-spacing-1);\n color: var(--ui-neutral-500);\n font-size: 0.8125rem;\n margin-left: 2px;\n user-select: none;\n }\n}\n","[data-focus-within] {\n [data-focus]:focus-visible {\n outline: none;\n box-shadow: none;\n }\n\n &:has([data-focus]:focus-visible) {\n border-radius: 8px;\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n}\n",":root {\n --ui-loading: url(\"data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='white' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E\");\n}\n\n:where(*:not(button)[aria-busy=\"true\"]):before {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: var(--ui-loading);\n mask-size: 1em;\n width: 1em;\n aspect-ratio: 1;\n mask-repeat: no-repeat;\n}\n","label:not(.field).toggle {\n display: inline-grid;\n text-align: center;\n grid-auto-flow: column;\n align-items: center;\n gap: var(--ui-spacing);\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: 8px;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n cursor: pointer;\n user-select: none;\n interpolate-size: allow-keywords;\n transition:\n background-color 100ms,\n box-shadow 100ms,\n color 100ms,\n grid-template-columns var(--toggle-duration) var(--ease-glide);\n\n --toggle-duration: 150ms;\n\n font-weight: 500;\n line-height: calc(16 / 14 * 1rem);\n\n > input[type=\"checkbox\"],\n > input[type=\"radio\"] {\n appearance: none;\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n }\n\n svg {\n transition: background-color 100ms;\n }\n\n [data-checked],\n [data-unchecked] {\n overflow: hidden;\n white-space: nowrap;\n transition:\n opacity var(--toggle-duration) ease,\n scale var(--toggle-duration) ease,\n display var(--toggle-duration) allow-discrete;\n }\n\n [data-unchecked] {\n grid-column: 1;\n grid-row: 1;\n display: revert;\n opacity: 1;\n scale: 1;\n\n @starting-style {\n opacity: 0;\n scale: 0.75;\n }\n }\n\n [data-checked] {\n grid-column: 1;\n grid-row: 1;\n display: none;\n opacity: 0;\n scale: 0.75;\n }\n\n /* &:has([data-unchecked]) {\n grid-template-columns: max-content 0px;\n } */\n\n &:has(> input:checked) {\n background-color: var(--ui-neutral-100);\n\n [data-checked] {\n display: revert;\n opacity: 1;\n scale: 1;\n\n @starting-style {\n opacity: 0;\n scale: 0.75;\n }\n }\n\n [data-unchecked] {\n display: none;\n opacity: 0;\n scale: 0.75;\n }\n\n /* &:has([data-unchecked]) {\n grid-template-columns: 0px max-content;\n } */\n }\n\n &.ghost {\n background-color: transparent;\n box-shadow: 0 0 0 1px transparent inset;\n }\n\n &.ghost:has(> input:checked) {\n background-color: var(--ui-neutral-100);\n box-shadow: 0 0 0 1px transparent inset;\n }\n\n &.fill:has(> input:checked) {\n svg {\n fill: currentColor;\n color: var(--ui-primary);\n }\n }\n\n &:has(:focus-visible) {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n }\n\n &:has(> input:disabled) {\n opacity: 0.4;\n cursor: default;\n }\n\n &.square {\n padding-inline: var(--ui-spacing-2);\n }\n}\n","[popover] > menu {\n padding: var(--ui-spacing-1);\n}\n","table {\n display: grid;\n grid-template-columns: var(--cols, repeat(auto-fill, minmax(max-content, 1fr)));\n width: 100%;\n overflow-x: auto;\n white-space: nowrap;\n}\n\n/* Auto-detect column count from header row (up to 30 columns) */\ntable:has(> thead > tr > th:last-child:nth-child(1)) {\n --cols: repeat(1, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(2)) {\n --cols: repeat(2, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(3)) {\n --cols: repeat(3, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(4)) {\n --cols: repeat(4, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(5)) {\n --cols: repeat(5, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(6)) {\n --cols: repeat(6, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(7)) {\n --cols: repeat(7, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(8)) {\n --cols: repeat(8, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(9)) {\n --cols: repeat(9, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(10)) {\n --cols: repeat(10, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(11)) {\n --cols: repeat(11, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(12)) {\n --cols: repeat(12, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(13)) {\n --cols: repeat(13, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(14)) {\n --cols: repeat(14, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(15)) {\n --cols: repeat(15, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(16)) {\n --cols: repeat(16, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(17)) {\n --cols: repeat(17, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(18)) {\n --cols: repeat(18, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(19)) {\n --cols: repeat(19, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(20)) {\n --cols: repeat(20, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(21)) {\n --cols: repeat(21, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(22)) {\n --cols: repeat(22, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(23)) {\n --cols: repeat(23, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(24)) {\n --cols: repeat(24, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(25)) {\n --cols: repeat(25, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(26)) {\n --cols: repeat(26, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(27)) {\n --cols: repeat(27, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(28)) {\n --cols: repeat(28, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(29)) {\n --cols: repeat(29, 1fr);\n}\ntable:has(> thead > tr > th:last-child:nth-child(30)) {\n --cols: repeat(30, 1fr);\n}\n\ncaption {\n grid-column: 1 / -1;\n padding: var(--ui-spacing-3) var(--ui-spacing-3);\n color: var(--ui-neutral-400);\n /* border-bottom: 1px solid var(--ui-neutral-200); */\n}\n\nthead,\ntbody,\ntfoot {\n display: contents;\n}\n\ntr {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: subgrid;\n\n @media (hover: hover) {\n &:hover > td {\n background: var(--ui-neutral-50);\n }\n }\n}\n\nth,\ntd {\n padding: var(--ui-spacing-3) var(--ui-spacing-3);\n text-align: left;\n border-bottom: 1px solid var(--ui-neutral-200);\n}\n\nth:last-child,\ntd:last-child {\n text-align: right;\n}\n\nthead > tr > th {\n font-weight: 600;\n color: var(--ui-neutral-600);\n /* background: var(--ui-neutral-50); */\n}\n\ntbody > tr:last-child > td,\ntfoot > tr:last-child > :is(th, td) {\n border-bottom: none;\n}\n\ntfoot > tr > :is(th, td) {\n background: var(--ui-neutral-50);\n font-weight: 600;\n}\n\ntfoot > tr:first-child > :is(th, td) {\n border-top: 1px solid var(--ui-neutral-200);\n}\n",".prose {\n > * + * {\n margin-block-start: 1em;\n }\n\n > h1,\n > h2,\n > h3,\n > h4,\n > h5,\n > h6 {\n line-height: 1.4;\n }\n\n p {\n line-height: 1.6;\n max-width: 65ch;\n }\n\n > ul,\n > ol {\n list-style: revert;\n list-style-position: outside;\n\n display: flex;\n flex-direction: column;\n gap: 0.5lh;\n\n margin-block: 1.61em;\n\n li {\n margin-inline-start: 1.5em;\n\n &::marker {\n color: var(--ui-neutral-400);\n font-variant-numeric: tabular-nums;\n }\n }\n }\n\n > blockquote {\n /* border-inline-start: 3px solid var(--ui-neutral-200); */\n padding-inline-start: var(--ui-spacing-4);\n\n position: relative;\n margin-block: 1.61em;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n height: 100%;\n width: 3px;\n left: 0;\n background-color: var(--ui-neutral-200);\n border-radius: 3px;\n }\n\n footer,\n cite {\n margin-top: var(--ui-spacing-2);\n color: var(--ui-neutral-500);\n }\n }\n\n > hgroup {\n margin-block-end: 1.61em;\n\n > p {\n margin-block-start: 0.61em;\n color: var(--ui-neutral-500);\n }\n }\n\n a:not(.button) {\n color: var(--ui-primary);\n }\n}\n","textarea {\n appearance: none;\n border: none;\n\n background-color: transparent;\n box-shadow: 0 0 0 1px var(--ui-neutral-200) inset;\n\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-3);\n border-radius: var(--ui-spacing-2);\n\n font: inherit;\n\n resize: vertical;\n display: block;\n width: stretch;\n\n &:not([rows]) {\n field-sizing: content;\n min-height: 6lh;\n }\n\n &:focus {\n box-shadow: 0 0 0 1px currentColor inset;\n outline: none;\n }\n\n &::-webkit-resizer {\n background-color: transparent;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cline x1='5' y1='13' x2='13' y2='5' stroke='%23888' stroke-width='1.5' stroke-linecap='round'/%3E%3Cline x1='9' y1='13' x2='13' y2='9' stroke='%23888' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E\");\n background-size: 100%;\n background-position: bottom right;\n background-repeat: no-repeat;\n }\n}\n","/* Trigger: button inside a menu item that has a sibling popover */\n[popover] > menu > li:has(> [popover]) > button {\n &::after {\n content: \"\";\n display: inline-block;\n background-color: currentColor;\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18l6-6-6-6'/%3E%3C/svg%3E\");\n mask-size: 1rem;\n mask-repeat: no-repeat;\n mask-position: center;\n width: 1rem;\n height: 1rem;\n margin-left: auto;\n }\n}\n\n/* Submenu popover: fall back to left side when no space on the right */\n[popover] > menu > li > [popover] {\n position-try-fallbacks: --submenu-left;\n}\n\n@position-try --submenu-left {\n top: anchor(top);\n left: unset;\n right: calc(anchor(left) + 0.25rem);\n translate: 2px 0;\n}\n","@scope (.tabs) to (.tabs .tabs) {\n :scope {\n width: stretch;\n }\n\n [role=\"tablist\"] {\n position: relative;\n display: flex;\n width: fit-content;\n\n background-color: var(--ui-neutral-200);\n border-radius: 9px;\n\n anchor-name: --hovered-link;\n anchor-scope: --hovered-link;\n\n > label:has(input:checked) {\n anchor-name: --hovered-link;\n }\n\n &::before {\n content: \"\";\n position: absolute;\n top: calc(anchor(top) + 1px);\n left: calc(anchor(left) + 1px);\n right: calc(anchor(right) + 1px);\n bottom: calc(anchor(bottom) + 1px);\n z-index: 0;\n\n border-radius: 8px;\n background-color: var(--ui-neutral-50);\n pointer-events: none;\n\n position-anchor: --hovered-link;\n\n transition: var(--ease-glide) 200ms;\n }\n\n > label {\n display: inline-flex;\n align-items: center;\n gap: var(--ui-spacing-2);\n padding-block: var(--ui-spacing-2);\n padding-inline: var(--ui-spacing-4);\n color: var(--ui-neutral-800);\n white-space: nowrap;\n transition: color 100ms;\n line-height: 1.14286rem;\n\n z-index: 1;\n\n > input[type=\"radio\"] {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n }\n\n @media (hover: hover) {\n &:hover {\n color: var(--ui-neutral-950);\n }\n }\n\n &:has(input:checked) {\n color: var(--ui-neutral-950);\n }\n\n &:has(input:focus-visible) {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 2px;\n border-radius: 8px;\n }\n\n &:has(input:disabled) {\n opacity: 0.4;\n cursor: default;\n pointer-events: none;\n }\n }\n }\n\n [role=\"tabpanel\"]:focus-visible {\n outline: 2px solid var(--ui-neutral-950);\n outline-offset: 4px;\n border-radius: 4px;\n }\n\n [role=\"tabpanel\"] {\n transition:\n opacity 250ms var(--ease-glide),\n display 50ms ease allow-discrete;\n\n display: none;\n opacity: 0;\n }\n\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(1 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(1 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(2 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(2 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(3 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(3 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(4 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(4 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(5 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(5 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(6 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(6 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(7 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(7 of [role=\"tabpanel\"]),\n :scope:has([role=\"tablist\"]:not(:scope .tabs [role=\"tablist\"]) label:nth-child(8 of label) input:checked) [role=\"tabpanel\"]:not(:scope .tabs [role=\"tabpanel\"]):nth-child(8 of [role=\"tabpanel\"]) {\n display: block;\n opacity: 1;\n\n @starting-style {\n opacity: 0;\n }\n }\n}\n",".empty {\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: var(--ui-spacing-3);\n padding: var(--ui-spacing-8);\n color: var(--ui-neutral-400);\n\n margin: auto;\n\n &:not([hidden]) {\n display: flex;\n }\n\n > svg {\n width: 2.5rem;\n height: 2.5rem;\n background: var(--ui-neutral-100);\n color: var(--ui-neutral-800);\n padding: 0.5rem;\n border-radius: 6px;\n }\n\n > :is(h1, h2, h3, h4, h5, h6) {\n color: var(--ui-neutral-950);\n }\n\n p {\n max-width: 35ch;\n }\n\n > button,\n > a,\n > .button,\n > footer {\n margin-top: var(--ui-spacing-2);\n }\n\n > footer {\n display: flex;\n gap: var(--ui-spacing-2);\n }\n}\n",".field {\n display: flex;\n flex-direction: column;\n gap: var(--ui-spacing-2);\n\n > span:not([data-prefix]):not([data-suffix]) {\n font-weight: 600;\n }\n\n > small {\n color: var(--ui-neutral-500);\n font-size: 0.875em;\n }\n\n &:has(input:required) > span:not([data-prefix]):not([data-suffix])::after {\n content: \" *\";\n color: var(--ui-destructive);\n }\n\n > input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"color\"]),\n > textarea,\n > select,\n > progress,\n > button[popovertarget],\n > .file-drop {\n width: 100%;\n }\n}\n\nlabel.field {\n cursor: pointer;\n}\n"],"names":[]}