@jrgermain/stylesheet 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":null,"mappings":"ACAA,gDAOA,yEAIA,+JAAA,mCAAA,yDAKA,8EAMA,sDIlBA,+EAQA,mDAEE,4FAKF,yEAEE,4FAKF,oCAEE,4FASF,oHAKA,kHASA,uMInDA,64XIAA,gaAmBE,sCAIA,aACE,kEAKF,gKAWA,iQASA,+MAQA,gaAOA,mnBAOA,+ZAOA,qjBAQF,0MTtFA,oWAUA,waASE,gCAAiC,qGAcjC,uCAKF,6TAeE,2RAYA,iQAWE,6HAMJ,uIAUA,kEACE,gCAOF,iHAMA,gFAIA,oLAOA,6IAMA,2HAKA,gBACE,4GAKA,qFItIF,yWAiBE,8HAMA,qCAIA,gFAIA,4sBI/BF,sBAGE,qUAYE,8CAAgD,2GAKhD,gDAIA,6FAKA,wFAKA,4PAUA,2DAGE,oEAKA,8GAIE,oDAIA,+FAON,mjBAmBE,8CAAgD,0EAIhD,uIAIA,yIAKA,wDAKA,stBAgBA,iPAIA,gCAAiC,0DAG/B,2CAOF,2HAME,0EAKF,iIIjJJ,4NAOE,wEbPF,iRAoBA,uPAYA,mQAaA,yEAOE,kDAKA,uDAKA,4KAUF,yXAgBE,6EAIA,wEAIA,6HAKA,iFAGE,6DAKF,+LAaF,gJAQA,2LAWA,mGAOA,2IAUA,8RAWA,uEAQE,0EAIA,yEAIA,uEAKF,kKAOA,icAcE,8EAIA,oDAIA,6GAKA,+EAIA,uGAMF,kCAGE,6LAOA,wQAaE,+FAIA,iFAIA,+FAOA,gHAIA,4HAKA,kHAMJ,yFAOA,sEAIA,0DAIA,wCAME,qCAIA,wRAWE,mCAKF,0DAIA,oEAIA,sFAMA,4DAGE,iEAIA,wFAMA,uFAMJ,uCAQA,gBACE,yBIlXF,yIAME,gFAIA,6EAKA,2CAIA,iLAMA,4LAMA,yLAMA,gLAMA,4NASE,mGIpDJ,olCAwCE,2TAgBA,yKAOA,iDAOE,+FAAqC,uDAKvC,+CAGE,oFAQA,kFAKF,gOAOE,yJAMA,qKAMA,qKAMA,iKAMA,yJAMA,6JAMA,qKAMA,yKAMA,6JAMA,oIAMA,4JAQF,2RASE,8HAKA,mHAIE,4FAKF,4HAIE,kGAKF,4HAIE,kGAKF,yHAIE,gGAKF,mHAIE,4FAKF,sHAIE,8FAKF,4HAIE,kGAKF,+HAIE,oGAKF,0HAKE,6IAKF,0DAIA,6CAIA,6CAKF,8BAIA,+BAIA,mGASI,gDAKA,uFASA,+CAIA,0FAMJ,2HAKE,wFAKF,gCAGE,2KAQA,yEAMJ,uGIvVA,kvBA0BE,6EAKE,6KAQA,4EAIA,yDAOE,+FAAqC,+DAMzC,oIAMA,gJAMA,gJAMA,4IAMA,oIAMA,wIAMA,gJAMA,oJAMA,wIAMA,+GAMA,qIAQF,ifAoBE,ywBAYA,0EAIA,kGAIA,qGEpKF,0UAgBE,yOAWF,yEAKA,mDAIA,qDAIA,oCAIA,oCI3CA,8LAYE,wBAGE,8CAAgD,wGAMlD,wBAGE,8CAAgD,uGAMlD,wBAGE,8CAAgD,uGAMlD,wBAGE,8CAAgD,wGAMlD,mHAQE,mDAIA,oDAIA,mDAKF,kHAQE,kDAIA,mDAIA,kDAMJ,yBAIA,kJASE,4BIzGF,0aAiBE,yKASA,+CAIA,uEAGE,0EAKF,8DAIA,mkBAyBE,6UAQA,uMAIA,2OAMA,6MAGE,uWAUF,4cAKE,2hBAUJ,yEAKE,iEAIA,yHAOA,sHAQF,4rBAYE,8QAKF,6BAIA,4IASA,iJAUE,kjCAaF,wEAKE,0DAKA,qEAIA,+IAKA,0IAKA,6CAIA,uYAaE,uFAMF,gDAIA,kDAIA,sOAQE,uEAIA,wEAIA,8QAWF,0DAGE,qGAON,yEAKA,iKAME,+JAMA,iEAKF,4CChTA,wEAOE,gEAIA,gEAIA,+DAIA,6DAIA,6DAIA,8DAIA,gEAIA,iHAKA,gHAMF,8DAMA,kEAMA,4EAMA,sExBhEA,qPAcA,wIAYE,oGAKF,kHAMA,kHAMA,qHAMA,oHAMA,gHIvDA,6IAOA,kcAWE,+FAKF,mTAUA,4GAAA,wGIjCA,8dAaE,qHAIA,iGAUA,gmBAYA,sVAIA,sXAOE,g9BAOA,0VAOA,yxCAOA,sVI9DJ,0IAQA,iKAAA,qLAUA,wFAAA,4GAOA,4HAOA,sJAOA,4KAOA,yHAOA,iJAOA,uKAQA,sEAAA,sEAAA,2EAAA,2EI7EA,4DAMA,qCACE,gOAaF,6OAYA,gIAAA,mIAAA,uIAQA,2EAKA,mHAMA,sGAKA,4GAKA,2PAKA,kQAKA,yGAKA,gHI3EA,kHAKE,yBAIA,0BAIA,yBAKF,0NAUE,mDAAmC,wEAMnC,iEFnCF,+DAUA,kEAMA,wCACE,sOAaF,mPAYA,8LAQA,yLAQA,oOASA,+NInEA,iXAcE,4MAOE,4HLrBJ,+DAUA,8DAUA,2gBAqBE,yJAMA,wHAKA,uGAKA,sGAMA,4NAMA,mCAAqC,yGAKvC,sCI1EA,qkBAyBE,uMASA,6CAKA,uDIvCF,qWAYE,wBAA0B,2CAI1B,qFAKA,iDAGE,uIAKA,mIAOA,0JAKE,uFAAsC,mFAKxC,sJAKE,uFAAsC,+EAM1C,qOASA,4KAQA,kZAgBA,qWE1FF,4EAUA,4QAaE,6CAIA,6CAIA,iDAGE,wCAKF,4DAIE,4CAKF,mEAIE,2CAKF,+zCAcA,qIDtEF,yOAaA,gDAKA,qcAiBE,yZAgBA,+HAKA,oPAQA,mJAIE,4GAIA,mNAOF,uTAMF,0FItFA,scAgBE,yJAQA,kHAIA,gHAIA,0OASA,8JAKA,yNAOA,sHAIA,8HAIA,4EAIA,sKAIA,gKAIA,4IAIA,gOAKA,oHFhFF,2NAUE,oFAIA,iFAYF,iKAMA,uSAUA,6GAKA,8DAKA,0CAIA,oFAKA,qEAIA,2FAMA,kKASA,uEAKA,0EAKA,8OAUE,kFAKF,gOAQA,yWCnHA,qRAUE,mIAYF,0QAaA,oIAIA","sources":["index.css","misc/reset.css","components/heading.css","components/app.css","components/shared/base-dialog.css","misc/utility-classes.css","components/highlight.css","components/banner.css","components/shared/base-dismiss-button.css","misc/variables.css","components/link.css","components/button.css","components/accordion.css","components/shared/base-alert.css","components/list.css","components/chip.css","components/alert.css","components/divider.css","components/meter.css","components/skeleton.css","components/progress.css","components/drawer.css","components/modal.css","components/skip-link.css","components/quote.css","components/field.css","components/flex.css","components/slider.css","components/switch.css","components/spinner.css","components/text.css","components/card.css","components/table.css"],"sourcesContent":["/* Misc styles */\n@import url(\"./misc/reset.css\");\n@import url(\"./misc/utility-classes.css\");\n@import url(\"./misc/variables.css\");\n\n/* Styles used in multiple components */\n@import url(\"./components/shared/base-alert.css\");\n@import url(\"./components/shared/base-dialog.css\");\n@import url(\"./components/shared/base-dismiss-button.css\");\n\n/* Components */\n@import url(\"./components/accordion.css\");\n@import url(\"./components/alert.css\");\n@import url(\"./components/app.css\");\n@import url(\"./components/banner.css\");\n@import url(\"./components/button.css\");\n@import url(\"./components/chip.css\");\n@import url(\"./components/divider.css\");\n@import url(\"./components/drawer.css\");\n@import url(\"./components/field.css\");\n@import url(\"./components/flex.css\");\n@import url(\"./components/heading.css\");\n@import url(\"./components/highlight.css\");\n@import url(\"./components/link.css\");\n@import url(\"./components/list.css\");\n@import url(\"./components/meter.css\");\n@import url(\"./components/modal.css\");\n@import url(\"./components/progress.css\");\n@import url(\"./components/quote.css\");\n@import url(\"./components/skeleton.css\");\n@import url(\"./components/skip-link.css\");\n@import url(\"./components/slider.css\");\n@import url(\"./components/spinner.css\");\n@import url(\"./components/switch.css\");\n@import url(\"./components/table.css\");\n@import url(\"./components/text.css\");\n\n/*\n * Card needs to be loaded after Link so .card-title[href] in the former\n * overrides the same selector in the latter without needing \"!important\"\n * declarations or specificity hacks.\n */\n@import url(\"./components/card.css\");\n","*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n}\n\n:where(:focus-visible) {\n outline: var(--border-m) solid var(--color-brand-5);\n}\n\nhtml {\n text-size-adjust: none;\n color-scheme: light dark;\n}\n\nbody {\n margin: 0;\n background-color: var(--color-body);\n color: var(--color-body-text);\n}\n\nimg,\npicture,\nvideo,\niframe {\n max-width: 100%;\n display: block;\n}\n",".heading-1,\n.heading-2,\n.heading-3,\n.heading-4,\n.heading-5,\n.heading-6,\n:where(.style-semantic-elements :is(h1, h2, h3, h4, h5, h6)) {\n font-family: var(--font-family-heading);\n margin-block: 0.75em 0.3em;\n line-height: 1.15;\n text-wrap: balance;\n overflow-wrap: break-word;\n}\n\n.heading-1,\n:where(.style-semantic-elements h1) {\n font-size: var(--font-size-4xl);\n font-weight: var(--font-weight-black);\n\n /* \n * Since the Level 1 Heading will typically be the first item inside the App\n * Content container (which already has padding at the top), we remove the top\n * margin by default. We can always add it back for special cases.\n */\n margin-block-start: 0;\n\n .app-content > &:first-of-type {\n margin-block-start: 0;\n }\n}\n\n.heading-2,\n:where(.style-semantic-elements h2) {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n}\n\n.heading-3,\n:where(.style-semantic-elements h3) {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n}\n\n.heading-4,\n:where(.style-semantic-elements h4) {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n}\n\n.heading-5,\n:where(.style-semantic-elements h5) {\n font-size: var(--font-size-l);\n font-weight: var(--font-weight-semibold);\n}\n\n.heading-6,\n:where(.style-semantic-elements h6) {\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-bold);\n}\n",".app {\n /* The app is designed to take up the entire width of the page. However, we\n * set a global limit on the overall width of its content for UX and aesthetic\n * reasons. The wrapper elements of the page will always extend to the edge of\n * the screen, but all content within them will be kept within this limit and\n * centered.\n */\n --app-max-content-width: 110rem;\n --app-header-height: clamp(50px, 3.8rem, 100px);\n --app-sidebar-width: clamp(300px, 18rem, 450px);\n\n position: relative;\n width: 100%;\n min-height: 100svh;\n display: flex;\n flex-direction: column;\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n}\n\n.app-header {\n height: var(--app-header-height);\n width: 100%;\n color: var(--color-brand-3);\n background-color: var(--color-body-alt);\n border-bottom: var(--border-l) solid var(--color-brand-transparent);\n box-shadow: var(--shadow-s);\n flex: none;\n position: sticky;\n left: 0;\n}\n\n.app-header-content {\n height: 100%;\n width: 100%;\n max-width: var(--app-max-content-width);\n margin-inline: auto;\n padding-inline: calc(var(--space-body-x) - var(--space-xs));\n padding-block: 6px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-s);\n}\n\n.app-header-section {\n margin: 0;\n height: 100%;\n display: flex;\n align-items: center;\n\n /* If header only has 1 section, center it */\n &:only-child {\n margin-inline: auto;\n }\n\n /* Otherwise, align the first to the left and the rest to the right */\n &:first-child {\n margin-inline-end: auto;\n }\n\n /* Put a spacer between consecutive right-aligned sections (3rd onward) */\n &:nth-child(n + 3)::before {\n content: \"\";\n background-color: var(--color-outline);\n height: 2rem;\n width: var(--border-s);\n position: relative;\n right: calc(var(--space-s) / 2);\n }\n}\n\n.app-header-item {\n height: 100%;\n cursor: pointer;\n text-decoration: none;\n color: inherit;\n transition-property: color, background-color;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n display: flex;\n align-items: center;\n position: relative;\n font-size: 1rem;\n font-weight: var(--font-weight-semibold);\n padding-inline: var(--space-xs);\n border-radius: var(--radius-m);\n\n &:hover {\n background-color: var(--color-brand-extra-transparent);\n }\n\n &:active {\n background-color: var(--color-brand-transparent);\n }\n\n &:focus-visible {\n background-color: var(--color-brand-extra-transparent);\n outline-offset: calc(-1 * var(--border-m));\n }\n\n &:is([aria-current], .current) {\n font-weight: var(--font-weight-bold);\n\n &::after {\n opacity: 1;\n }\n }\n\n &::after {\n content: \"\";\n position: absolute;\n width: 100%;\n height: var(--border-l);\n bottom: calc(-1 * (var(--border-l) + 6px));\n left: 0;\n background-color: currentcolor;\n opacity: 0;\n border-radius: 1px;\n }\n}\n\n.app-icon {\n background-color: var(--color-brand-3);\n height: 2rem;\n width: 2rem;\n border: var(--border-m) solid transparent;\n border-radius: var(--radius-full);\n}\n\n.app-title-separator {\n content: \"\";\n background-color: var(--color-brand-transparent);\n width: var(--border-m);\n height: 1.5rem;\n rotate: 22deg;\n margin-inline: var(--space-2xs);\n position: relative;\n left: 1px;\n}\n\n.app-title {\n font-family: var(--font-family-heading);\n font-size: 1.2rem;\n display: flex;\n align-items: center;\n}\n\n.app-body {\n position: relative;\n width: 100%;\n max-width: var(--app-max-content-width);\n margin-inline: auto;\n flex: none;\n display: flex;\n flex-direction: row;\n}\n\n.app-sidebar {\n transition-property: opacity, display;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n transition-behavior: allow-discrete;\n width: var(--app-sidebar-width);\n flex: none;\n opacity: 1;\n border-inline-end: var(--border-s) dashed var(--color-outline);\n}\n\n.app-sidebar-content {\n position: sticky;\n top: 0;\n overflow: auto;\n height: 100dvh;\n}\n\n.app-sidebar-section {\n &:first-of-type {\n margin-block-start: var(--space-body-y);\n }\n\n &:not(:last-of-type) {\n margin-block-end: var(--space-xs);\n }\n\n &:last-of-type {\n margin-block-end: var(--space-body-y);\n }\n}\n\n.app-sidebar-heading {\n font-size: 1.2rem;\n margin: 0 var(--space-body-x) var(--space-3xs);\n font-family: var(--font-family-heading);\n font-weight: var(--font-weight-semibold);\n}\n\n.app-sidebar-item {\n display: block;\n margin: 0 var(--space-2xs);\n padding: var(--space-2xs) calc(var(--space-body-x) - var(--space-2xs));\n border-radius: var(--radius-l);\n color: var(--color-body-text-alt);\n text-decoration: none;\n font-weight: var(--font-weight-normal);\n font-size: 1rem;\n user-select: none;\n transition-property: color, background-color, box-shadow;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n\n &:hover {\n background-color: var(--color-brand-extra-transparent);\n }\n\n &:active {\n color: var(--color-brand-1);\n }\n\n &:is([aria-current], .current) {\n color: var(--color-brand-4);\n font-weight: var(--font-weight-bold);\n }\n\n &:hover:active {\n background-color: var(--color-brand-transparent);\n }\n\n &:focus-visible {\n outline-offset: 0;\n background-color: var(--color-brand-extra-transparent);\n }\n}\n\n.app-sidebar-toggle {\n width: 2.75rem;\n\n &:has(input:focus-visible) {\n background-color: var(--color-brand-extra-transparent);\n outline: var(--border-m) solid var(--color-brand-5);\n outline-offset: calc(-1 * var(--border-m));\n }\n\n /* Style the 3 lines inside the button */\n > div {\n transition-property: transform, opacity;\n transition-duration: var(--duration-long);\n transition-timing-function: var(--ease-out);\n position: absolute;\n width: 1.75rem;\n height: 2px;\n border-radius: 2px;\n background-color: currentcolor;\n opacity: 1;\n top: 50%;\n left: 50%;\n\n &:nth-of-type(1) {\n transform: translateY(calc(-50% - 0.45rem)) translateX(-50%);\n }\n\n &:nth-of-type(2) {\n transform: translateY(-50%) translateX(-50%);\n }\n\n &:nth-of-type(3) {\n transform: translateY(calc(-50% + 0.45rem)) translateX(-50%);\n }\n }\n\n /* When the sidebar is visible, turn the 3 lines into an X */\n &:has(input:checked) > div {\n &:nth-of-type(1) {\n transform: translateY(-50%) translateX(-50%) rotate(45deg);\n }\n\n &:nth-of-type(2) {\n opacity: 0;\n transform: translateY(-50%) translateX(-50%) rotate3d(0, 1, 0, 90deg);\n }\n\n &:nth-of-type(3) {\n transform: translateY(-50%) translateX(-50%) rotate(-45deg);\n }\n }\n}\n\n.app-content {\n width: 100%;\n padding: var(--space-body-y) var(--space-body-x);\n position: relative;\n}\n\n/* If there's a sidebar, shrink the content area to accommodate it */\n.app-sidebar ~ .app-content {\n width: calc(100% - var(--app-sidebar-width));\n}\n\n.app-header-section:has(.app-sidebar-toggle) {\n display: none;\n}\n\n@media (width < 55rem) {\n /* \n * If there's a sidebar, DON'T factor its width into the content width since\n * the sidebar now has `position: fixed`. This only applies to pages with a\n * sidebar; without one, app-content's width is already 100%.\n */\n .app-sidebar ~ .app-content {\n width: 100%;\n }\n\n .app-sidebar {\n position: fixed;\n top: var(--app-header-height);\n left: 0;\n width: 100vw;\n opacity: 1;\n background-color: light-dark(#fffc, #000a);\n backdrop-filter: blur(24px) saturate(120%);\n border-right: 0;\n z-index: 9;\n\n &::after {\n content: initial;\n }\n }\n\n .app-header-section:has(.app-sidebar-toggle) {\n display: flex;\n }\n\n .app-sidebar-content {\n height: calc(100dvh - var(--app-header-height));\n }\n\n .app:not(:has(.app-sidebar-toggle input:checked)) .app-sidebar {\n opacity: 0;\n display: none;\n }\n\n /* If sidebar is open, temporarily hide the overflow and any site-wide banners */\n .app:has(.app-sidebar-toggle input:checked) {\n overflow: hidden;\n\n > .banner {\n display: none;\n }\n\n .app-header {\n position: fixed;\n top: 0;\n z-index: 10;\n }\n\n .app-content {\n top: var(--app-header-height);\n }\n }\n}\n\n.app:has(dialog:modal) {\n /* \n * If modal is open, hide the overflow. This prevents the user from scrolling\n * the page down by dragging on the header, which they'd have no way to undo.\n */\n overflow: hidden;\n}\n\n@starting-style {\n .app > .sidebar {\n opacity: 0;\n }\n}\n",".modal::backdrop,\n.drawer::backdrop {\n --dialog-backdrop-starting-opacity: 0;\n --dialog-backdrop-open-opacity: light-dark(0.75, 0.85);\n --dialog-backdrop-ending-opacity: 0;\n --dialog-backdrop-color: light-dark(var(--color-gray-2), var(--color-gray-8));\n\n background-color: var(--dialog-backdrop-color);\n}\n\n.modal,\n.drawer {\n --dialog-starting-opacity: 1;\n --dialog-starting-transform: translateY(8px);\n --dialog-open-opacity: 1;\n --dialog-open-transform: translate(0);\n --dialog-ending-opacity: 0;\n --dialog-ending-transform: scale(0.97);\n\n @media (prefers-reduced-motion) {\n --dialog-starting-transform: translate(0);\n --dialog-ending-transform: translate(0);\n }\n\n box-shadow: var(--shadow-xl);\n border: var(--border-s) solid var(--color-outline);\n border-radius: var(--radius-l);\n background-color: var(--color-body-alt);\n color: var(--color-body-text);\n padding: 0;\n flex-direction: column;\n gap: 0;\n\n &[open] {\n display: flex;\n }\n}\n\n.modal-header,\n.drawer-header {\n font-family: var(--font-family-heading);\n font-size: var(--font-size-l);\n font-weight: var(--font-weight-bold);\n line-height: 1;\n padding: var(--space-m);\n padding-block-end: var(--space-2xs);\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--color-brand-3);\n margin: 0;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: inherit;\n font-size: inherit;\n font-weight: inherit;\n margin: 0;\n }\n\n .button.dismiss {\n --button-fg-color: var(--color-brand-3);\n --button-hover-bg-color: var(--color-brand-extra-transparent);\n\n font-size: 0.8rem;\n width: 2.25rem;\n height: 2.25rem;\n margin: -0.5rem;\n padding: 0.25rem;\n border-radius: var(--radius-full);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-brand-transparent);\n }\n }\n}\n\n.modal-body,\n.drawer-body {\n padding: var(--space-m);\n padding-block-start: var(--space-xs);\n flex-shrink: 1;\n display: block;\n overflow: auto;\n margin: 0;\n}\n\n@supports (transition-behavior: allow-discrete) and (overlay: none) {\n .modal,\n .drawer {\n animation: unset;\n }\n}\n\n/* Fade in/out (mixed browser support as of March 2025) */\n:is(.modal, .drawer)[open] {\n display: flex;\n transform: var(--dialog-open-transform);\n opacity: var(--dialog-open-opacity);\n}\n\n:is(.modal, .drawer)[open]::backdrop {\n opacity: var(--dialog-backdrop-open-opacity);\n}\n\n:is(.modal, .drawer),\n:is(.modal, .drawer)::backdrop {\n transition-property: transform, opacity, display, overlay;\n transition-duration: var(--duration-long);\n transition-behavior: allow-discrete;\n}\n\n:is(.modal, .drawer) {\n transform: var(--dialog-ending-transform);\n opacity: var(--dialog-ending-opacity);\n transition-timing-function: var(--ease-out);\n}\n\n:is(.modal, .drawer)::backdrop {\n opacity: var(--dialog-backdrop-ending-opacity);\n transition-timing-function: var(--ease-default);\n}\n\n@starting-style {\n :is(.modal, .drawer)[open] {\n transform: var(--dialog-starting-transform);\n opacity: var(--dialog-starting-opacity);\n }\n\n :is(.modal, .drawer)[open]::backdrop {\n opacity: var(--dialog-backdrop-starting-opacity);\n }\n}\n\n/* End fade in/out styles */\n","/***********************************\n * Conditionally show/hide content *\n ***********************************/\n\n.js-disabled .if-js-enabled {\n display: none !important;\n}\n\n.js-enabled .if-js-disabled {\n display: none !important;\n}\n\n@media screen and (width < 30rem) {\n /* Narrow viewport */\n :is(.if-medium-viewport, .if-wide-viewport):not(.if-narrow-viewport) {\n display: none !important;\n }\n}\n\n@media screen and (30rem <= width < 55rem) {\n /* Medium viewport */\n :is(.if-narrow-viewport, .if-wide-viewport):not(.if-medium-viewport) {\n display: none !important;\n }\n}\n\n@media screen and (width >= 55rem) {\n /* Wide viewport */\n :is(.if-narrow-viewport, .if-medium-viewport):not(.if-wide-viewport) {\n display: none !important;\n }\n}\n\n/*************************************************\n * Override color mode for a section of the page *\n *************************************************/\n\n.light-mode {\n color-scheme: only light;\n color: var(--color-body-text);\n}\n\n.dark-mode {\n color-scheme: only dark;\n color: var(--color-body-text);\n}\n\n/*****************************************************\n * Make elements invisible, except to screenreaders *\n *****************************************************/\n\n.visually-hidden,\n.app-sidebar-toggle input,\n.skip-link:not(:focus, .static) {\n clip: rect(1px, 1px, 1px, 1px);\n clip-path: inset(50%);\n height: 1px;\n width: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n}\n",".highlight,\n:where(.style-semantic-elements mark) {\n background-color: var(--color-yellow-8);\n color: var(--color-yellow-1);\n print-color-adjust: exact;\n}\n\n.highlight.removed,\n:where(.style-semantic-elements del) {\n background-color: var(--color-red-8);\n color: var(--color-red-1);\n transition: text-decoration-color var(--duration-short) var(--ease-default);\n text-decoration-line: line-through;\n text-decoration-skip-ink: none;\n text-decoration-thickness: var(--border-m);\n text-decoration-color: var(--color-red-4);\n print-color-adjust: exact;\n\n &:hover {\n text-decoration-color: transparent;\n }\n}\n\n.highlight.added,\n:where(.style-semantic-elements ins) {\n background-color: var(--color-green-8);\n color: var(--color-green-1);\n text-decoration-thickness: var(--border-m);\n text-decoration-color: var(--color-green-4);\n text-underline-offset: 0.1em;\n print-color-adjust: exact;\n}\n\n.highlight.target,\n::target-text {\n background-color: var(--color-brand-8);\n color: var(--color-brand-1);\n print-color-adjust: exact;\n}\n",".banner {\n border-inline-width: 0;\n width: 100%;\n padding: var(--space-xs) var(--space-body-x);\n padding-inline-start: calc(var(--space-body-x) + 2em);\n\n &:has(.button.dismiss) {\n padding-inline-end: calc(var(--space-body-x) + 2em);\n }\n\n &::before,\n &::after {\n inset-inline-start: calc(var(--space-body-x) * 0.5);\n }\n\n & + & {\n border-block-start-width: 0;\n }\n\n &.error {\n --banner-dismiss-icon-color: var(--color-red-4);\n --banner-dismiss-hover-bg: var(--color-red-extra-transparent);\n --banner-dismiss-focus-bg: var(--color-red-transparent);\n }\n\n &.warning {\n --banner-dismiss-icon-color: var(--color-yellow-4);\n --banner-dismiss-hover-bg: var(--color-yellow-extra-transparent);\n --banner-dismiss-focus-bg: var(--color-yellow-transparent);\n }\n\n &.success {\n --banner-dismiss-icon-color: var(--color-green-4);\n --banner-dismiss-hover-bg: var(--color-green-extra-transparent);\n --banner-dismiss-focus-bg: var(--color-green-transparent);\n }\n\n &.info {\n --banner-dismiss-icon-color: var(--color-sky-4);\n --banner-dismiss-hover-bg: var(--color-sky-extra-transparent);\n --banner-dismiss-focus-bg: var(--color-sky-transparent);\n }\n\n .button.dismiss {\n --button-fg-color: var(--banner-dismiss-icon-color);\n --button-hover-bg-color: var(--banner-dismiss-hover-bg);\n\n position: absolute;\n inset-block: 0;\n inset-inline-end: calc(var(--space-body-x) * 0.5);\n margin: auto;\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--banner-dismiss-focus-bg);\n }\n }\n}\n",".button.dismiss {\n --button-fg-color: var(--color-body-text);\n --button-bg-color: transparent;\n --button-border-color: transparent;\n --button-hover-bg-color: var(--color-gray-extra-transparent);\n --button-focus-ring-color: transparent;\n --button-shadow: none;\n\n font-size: 0.75rem;\n width: 3em;\n height: 3em;\n border-radius: var(--radius-m);\n min-width: 0;\n min-height: 0;\n aspect-ratio: 1;\n padding: 0.3em;\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-gray-transparent);\n --button-hover-bg-color: transparent;\n }\n\n /* Don't use pseudo element for hover style */\n &::before {\n content: unset;\n }\n\n &:is(:hover, .hover) {\n background-color: var(--button-hover-bg-color);\n }\n\n &::after {\n content: \"\";\n width: 1.8em;\n height: 1.8em;\n mask-image: url(\"@/src/svg/x.svg\");\n mask-size: contain;\n mask-repeat: no-repeat;\n background-color: currentcolor;\n }\n}\n",":root,\n::backdrop,\n.light-mode,\n.dark-mode {\n /* Brand */\n --color-brand-1: light-dark(#08003b, #e9f0ff);\n --color-brand-2: light-dark(#190074, #cad6ff);\n --color-brand-3: light-dark(#290fa3, #9fb0ff);\n --color-brand-4: light-dark(#3c35cb, #7382ff);\n --color-brand-5: light-dark(#545be7, #5961ee);\n --color-brand-6: light-dark(#6f7dff, #4344cf);\n --color-brand-7: light-dark(#93a4ff, #3124b1);\n --color-brand-8: light-dark(#bbc9ff, #230095);\n --color-brand-9: light-dark(#e5edff, #0b004a);\n --color-brand-transparent: light-dark(#545be766, #5961ee80);\n --color-brand-extra-transparent: light-dark(#545be733, #5961ee59);\n\n /* Red */\n --color-red-1: light-dark(#240000, #ffe3dc);\n --color-red-2: light-dark(#4d0000, #ffc3b6);\n --color-red-3: light-dark(#7a0000, #ff8875);\n --color-red-4: light-dark(#a90000, #f45441);\n --color-red-5: light-dark(#cc2a1b, #d33223);\n --color-red-6: light-dark(#f0503d, #b30000);\n --color-red-7: light-dark(#ff7c68, #8d0000);\n --color-red-8: light-dark(#ffb4a5, #6c0000);\n --color-red-9: light-dark(#ffe3dc, #340000);\n --color-red-transparent: light-dark(#cc2a1b66, #d3322380);\n --color-red-extra-transparent: light-dark(#cc2a1b33, #d3322359);\n\n /* Orange */\n --color-orange-1: light-dark(#1c0300, #ffe5d0);\n --color-orange-2: light-dark(#3e1200, #ffc5a0);\n --color-orange-3: light-dark(#632500, #ff9559);\n --color-orange-4: light-dark(#8b3a00, #d97234);\n --color-orange-5: light-dark(#b45100, #ba570d);\n --color-orange-6: light-dark(#d76f04, #9c3b00);\n --color-orange-7: light-dark(#f98f3a, #782700);\n --color-orange-8: light-dark(#ffb87e, #5c1900);\n --color-orange-9: light-dark(#ffe6cc, #2c0400);\n --color-orange-transparent: light-dark(#b4510066, #ba570d80);\n --color-orange-extra-transparent: light-dark(#b4510033, #ba570d59);\n\n /* Yellow */\n --color-yellow-1: light-dark(#140900, #fdf4d5);\n --color-yellow-2: light-dark(#2f1e00, #fadfa6);\n --color-yellow-3: light-dark(#4e3700, #fdd171);\n --color-yellow-4: light-dark(#7a5700, #dfaf3f);\n --color-yellow-5: light-dark(#a57c00, #c69720);\n --color-yellow-6: light-dark(#c89808, #a17807);\n --color-yellow-7: light-dark(#dfb22b, #750);\n --color-yellow-8: light-dark(#efcb72, #4e3700);\n --color-yellow-9: light-dark(#f8edc1, #211500);\n --color-yellow-transparent: light-dark(#a57c0066, #a57c0080);\n --color-yellow-extra-transparent: light-dark(#a57c0033, #a57c0059);\n\n /* Green */\n --color-green-1: light-dark(#011000, #dff4d3);\n --color-green-2: light-dark(#0c2a00, #bbe7a5);\n --color-green-3: light-dark(#1d4600, #8ecb6b);\n --color-green-4: light-dark(#2f6500, #63a736);\n --color-green-5: light-dark(#438500, #498b0f);\n --color-green-6: light-dark(#5fa500, #2e7000);\n --color-green-7: light-dark(#7dc53a, #1c5400);\n --color-green-8: light-dark(#a4e472, #113f00);\n --color-green-9: light-dark(#dafbc4, #011b00);\n --color-green-transparent: light-dark(#43850066, #498b0f80);\n --color-green-extra-transparent: light-dark(#43850033, #498b0f59);\n\n /* Sky */\n --color-sky-1: light-dark(#001011, #c8f6f5);\n --color-sky-2: light-dark(#002a2b, #9ee7e7);\n --color-sky-3: light-dark(#004747, #61c7c8);\n --color-sky-4: light-dark(#006566, #3aa4a5);\n --color-sky-5: light-dark(#008586, #0b8889);\n --color-sky-6: light-dark(#00a7a8, #006d6f);\n --color-sky-7: light-dark(#00c8c9, #005254);\n --color-sky-8: light-dark(#76e2e2, #003e3f);\n --color-sky-9: light-dark(#caf9f8, #001a1b);\n --color-sky-transparent: light-dark(#00858666, #0b888980);\n --color-sky-extra-transparent: light-dark(#00858633, #0b888959);\n\n /* Blue */\n --color-blue-1: light-dark(#00003e, #ddf0ff);\n --color-blue-2: light-dark(#00007a, #b9d9ff);\n --color-blue-3: light-dark(#002b97, #7eb4ff);\n --color-blue-4: light-dark(#004abd, #418dff);\n --color-blue-5: light-dark(#1c69e3, #2370ea);\n --color-blue-6: light-dark(#3988ff, #0053cb);\n --color-blue-7: light-dark(#74adff, #0035ac);\n --color-blue-8: light-dark(#a9cfff, #001a95);\n --color-blue-9: light-dark(#ddf0ff, #005);\n --color-blue-transparent: light-dark(#1c69e366, #2370ea80);\n --color-blue-extra-transparent: light-dark(#1c69e333, #2370ea59);\n\n /* Purple */\n --color-purple-1: light-dark(#170029, #fbe4ff);\n --color-purple-2: light-dark(#370054, #edc4ff);\n --color-purple-3: light-dark(#5a0085, #d88eff);\n --color-purple-4: light-dark(#7819a8, #b864ef);\n --color-purple-5: light-dark(#9640ca, #9c47d1);\n --color-purple-6: light-dark(#b562ea, #8127b3);\n --color-purple-7: light-dark(#ce8dfc, #660095);\n --color-purple-8: light-dark(#e8b6ff, #4f0076);\n --color-purple-9: light-dark(#fbe4ff, #23003a);\n --color-purple-transparent: light-dark(#9640ca66, #9c47d180);\n --color-purple-extra-transparent: light-dark(#9640ca33, #9c47d159);\n\n /* Magenta */\n --color-magenta-1: light-dark(#21000c, #ffe1ef);\n --color-magenta-2: light-dark(#480023, #ffbdd9);\n --color-magenta-3: light-dark(#73003d, #ff7db8);\n --color-magenta-4: light-dark(#9b0058, #ea5096);\n --color-magenta-5: light-dark(#c32775, #ca2f7b);\n --color-magenta-6: light-dark(#e45193, #aa0061);\n --color-magenta-7: light-dark(#fe7cb1, #850048);\n --color-magenta-8: light-dark(#ffadd0, #660035);\n --color-magenta-9: light-dark(#ffe1f0, #300015);\n --color-magenta-transparent: light-dark(#c3277566, #ca2f7b80);\n --color-magenta-extra-transparent: light-dark(#c3277533, #ca2f7b59);\n\n /* Gray */\n --color-gray-1: light-dark(#090b0f, #ebeff3);\n --color-gray-2: light-dark(#202226, #d4d8dc);\n --color-gray-3: light-dark(#383b3f, #b1b4b9);\n --color-gray-4: light-dark(#53555a, #8f9297);\n --color-gray-5: light-dark(#6f7276, #75787c);\n --color-gray-6: light-dark(#8d8f94, #5b5e62);\n --color-gray-7: light-dark(#abaeb3, #424549);\n --color-gray-8: light-dark(#cbced3, #303337);\n --color-gray-9: light-dark(#eceff4, #121417);\n --color-gray-transparent: light-dark(#6f727666, #75787c80);\n --color-gray-extra-transparent: light-dark(#6f727633, #75787c59);\n\n /* Semantic colors */\n --color-body: light-dark(#f9fafc, #14161a);\n --color-body-alt: light-dark(#fff, #010203);\n --color-body-text: light-dark(#030305, #fff);\n --color-body-text-alt: light-dark(#404247, #ccced0);\n --color-shadow: light-dark(#45484c26, #00000166);\n --color-outline: light-dark(#d8dbe0, #434549);\n\n /* Font sizes */\n --font-size-xs: clamp(0.6944rem, 0.6855rem + 0.0446vw, 0.72rem);\n --font-size-s: clamp(0.8331rem, 0.8099rem + 0.1163vw, 0.9rem);\n --font-size-m: clamp(1rem, 0.9565rem + 0.2174vw, 1.125rem);\n --font-size-l: clamp(1.2rem, 1.1283rem + 0.3587vw, 1.4063rem);\n --font-size-xl: clamp(1.44rem, 1.3293rem + 0.5533vw, 1.7581rem);\n --font-size-2xl: clamp(1.7281rem, 1.5649rem + 0.8163vw, 2.1975rem);\n --font-size-3xl: clamp(2.0738rem, 1.8396rem + 1.1707vw, 2.7469rem);\n --font-size-4xl: clamp(2.4881rem, 2.1594rem + 1.6435vw, 3.4331rem);\n\n /* Font weights */\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-black: 900;\n\n /* Font families */\n --font-family-body: \"Avenir Next\", avenir, \"Segoe UI Variable Display\",\n \"Segoe UI\", \"URW Gothic\", source-sans-pro, ui-sans-serif, sans-serif;\n --font-family-heading: seravek, \"Gill Sans Nova\", \"Gill Sans MT\", cantarell,\n \"DejaVu Sans\", source-sans-pro, ui-sans-serif, sans-serif;\n --font-family-mono: ui-monospace, \"Cascadia Code\", menlo, hack, monospace;\n\n /* Spacing */\n --space-none: 0;\n --space-3xs: clamp(4px, 3.6528px + 0.1087vw, 5px);\n --space-2xs: clamp(8px, 7.6528px + 0.1087vw, 9px);\n --space-xs: clamp(12px, 11.304px + 0.2174vw, 14px);\n --space-s: clamp(16px, 15.304px + 0.2174vw, 18px);\n --space-m: clamp(24px, 22.9568px + 0.3261vw, 27px);\n --space-l: clamp(32px, 30.608px + 0.4348vw, 36px);\n --space-xl: clamp(48px, 45.9136px + 0.6522vw, 54px);\n --space-2xl: clamp(64px, 61.2176px + 0.8696vw, 72px);\n --space-3xl: clamp(96px, 91.8256px + 1.3043vw, 108px);\n --space-body-x: clamp(20px, 17.5652px + 0.7609vw, 27px);\n --space-body-y: 20px;\n\n /* Radii */\n --radius-none: 0;\n --radius-s: 3px;\n --radius-m: 6px;\n --radius-l: 12px;\n --radius-xl: 24px;\n --radius-2xl: 64px;\n --radius-full: 9999px;\n\n /* Shadows */\n --shadow-none: none;\n --shadow-s: 0 1px 3px -1px var(--color-shadow);\n --shadow-m: 0 1px 7px -1px var(--color-shadow);\n --shadow-l: var(--shadow-s), 0 1px 11px -1px var(--color-shadow);\n --shadow-xl: var(--shadow-m), 0 1px 15px -1px var(--color-shadow);\n\n /* Border widths */\n --border-none: 0;\n --border-s: 1px;\n --border-m: 2px;\n --border-l: 5px;\n --border-xl: 8px;\n\n /* Opacity */\n --opacity-disabled: light-dark(0.65, 0.5);\n\n /* Easing functions */\n --ease-default: cubic-bezier(0.6, 0.22, 0.45, 0.9);\n --ease-out: cubic-bezier(0.17, 0.84, 0.44, 1);\n --ease-in: cubic-bezier(0.7, 0.1, 0.8, 0.65);\n --ease-both: cubic-bezier(0.65, 0.05, 0.36, 1);\n --ease-both-subtle: cubic-bezier(0.45, 0.12, 0.55, 0.88);\n --ease-spring: cubic-bezier(0.95, -0.55, 0.05, 1.55);\n\n /* Durations */\n --duration-short: 100ms;\n --duration-medium: 150ms;\n --duration-long: 250ms;\n --duration-extra-long: 350ms;\n}\n",".link,\n.card-title[href],\n:where(.style-semantic-elements a) {\n color: var(--color-sky-4);\n font-weight: var(--font-weight-semibold);\n text-decoration-line: underline;\n text-decoration-color: var(--color-sky-transparent);\n text-decoration-skip-ink: all;\n text-decoration-thickness: 0.1em;\n text-underline-offset: 0.1em;\n cursor: pointer;\n transition: text-decoration-color var(--duration-short) var(--ease-default);\n\n &:is(:hover, .hover) {\n text-decoration-color: currentcolor;\n }\n\n &:focus-visible {\n outline-offset: 1px;\n }\n}\n\n/* External and Download icons */\na[target=\"_blank\"]:is(.link, .button, .app-sidebar-item):not(.no-external-icon),\n:where(.style-semantic-elements a[target=\"_blank\"]:not(.no-external-icon)),\na[download]:is(.link, .button, .app-sidebar-item):not(.no-download-icon),\n:where(.style-semantic-elements a[download]:not(.no-download-icon)) {\n &::after {\n content: \"\";\n print-color-adjust: exact;\n mask-size: contain;\n mask-repeat: no-repeat;\n background-color: var(--color-gray-5);\n display: inline-block;\n vertical-align: baseline;\n margin-inline-start: 0.25em;\n transition: background-color var(--duration-short) var(--ease-default);\n }\n\n &:hover::after {\n background-color: var(--color-gray-4);\n }\n\n &.button::after {\n background-color: currentcolor !important;\n margin-inline-start: initial;\n }\n\n /* External icon */\n &[target=\"_blank\"] {\n &::after {\n mask-image: url(\"@/src/svg/external.svg\");\n height: 0.85em;\n width: 0.85em;\n transform: translateY(9%);\n }\n\n &.button::after {\n transform: translateY(2%);\n }\n }\n\n /* Download icon */\n &[download] {\n &::after {\n mask-image: url(\"@/src/svg/download.svg\");\n height: 0.95em;\n width: 0.95em;\n transform: translateY(7%);\n }\n\n &.button::after {\n transform: translateY(-5%);\n }\n }\n}\n",".button {\n --button-fg-color: var(--color-body-text);\n --button-bg-color: var(--color-gray-9);\n --button-border-color: var(--color-gray-8);\n --button-font-weight: var(--font-weight-normal);\n --button-focus-ring-color: var(--color-gray-extra-transparent);\n --button-shadow: var(--shadow-s);\n --button-hover-bg-color: var(--button-border-color);\n\n box-sizing: border-box;\n display: inline-flex;\n outline: 0;\n padding-inline: 1.25em;\n padding-block: 0.75em;\n gap: 0.625em;\n border-style: solid;\n transform: scale(1);\n transition-property: box-shadow, background-color, transform, opacity;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n text-decoration: none;\n position: relative;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n cursor: pointer;\n border-width: var(--border-s);\n border-radius: var(--radius-m);\n min-height: 2.6em;\n min-width: 3em;\n line-height: 1;\n font-family: var(--font-family-body);\n box-shadow: var(--button-shadow);\n user-select: none;\n font-size: 1rem;\n color: var(--button-fg-color);\n background-color: var(--button-bg-color);\n border-color: var(--button-border-color);\n font-weight: var(--button-font-weight);\n\n &::before {\n content: \"\";\n background-color: var(--button-hover-bg-color);\n position: absolute;\n inset: 0;\n margin: auto;\n transition-property: opacity, width, height, border-radius;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n z-index: -1;\n border-radius: 2em;\n width: 4em;\n height: 4em;\n opacity: 0;\n }\n\n &:is(:focus-visible, .focus) {\n box-shadow:\n var(--button-shadow),\n 0 0 0 0.1em var(--button-border-color),\n 0 0 0 calc(0.2em + var(--border-s)) var(--button-focus-ring-color);\n }\n\n &:is(:active, .active) {\n transform: scale(0.98);\n\n /*\n * On low-resolution screens, the scale effect makes text jump\n * around awkwardly, so we use an alternative.\n */\n @media screen and (resolution < 2x) {\n transform: translateY(1px);\n }\n }\n\n &:is(:hover, .hover) {\n text-decoration: none;\n\n &::before {\n opacity: 1;\n width: 100%;\n height: 100%;\n border-radius: 5px;\n }\n\n /* inputs don't support children, so the ::before pseudo element won't work */\n &:is(input) {\n background-color: var(--button-hover-bg-color);\n }\n }\n\n &.primary {\n --button-fg-color: white;\n --button-bg-color: var(--color-brand-5);\n --button-border-color: var(--color-brand-4);\n --button-font-weight: var(--font-weight-bold);\n --button-focus-ring-color: var(--color-brand-transparent);\n\n &.red {\n --button-bg-color: var(--color-red-5);\n --button-border-color: var(--color-red-4);\n --button-focus-ring-color: var(--color-red-transparent);\n }\n\n &.orange {\n --button-bg-color: var(--color-orange-5);\n --button-border-color: var(--color-orange-4);\n --button-focus-ring-color: var(--color-orange-transparent);\n }\n\n &.yellow {\n --button-bg-color: var(--color-yellow-5);\n --button-border-color: var(--color-yellow-4);\n --button-focus-ring-color: var(--color-yellow-transparent);\n }\n\n &.green {\n --button-bg-color: var(--color-green-5);\n --button-border-color: var(--color-green-4);\n --button-focus-ring-color: var(--color-green-transparent);\n }\n\n &.sky {\n --button-bg-color: var(--color-sky-5);\n --button-border-color: var(--color-sky-4);\n --button-focus-ring-color: var(--color-sky-transparent);\n }\n\n &.blue {\n --button-bg-color: var(--color-blue-5);\n --button-border-color: var(--color-blue-4);\n --button-focus-ring-color: var(--color-blue-transparent);\n }\n\n &.purple {\n --button-bg-color: var(--color-purple-5);\n --button-border-color: var(--color-purple-4);\n --button-focus-ring-color: var(--color-purple-transparent);\n }\n\n &.magenta {\n --button-bg-color: var(--color-magenta-5);\n --button-border-color: var(--color-magenta-4);\n --button-focus-ring-color: var(--color-magenta-transparent);\n }\n\n &.gray {\n --button-bg-color: var(--color-gray-5);\n --button-border-color: var(--color-gray-4);\n --button-focus-ring-color: var(--color-gray-transparent);\n }\n\n &.black {\n --button-bg-color: black;\n --button-border-color: #3d3d3d;\n --button-focus-ring-color: var(--color-gray-transparent);\n }\n\n &.white {\n --button-fg-color: black;\n --button-bg-color: white;\n --button-border-color: #d0d0d0;\n --button-focus-ring-color: var(--color-gray-transparent);\n }\n }\n\n &.subtle {\n --button-fg-color: var(--color-brand-4);\n --button-bg-color: transparent;\n --button-border-color: transparent;\n --button-hover-bg-color: var(--color-brand-extra-transparent);\n --button-font-weight: var(--font-weight-bold);\n --button-focus-ring-color: transparent;\n --button-shadow: none;\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-brand-transparent);\n --button-hover-bg-color: transparent;\n }\n\n &.red {\n --button-fg-color: var(--color-red-4);\n --button-hover-bg-color: var(--color-red-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-red-transparent);\n }\n }\n\n &.orange {\n --button-fg-color: var(--color-orange-4);\n --button-hover-bg-color: var(--color-orange-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-orange-transparent);\n }\n }\n\n &.yellow {\n --button-fg-color: var(--color-yellow-4);\n --button-hover-bg-color: var(--color-yellow-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-yellow-transparent);\n }\n }\n\n &.green {\n --button-fg-color: var(--color-green-4);\n --button-hover-bg-color: var(--color-green-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-green-transparent);\n }\n }\n\n &.sky {\n --button-fg-color: var(--color-sky-4);\n --button-hover-bg-color: var(--color-sky-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-sky-transparent);\n }\n }\n\n &.blue {\n --button-fg-color: var(--color-blue-4);\n --button-hover-bg-color: var(--color-blue-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-blue-transparent);\n }\n }\n\n &.purple {\n --button-fg-color: var(--color-purple-4);\n --button-hover-bg-color: var(--color-purple-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-purple-transparent);\n }\n }\n\n &.magenta {\n --button-fg-color: var(--color-magenta-4);\n --button-hover-bg-color: var(--color-magenta-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-magenta-transparent);\n }\n }\n\n &.gray,\n &.black,\n &.white {\n --button-hover-bg-color: var(--color-gray-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-gray-transparent);\n }\n }\n\n &.gray {\n --button-fg-color: var(--color-gray-4);\n }\n\n &.black {\n --button-fg-color: black;\n }\n\n &.white {\n --button-fg-color: white;\n }\n }\n\n &.small {\n font-size: 0.8rem;\n }\n\n &.large {\n font-size: 1.2rem;\n }\n\n &.icon {\n border-radius: var(--radius-full);\n min-width: 0;\n min-height: 0;\n aspect-ratio: 1;\n padding: 0.5em;\n\n /* Subtle icon buttons use normal pseudo element hover effect */\n &.subtle {\n &::before {\n width: 75%;\n height: 75%;\n }\n\n &:is(:hover, .hover)::before {\n width: 100%;\n height: 100%;\n border-radius: 100%;\n }\n }\n\n /* Normal icon buttons just change background color */\n &:not(.subtle) {\n &::before {\n content: unset;\n }\n\n &:is(:hover, .hover) {\n background-color: var(--button-hover-bg-color);\n }\n }\n }\n\n &:is(:disabled, .disabled, [aria-disabled=\"true\"]) {\n opacity: var(--opacity-disabled);\n cursor: not-allowed;\n transform: scale(1);\n\n &:is(:hover, .hover)::before {\n opacity: 0;\n }\n }\n\n &.loading {\n cursor: progress;\n\n &::before {\n opacity: 1 !important;\n height: 100% !important;\n border-radius: inherit !important;\n animation: button-loading-bg 1200ms var(--ease-both-subtle) infinite\n forwards;\n }\n\n &:is(:disabled, .disabled, [aria-disabled=\"true\"]) {\n cursor: wait;\n }\n }\n}\n\n@keyframes button-loading-bg {\n 0% {\n width: 0;\n margin: 0 auto 0 0;\n }\n\n 50% {\n width: 100%;\n }\n\n 100% {\n width: 0;\n margin: 0 0 0 auto;\n }\n}\n",".accordion {\n width: 100%;\n\n details {\n width: 100%;\n background-color: var(--color-body-alt);\n padding-block: 0;\n padding-inline: var(--space-xs);\n border-radius: var(--radius-m);\n border: var(--border-s) solid var(--color-outline);\n box-shadow: var(--shadow-s);\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-normal);\n\n @media (prefers-reduced-motion: no-preference) {\n transition: padding var(--duration-long) var(--ease-out);\n interpolate-size: allow-keywords;\n }\n\n & + details {\n border-block-start: 0;\n }\n\n &:not(:first-of-type) {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n }\n\n &:not(:last-of-type) {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n }\n\n &::details-content {\n opacity: 0;\n block-size: 0;\n overflow-y: clip;\n transition-property: content-visibility, opacity, block-size;\n transition-duration: var(--duration-long);\n transition-timing-function: var(--ease-out);\n transition-behavior: allow-discrete;\n }\n\n &[open] {\n padding-block-end: var(--space-xs);\n\n &::details-content {\n opacity: 1;\n block-size: auto;\n }\n\n summary {\n border-block-end-color: var(--color-outline);\n margin-block-end: var(--space-xs);\n\n &::before {\n rotate: 0deg;\n }\n\n &:not(:active, .active, :hover, .hover) {\n color: var(--color-brand-3);\n }\n }\n }\n }\n\n summary {\n font-family: var(--font-family-heading);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-bold);\n line-height: 1;\n cursor: pointer;\n border-block-end: var(--border-s) dashed transparent;\n padding: var(--space-xs);\n padding-inline-start: calc(var(--space-xs) + 1em);\n margin-block: 0;\n margin-inline: calc(-1 * var(--space-xs));\n transition-duration: var(--duration-short);\n transition-property: color, border-color;\n transition-timing-function: var(--ease-default);\n position: relative;\n list-style: none; /* Hides ::marker pseudo element in favor of ::before (better cross browser consistency) */\n color: var(--color-body-text);\n user-select: none;\n\n @media (prefers-reduced-motion: no-preference) {\n transition-property: color, border-color, padding, margin;\n }\n\n &:is(:hover, .hover) {\n color: light-dark(var(--color-brand-4), var(--color-brand-2));\n }\n\n &:is(:active, .active) {\n color: light-dark(var(--color-brand-2), var(--color-brand-4));\n }\n\n /* Hides ::-webkit-details-marker pseudo element in favor of ::before (better cross browser consistency) */\n &::-webkit-details-marker {\n display: none;\n }\n\n /* Replacement marker element */\n &::before {\n content: light-dark(\n url(\"@/src/svg/dropdown-thick.svg\"),\n url(\"@/src/svg/dropdown-invert-thick.svg\")\n );\n display: inline-block;\n position: absolute;\n inset-block: 0;\n inset-inline-start: calc(var(--space-xs) / 2);\n margin: auto;\n width: 1em;\n height: 1em;\n rotate: -90deg;\n transition: rotate var(--duration-long) var(--ease-spring);\n }\n\n &:dir(rtl)::before {\n rotate: 90deg;\n }\n\n @media (prefers-reduced-motion) {\n transition-property: color, border-color;\n\n &::before {\n transition: none;\n }\n }\n }\n\n &.subtle {\n details {\n box-shadow: none;\n border: 0;\n background-color: transparent;\n padding-inline-start: calc(var(--space-xs) + 1em);\n\n &[open] summary {\n margin-block-end: var(--space-3xs);\n }\n }\n\n summary {\n border-block-end: 0;\n padding-block: var(--space-2xs);\n margin-inline-start: calc(-1 * (var(--space-xs) + 1em));\n }\n }\n}\n",".alert,\n.banner {\n display: block;\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-normal);\n color: var(--color-body-text);\n position: relative;\n background:\n linear-gradient(var(--alert-bg-color), var(--alert-bg-color)) padding-box,\n linear-gradient(\n to right,\n var(--alert-border-start-color),\n var(--alert-border-end-color)\n )\n border-box;\n border: var(--border-m) solid transparent;\n line-height: 1.4;\n\n > * {\n line-height: 1.4;\n }\n\n @media print {\n & {\n border-color: var(--alert-border-start-color);\n }\n }\n\n &::before,\n &::after {\n content: \"\";\n print-color-adjust: exact;\n position: absolute;\n inset-block: 0;\n margin-block: auto;\n width: 2em;\n height: 2em;\n }\n\n &::before {\n z-index: 2;\n mask-image: var(--alert-icon);\n mask-repeat: no-repeat;\n mask-size: contain;\n background-color: var(--alert-border-start-color);\n scale: 0.5;\n }\n\n &::after {\n z-index: 1;\n background-color: light-dark(#fffe, #000e);\n border-radius: var(--radius-full);\n border: 3px solid var(--alert-border-start-color);\n scale: 0.75;\n }\n\n &.error {\n --alert-bg-color: var(--color-red-9);\n --alert-border-start-color: var(--color-red-5);\n --alert-border-end-color: var(--color-red-6);\n --alert-icon: url(\"@/src/svg/x-thick.svg\");\n }\n\n &.warning {\n --alert-bg-color: var(--color-yellow-9);\n --alert-border-start-color: var(--color-yellow-5);\n --alert-border-end-color: var(--color-yellow-6);\n --alert-icon: url(\"@/src/svg/warning-thick.svg\");\n }\n\n &.success {\n --alert-bg-color: var(--color-green-9);\n --alert-border-start-color: var(--color-green-5);\n --alert-border-end-color: var(--color-green-6);\n --alert-icon: url(\"@/src/svg/check-thick.svg\");\n }\n\n &.info {\n --alert-bg-color: var(--color-sky-9);\n --alert-border-start-color: var(--color-sky-5);\n --alert-border-end-color: var(--color-sky-6);\n --alert-icon: url(\"@/src/svg/info-thick.svg\");\n }\n}\n\n.alert-title,\n.banner-title {\n font-family: var(--font-family-heading);\n font-weight: var(--font-weight-bold);\n line-height: 1;\n color: var(--alert-border-start-color);\n font-size: 0.85em;\n margin: 0;\n margin-block-end: 0.15em;\n}\n","/*\n * Note: for most of the styles applied using `style-semantic-elements`, we use the\n * `:where()` selector to reduce specificity so we can more easily override them.\n * However, this breaks the styling for nested lists, which relies on the specificity\n * of the selectors for each level of nesting being higher than the last. Therefore,\n * we don't use this technique for Lists.\n */\n\n/* Add space between subsequent items and nested lists */\n.list li + li,\n.list .list,\n.style-semantic-elements li + li,\n.style-semantic-elements :is(ol, ul) :is(ol, ul) {\n margin-block-start: var(--space-2xs);\n}\n\n/* Style ordered list markers */\nol.list li::marker,\n.style-semantic-elements ol li::marker {\n color: var(--color-body-text-alt);\n font-size: 0.85em;\n font-family: var(--font-family-heading);\n font-weight: var(--font-weight-semibold);\n line-height: 0;\n}\n\n/* Style unordered list markers */\nul.list li::marker,\n.style-semantic-elements ul li::marker {\n color: var(--color-body-text-alt);\n font-weight: var(--font-weight-bold);\n}\n\n/* Cycle through list marker types in nested lists */\nol.list,\nol.list ol.list ol.list ol.list,\n.style-semantic-elements ol,\n.style-semantic-elements ol ol ol ol {\n list-style: decimal;\n}\n\nol.list ol.list,\nol.list ol.list ol.list ol.list ol.list,\n.style-semantic-elements ol ol,\n.style-semantic-elements ol ol ol ol ol {\n list-style: lower-latin;\n}\n\nol.list ol.list ol.list,\nol.list ol.list ol.list ol.list ol.list ol.list,\n.style-semantic-elements ol ol ol,\n.style-semantic-elements ol ol ol ol ol ol {\n list-style: lower-roman;\n}\n\nul.list,\nul.list ul.list ul.list ul.list,\n.style-semantic-elements ul,\n.style-semantic-elements ul ul ul ul {\n list-style: disc;\n}\n\nul.list ul.list,\nul.list ul.list ul.list ul.list ul.list,\n.style-semantic-elements ul ul,\n.style-semantic-elements ul ul ul ul ul {\n list-style: circle;\n}\n\nul.list ul.list ul.list,\nul.list ul.list ul.list ul.list ul.list ul.list,\n.style-semantic-elements ul ul ul,\n.style-semantic-elements ul ul ul ul ul ul {\n list-style: square;\n}\n\n/* Make the markers a different color for their second appearance in a nested list */\nol.list ol.list ol.list ol.list li::marker,\nul.list ul.list ul.list ul.list li::marker,\n.style-semantic-elements ol ol ol ol li::marker,\n.style-semantic-elements ul ul ul ul li::marker {\n color: var(--color-brand-3);\n}\n",".chip {\n --chip-fg-color: white;\n --chip-bg-color: var(--color-brand-6);\n --chip-border-color: var(--color-brand-5);\n --chip-focus-color: var(--color-brand-transparent);\n\n display: inline-flex;\n align-items: center;\n border-radius: var(--radius-full);\n font-size: var(--font-size-s);\n font-family: var(--font-family-body);\n font-weight: var(--font-weight-normal);\n padding-block: var(--space-3xs);\n padding-inline: var(--space-xs);\n background-color: var(--chip-bg-color);\n border: var(--border-s) solid var(--chip-border-color);\n color: var(--chip-fg-color);\n flex-shrink: 0;\n cursor: default;\n transition-property: box-shadow, background-color, border-color, transform;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n text-decoration: none;\n appearance: none;\n line-height: 1.2;\n\n &.clickable {\n cursor: pointer;\n box-shadow: var(--shadow-s);\n transform: scale(1);\n\n &:is(:focus-visible, .focus) {\n outline: 0;\n box-shadow:\n var(--shadow-s),\n 0 0 0 0.1em var(--chip-border-color),\n 0 0 0 calc(0.2em + var(--border-s)) var(--chip-focus-color);\n }\n\n &:is(:hover, .hover) {\n background-color: var(--chip-border-color);\n }\n\n &:is(:active, .active) {\n transform: scale(0.96);\n\n /*\n * On low-resolution screens, the scale effect makes text jump\n * around awkwardly, so we use an alternative.\n */\n @media screen and (resolution < 2x) {\n transform: translateY(1px);\n }\n }\n }\n\n &.red {\n --chip-bg-color: var(--color-red-6);\n --chip-border-color: var(--color-red-5);\n --chip-focus-color: var(--color-red-transparent);\n }\n\n &.orange {\n --chip-bg-color: var(--color-orange-6);\n --chip-border-color: var(--color-orange-5);\n --chip-focus-color: var(--color-orange-transparent);\n }\n\n &.yellow {\n --chip-bg-color: var(--color-yellow-6);\n --chip-border-color: var(--color-yellow-5);\n --chip-focus-color: var(--color-yellow-transparent);\n }\n\n &.green {\n --chip-bg-color: var(--color-green-6);\n --chip-border-color: var(--color-green-5);\n --chip-focus-color: var(--color-green-transparent);\n }\n\n &.sky {\n --chip-bg-color: var(--color-sky-6);\n --chip-border-color: var(--color-sky-5);\n --chip-focus-color: var(--color-sky-transparent);\n }\n\n &.blue {\n --chip-bg-color: var(--color-blue-6);\n --chip-border-color: var(--color-blue-5);\n --chip-focus-color: var(--color-blue-transparent);\n }\n\n &.purple {\n --chip-bg-color: var(--color-purple-6);\n --chip-border-color: var(--color-purple-5);\n --chip-focus-color: var(--color-purple-transparent);\n }\n\n &.magenta {\n --chip-bg-color: var(--color-magenta-6);\n --chip-border-color: var(--color-magenta-5);\n --chip-focus-color: var(--color-magenta-transparent);\n }\n\n &.gray {\n --chip-bg-color: var(--color-gray-6);\n --chip-border-color: var(--color-gray-5);\n --chip-focus-color: var(--color-gray-transparent);\n }\n\n &.black {\n --chip-bg-color: black;\n --chip-border-color: #3d3d3d;\n --chip-focus-color: var(--color-gray-transparent);\n }\n\n &.white {\n --chip-fg-color: black;\n --chip-bg-color: white;\n --chip-border-color: #d0d0d0;\n --chip-focus-color: var(--color-gray-transparent);\n }\n}\n\n.chip-delete {\n outline: 1px solid transparent;\n margin-inline: var(--space-3xs) calc(-1 * var(--space-2xs));\n font-size: 0.6em;\n border: 0;\n border-radius: var(--radius-full);\n transition-property: background-color, outline-color, filter;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n position: relative;\n overflow: hidden;\n cursor: pointer;\n height: 2em;\n width: 2em;\n user-select: none;\n background-color: var(--chip-border-color);\n padding: 0;\n display: inline-flex;\n box-shadow: none;\n\n &::after {\n content: \"\";\n width: 1.7em;\n height: 1.7em;\n mask-image: url(\"@/src/svg/x.svg\");\n mask-size: contain;\n mask-repeat: no-repeat;\n mask-position: center;\n background-color: var(--chip-fg-color);\n margin: auto;\n }\n\n &:is(:focus-visible, .focus) {\n outline-color: var(--chip-fg-color);\n }\n\n &:is(:hover, .hover) {\n background-color: hsl(from var(--chip-border-color) h s calc(l + 5));\n }\n\n &:is(:active, .active) {\n background-color: hsl(from var(--chip-border-color) h s calc(l - 20));\n }\n}\n",".alert {\n border-radius: var(--radius-s);\n border-start-start-radius: calc(var(--space-2xs) + 2em);\n border-end-start-radius: calc(var(--space-2xs) + 2em);\n padding: var(--space-2xs);\n padding-inline-start: calc(var(--space-2xs) + 2em);\n\n &::before,\n &::after {\n inset-inline-start: calc(var(--space-2xs) * 0.5);\n }\n}\n",".divider,\n:where(.style-semantic-elements hr, .style-semantic-elements br) {\n --divider-thickness: var(--border-s);\n\n display: block;\n border-style: solid;\n border-color: var(--color-outline);\n border-width: 0;\n border-top-width: var(--divider-thickness);\n margin: var(--space-xs) 0;\n outline: 0;\n width: 100%;\n height: 0;\n print-color-adjust: exact;\n position: relative;\n\n &.vertical {\n display: inline-block;\n border-top-width: 0;\n border-left-width: var(--divider-thickness);\n margin: auto var(--space-xs);\n width: 0;\n height: 100%;\n min-height: 1em;\n }\n}\n\n.divider.invisible,\n:where(.style-semantic-elements br) {\n visibility: hidden;\n}\n\n.divider.thick {\n --divider-thickness: var(--border-m);\n}\n\n.divider.thicker {\n --divider-thickness: var(--border-l);\n}\n\n.divider.dashed {\n border-style: dashed;\n}\n\n.divider.dotted {\n border-style: dotted;\n}\n","meter.meter {\n appearance: none;\n inline-size: 100%;\n block-size: 1em;\n}\n\n@supports selector(::-moz-meter-bar) {\n meter.meter {\n border-radius: var(--radius-s);\n border: 0;\n display: block;\n inline-size: 100%;\n block-size: 1em;\n box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);\n background: var(--color-gray-9);\n box-sizing: border-box;\n overflow: clip;\n }\n}\n\n.meter::-webkit-meter-bar {\n border-radius: var(--radius-s);\n border: 0;\n display: block;\n inline-size: 100%;\n block-size: 1em;\n box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);\n background: var(--color-gray-9);\n box-sizing: border-box;\n overflow: clip;\n}\n\n.meter::-webkit-meter-optimum-value,\n.meter::-webkit-meter-suboptimum-value,\n.meter::-webkit-meter-even-less-good-value {\n border-radius: var(--radius-s);\n border: var(--border-s) solid transparent;\n box-sizing: border-box;\n}\n\n.meter::-webkit-meter-inner-element {\n display: inline-block;\n position: relative;\n}\n\n.meter::-moz-meter-bar {\n border-radius: var(--radius-s);\n border: var(--border-s) solid transparent;\n box-sizing: border-box;\n}\n\n.meter::-webkit-meter-optimum-value {\n background: var(--color-green-6);\n border-color: var(--color-green-5);\n}\n\n.meter:-moz-meter-optimum::-moz-meter-bar {\n background: var(--color-green-6);\n border-color: var(--color-green-5);\n}\n\n.meter::-webkit-meter-suboptimum-value {\n background: light-dark(var(--color-yellow-7), var(--color-yellow-5));\n border-color: light-dark(var(--color-yellow-6), var(--color-yellow-4));\n}\n\n.meter:-moz-meter-sub-optimum::-moz-meter-bar {\n background: light-dark(var(--color-yellow-7), var(--color-yellow-5));\n border-color: light-dark(var(--color-yellow-6), var(--color-yellow-4));\n}\n\n.meter::-webkit-meter-even-less-good-value {\n background: var(--color-red-6);\n border-color: var(--color-red-5);\n}\n\n.meter:-moz-meter-sub-sub-optimum::-moz-meter-bar {\n background: var(--color-red-6);\n border-color: var(--color-red-5);\n}\n","@keyframes skeleton-pulse-light {\n from {\n opacity: 0.14;\n }\n\n to {\n opacity: 0.21;\n }\n}\n\n@keyframes skeleton-pulse-dark {\n from {\n opacity: 0.28;\n }\n\n to {\n opacity: 0.36;\n }\n}\n\n.skeleton,\n.skeleton-controller.loading .skeleton-item {\n animation: skeleton-pulse-light 1s var(--ease-both-subtle) alternate 0s\n infinite !important;\n border-radius: var(--radius-s) !important;\n background-color: var(--color-gray-5) !important;\n border: 0 !important;\n outline: 0 !important;\n box-shadow: 0 !important;\n pointer-events: none !important;\n color: transparent !important;\n mask-image: none !important;\n background-image: none !important;\n user-select: none !important;\n print-color-adjust: exact;\n\n /*************************************************************\n * Special styles for \"skeletonizing\" specific element types *\n *************************************************************/\n\n /* Make block text take up the full width */\n &.paragraph,\n &.heading {\n inline-size: 100%;\n }\n\n /* For empty text elements, add filler content so it isn't 0 height. */\n &:is(.paragraph, .heading, .chip, .card-title)::before {\n content: \".\";\n }\n\n /* Add a reasonable minimum width to buttons and chips */\n &:is(.button, .chip):empty {\n min-inline-size: 5em;\n }\n\n /* Add a reasonable width to card titles */\n &.card-title {\n inline-size: 40%;\n overflow: hidden;\n }\n\n /* Visually hide contents, but let them take up space so elements don't collapse to 0 height. */\n &::before,\n &::after,\n > * {\n visibility: hidden !important;\n }\n\n @media (prefers-color-scheme: dark) {\n animation-name: skeleton-pulse-dark !important;\n }\n}\n\n.skeleton-controller {\n display: contents;\n}\n","@keyframes indeterminate-progress {\n from {\n opacity: 0.2;\n }\n\n to {\n opacity: 0.8;\n }\n}\n\nprogress.progress {\n appearance: none;\n inline-size: 100%;\n block-size: 1em;\n}\n\n@supports selector(::-moz-progress-bar) {\n progress.progress {\n border-radius: var(--radius-s);\n border: 0;\n display: block;\n inline-size: 100%;\n block-size: 1em;\n box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);\n background: var(--color-gray-9);\n box-sizing: border-box;\n overflow: clip;\n }\n}\n\n.progress::-webkit-progress-bar {\n border-radius: var(--radius-s);\n border: 0;\n display: block;\n inline-size: 100%;\n block-size: 1em;\n box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);\n background: var(--color-gray-9);\n box-sizing: border-box;\n overflow: clip;\n}\n\n.progress::-webkit-progress-value {\n border-radius: var(--radius-s);\n border: var(--border-s) solid transparent;\n box-sizing: border-box;\n background: var(--color-blue-6);\n border-color: var(--color-blue-5);\n}\n\n.progress::-moz-progress-bar {\n border-radius: var(--radius-s);\n border: var(--border-s) solid transparent;\n box-sizing: border-box;\n background: var(--color-blue-6);\n border-color: var(--color-blue-5);\n}\n\n.progress:indeterminate::-webkit-progress-value {\n background: var(--color-blue-6);\n border-color: var(--color-blue-5);\n opacity: 0.5;\n inline-size: 100% !important;\n animation: indeterminate-progress 1s var(--ease-both-subtle) infinite\n alternate;\n}\n\n.progress:indeterminate::-moz-progress-bar {\n background: var(--color-blue-6);\n border-color: var(--color-blue-5);\n opacity: 0.5;\n inline-size: 100% !important;\n animation: indeterminate-progress 1s var(--ease-both-subtle) infinite\n alternate;\n}\n","/* See utils/base-dialog for more */\n.drawer {\n --dialog-starting-opacity: 1;\n --dialog-ending-opacity: 1;\n\n position: fixed;\n inset: 0;\n border-radius: 0;\n margin: 0;\n border: 0;\n overflow: auto;\n transition-duration: var(--duration-extra-long) !important;\n\n &.left {\n right: auto;\n\n @media (prefers-reduced-motion: no-preference) {\n --dialog-starting-transform: translateX(-100%);\n --dialog-ending-transform: translateX(-100%);\n }\n }\n\n &.top {\n bottom: auto;\n\n @media (prefers-reduced-motion: no-preference) {\n --dialog-starting-transform: translateY(-100%);\n --dialog-ending-transform: translateY(-100%);\n }\n }\n\n &.right {\n left: auto;\n\n @media (prefers-reduced-motion: no-preference) {\n --dialog-starting-transform: translateX(100%);\n --dialog-ending-transform: translateX(100%);\n }\n }\n\n &.bottom {\n top: auto;\n\n @media (prefers-reduced-motion: no-preference) {\n --dialog-starting-transform: translateY(100%);\n --dialog-ending-transform: translateY(100%);\n }\n }\n\n &.top,\n &.bottom {\n width: 100dvw;\n max-width: unset;\n height: auto;\n max-height: 100dvh;\n min-height: min(100dvh, 16rem);\n\n &.small {\n height: 18rem;\n }\n\n &.medium {\n height: 28rem;\n }\n\n &.large {\n height: 38rem;\n }\n }\n\n &.left,\n &.right {\n height: 100dvh;\n max-height: unset;\n width: auto;\n min-width: min(100dvw, 18rem);\n max-width: 100dvw;\n\n &.small {\n width: 22rem;\n }\n\n &.medium {\n width: 32rem;\n }\n\n &.large {\n width: 42rem;\n }\n }\n}\n\n.drawer-body {\n height: 100%;\n}\n\n.drawer-footer {\n padding: var(--space-xs);\n flex-shrink: 0;\n display: flex;\n gap: var(--space-xs);\n justify-content: flex-start;\n margin: 0;\n margin-block-start: auto;\n\n > * {\n width: 100%;\n }\n}\n","/* See utils/base-dialog for more */\n.modal {\n max-height: calc(100svh - 4 * var(--space-body-y));\n max-width: calc(100svw - 4 * var(--space-body-x));\n margin: auto;\n\n &.small {\n width: 25rem;\n }\n\n &.medium {\n width: 40rem;\n }\n\n &.large {\n width: 55rem;\n }\n}\n\n.modal-footer {\n padding: var(--space-xs);\n flex-shrink: 0;\n display: flex;\n gap: var(--space-2xs);\n justify-content: flex-start;\n background-color: var(--color-body);\n border-block-start: var(--border-s) solid var(--color-outline);\n margin: 0;\n\n @media screen and (width < 30rem) {\n flex-direction: column;\n width: 100%;\n justify-content: stretch;\n }\n\n .button:not(.small, .medium, .large) {\n font-size: 0.9rem;\n }\n}\n",".skip-link {\n position: fixed;\n display: inline-block;\n z-index: 100;\n top: var(--space-body-y);\n left: var(--space-body-x);\n background-color: var(--color-brand-5);\n padding: var(--space-xs);\n border-radius: var(--radius-m);\n border: 0.25em solid var(--color-brand-4);\n color: white;\n font-weight: var(--font-weight-bold);\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n outline: 0;\n box-shadow:\n var(--shadow-l),\n 0 0 0 0.2em var(--color-brand-transparent);\n text-decoration: none;\n vertical-align: middle;\n opacity: 0.25;\n transition: opacity var(--duration-medium) var(--ease-default);\n pointer-events: none;\n line-height: 1;\n\n kbd {\n margin-inline-start: var(--space-2xs) !important;\n font-weight: initial;\n border: 0 !important;\n background-color: var(--color-brand-4) !important;\n color: inherit !important;\n font-size: 1.2em !important;\n }\n\n &:focus,\n &.static {\n opacity: 1;\n }\n\n &.static {\n position: static;\n pointer-events: unset;\n }\n}\n",".quote,\n:where(.style-semantic-elements blockquote) {\n display: block;\n margin: 0;\n color: var(--color-body-text-alt);\n border-inline-start: 0.25em solid var(--color-gray-transparent);\n padding: var(--space-3xs);\n padding-inline-start: var(--space-xs);\n position: relative;\n line-height: 1.25;\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-normal);\n\n footer {\n margin-block-start: 0.5em;\n font-size: var(--font-size-s);\n font-style: initial;\n color: var(--color-body-text);\n font-weight: var(--font-weight-semibold);\n\n cite {\n font-weight: var(--font-weight-normal);\n font-style: italic;\n }\n }\n}\n",".field {\n --field-gap: var(--space-2xs);\n --field-padding: 0.5em;\n --field-radius: var(--radius-m);\n\n display: inline-flex;\n flex-direction: column;\n line-height: 1;\n gap: var(--field-gap);\n color: var(--color-body-text);\n font-weight: var(--font-weight-semibold);\n transition-property: color, box-shadow;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n font-size: var(--font-size-m);\n font-family: var(--font-family-body);\n\n &.compact,\n .fieldset.compact & {\n --field-gap: calc(0.9 * var(--space-2xs));\n --field-padding: 0.33em;\n --field-radius: var(--radius-s);\n\n font-size: calc(0.9 * var(--font-size-m));\n }\n\n &:focus-within {\n color: var(--color-brand-5);\n }\n\n &:has(:user-invalid, [aria-invalid=\"true\"]) {\n color: var(--color-red-5);\n\n .error-message {\n display: flex;\n }\n }\n\n &:has([readonly]):focus-within {\n color: var(--color-gray-5);\n }\n\n input:not(\n [type=\"button\"],\n [type=\"checkbox\"],\n [type=\"file\"],\n [type=\"hidden\"],\n [type=\"image\"],\n [type=\"radio\"],\n [type=\"range\"],\n [type=\"reset\"],\n [type=\"submit\"]\n ),\n select,\n textarea {\n color: var(--color-body-text);\n background-color: light-dark(white, black);\n border: var(--border-s) solid var(--color-outline);\n font-size: 1em;\n padding: var(--field-padding);\n border-radius: var(--field-radius);\n transition-property: color, box-shadow, border-color;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n font-family: inherit;\n line-height: 1.25;\n\n &:focus {\n outline: 0;\n border-color: var(--color-brand-5);\n box-shadow:\n 0 0 0 0.1em var(--color-brand-5),\n 0 0 0 calc(0.2em + var(--border-s)) var(--color-brand-transparent);\n }\n\n &:focus-visible {\n outline: 0;\n }\n\n &:disabled {\n opacity: var(--opacity-disabled);\n cursor: not-allowed;\n }\n\n /* Not using :read-only because it matches additional elements (e.g., every color input) */\n &[readonly] {\n border-style: dashed;\n\n &:focus {\n outline: 0;\n border-style: solid;\n border-color: var(--color-gray-5);\n box-shadow:\n 0 0 0 0.1em var(--color-gray-5),\n 0 0 0 calc(0.2em + var(--border-s)) var(--color-gray-transparent);\n }\n }\n\n &:user-invalid,\n &[aria-invalid=\"true\"] {\n border-color: var(--color-red-5);\n box-shadow: 0 0 0 0.1em var(--color-red-5);\n\n &:focus {\n outline: 0;\n border-color: var(--color-red-5);\n box-shadow:\n 0 0 0 0.1em var(--color-red-5),\n 0 0 0 calc(0.2em + var(--border-s)) var(--color-red-transparent);\n }\n }\n }\n\n input[type=\"color\"] {\n inline-size: auto;\n block-size: auto;\n cursor: pointer;\n\n &::-webkit-color-swatch-wrapper {\n padding: 0;\n }\n\n &::-webkit-color-swatch {\n border: 0;\n block-size: 1.25em;\n inline-size: 100%;\n border-radius: var(--radius-s);\n }\n\n &::-moz-color-swatch {\n border: 0;\n block-size: 1.25em;\n inline-size: 100%;\n border-radius: var(--radius-s);\n }\n }\n\n select,\n input[list] {\n background-image: light-dark(\n url(\"@/src/svg/dropdown.svg\"),\n url(\"@/src/svg/dropdown-invert.svg\")\n );\n background-position: center right 0.25em;\n background-size: auto 75%;\n background-repeat: no-repeat;\n appearance: none;\n padding-inline-end: calc(2 * var(--space-2xs) + 1em);\n\n &:dir(rtl) {\n background-position: center left 0.25em;\n }\n }\n\n select {\n cursor: pointer;\n }\n\n .help-text {\n font-size: 0.9em;\n color: var(--color-body-text-alt);\n font-weight: var(--font-weight-normal);\n margin: -0.25em 0 0;\n position: relative;\n }\n\n /* Todo glitches */\n .error-message {\n display: none;\n font-size: 0.9em;\n border: 0;\n padding: 0;\n margin: 0;\n font-weight: var(--font-weight-semibold);\n align-items: center;\n gap: 2px;\n\n &::before {\n content: \"\";\n mask-image: url(\"@/src/svg/x-circle.svg\");\n mask-size: contain;\n mask-repeat: no-repeat;\n mask-position: center;\n background-color: currentcolor;\n display: inline-block;\n height: 1.2em;\n width: 1.2em;\n }\n }\n\n .input-group {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n\n > * {\n border-radius: 0 !important;\n z-index: 1;\n }\n\n > :is(:user-invalid, [aria-invalid=\"true\"]) {\n z-index: 2;\n }\n\n > :first-child {\n border-start-start-radius: var(--field-radius) !important;\n border-end-start-radius: var(--field-radius) !important;\n }\n\n > :last-child {\n border-end-end-radius: var(--field-radius) !important;\n border-start-end-radius: var(--field-radius) !important;\n }\n\n > :focus-visible {\n z-index: 3;\n }\n\n > :is(.prefix, .suffix, .action) {\n user-select: none;\n -webkit-user-drag: none;\n display: flex;\n font-weight: var(--font-weight-normal);\n color: var(--color-gray-3);\n background-color: var(--color-gray-9);\n border: var(--border-s) solid var(--color-outline);\n padding: var(--field-padding) calc(2 * var(--field-padding));\n align-items: center;\n justify-content: center;\n font-size: 0.9em;\n\n :is(img, svg) {\n height: 1.15em;\n width: auto;\n }\n }\n\n > .prefix {\n border-inline-end: 0;\n }\n\n > .suffix {\n border-inline-start: 0;\n }\n\n > .action {\n cursor: pointer;\n color: var(--color-brand-3);\n border-inline-start: 0;\n transition-property: box-shadow, background-color;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n\n &:hover {\n background-color: var(--color-gray-8);\n }\n\n &:active {\n background-color: var(--color-gray-7);\n }\n\n &:focus-visible {\n border-color: var(--color-brand-5);\n border-inline-start-width: var(--border-s);\n border-inline-start-style: solid;\n box-shadow:\n 0 0 0 0.11em var(--color-brand-5),\n 0 0 0 calc(0.22em + var(--border-s)) var(--color-brand-transparent);\n outline: 0;\n }\n }\n\n > :is(input, select, textarea) {\n width: 100%;\n\n &:has(~ .action:focus-visible) {\n border-inline-end-width: 0;\n }\n }\n }\n}\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n accent-color: var(--color-brand-5);\n}\n\nfieldset.fieldset {\n border: var(--border-s) solid var(--color-outline);\n border-radius: var(--radius-s);\n background-color: var(--color-body);\n color: var(--color-body-text);\n\n legend {\n font-family: var(--font-family-heading);\n font-weight: var(--font-weight-bold);\n transition: color var(--duration-medium) var(--ease-default);\n }\n\n &:focus-within legend {\n color: var(--color-brand-5);\n }\n}\n\n.form {\n max-width: 60ch;\n margin-inline-end: auto;\n}\n",".flow,\n.stack,\n.separate,\n.space {\n display: flex !important;\n gap: var(--space-s);\n\n &.no-gap {\n gap: var(--space-none);\n }\n\n &.densest {\n gap: var(--space-3xs);\n }\n\n &.denser {\n gap: var(--space-2xs);\n }\n\n &.dense {\n gap: var(--space-xs);\n }\n\n &.sparse {\n gap: var(--space-m);\n }\n\n &.sparser {\n gap: var(--space-l);\n }\n\n &.sparsest {\n gap: var(--space-xl);\n }\n\n &.horizontal,\n &.horizontally {\n flex-direction: row;\n }\n\n &.vertical,\n &.vertically {\n flex-direction: column;\n }\n}\n\n.flow {\n flex-wrap: wrap;\n align-items: center;\n justify-content: start;\n}\n\n.stack {\n flex-wrap: nowrap;\n align-items: stretch;\n justify-content: start;\n}\n\n.separate {\n flex-wrap: nowrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.space {\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-evenly;\n}\n","input[type=\"range\"].slider {\n --slider-shadow-resting: var(--shadow-s);\n --slider-shadow-focused: var(--shadow-s), 0 0 0 0.08em var(--color-brand-5),\n 0 0 0 calc(0.16em + var(--border-s)) var(--color-brand-transparent);\n --slider-shadow-active: var(--shadow-s), 0 0 0 0.08em var(--color-brand-5);\n\n font-size: 1.2rem;\n block-size: 1.25em;\n appearance: none;\n background: transparent;\n cursor: pointer;\n\n @media (pointer: coarse) {\n font-size: 1.5rem;\n }\n\n &:disabled {\n opacity: var(--opacity-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: 0;\n\n &::-webkit-slider-thumb {\n border-color: var(--color-brand-5);\n box-shadow: var(--slider-shadow-focused);\n }\n\n &::-moz-range-thumb {\n border-color: var(--color-brand-5);\n box-shadow: var(--slider-shadow-focused);\n }\n }\n\n &:enabled:active {\n &::-webkit-slider-thumb {\n border-color: var(--color-brand-5);\n box-shadow: var(--slider-shadow-active);\n transform: scale(1);\n\n @media screen and (resolution >= 2x) {\n transform: scale(0.9);\n }\n }\n\n &::-moz-range-thumb {\n border-color: var(--color-brand-5);\n box-shadow: var(--slider-shadow-active);\n transform: scale(1);\n\n @media screen and (resolution >= 2x) {\n transform: scale(0.9);\n }\n }\n }\n\n &::-webkit-slider-runnable-track {\n block-size: 0.25em;\n inline-size: 100%;\n border-radius: var(--radius-full);\n background-color: var(--color-gray-8);\n print-color-adjust: exact;\n box-shadow: 0 0 1px var(--color-gray-7) inset;\n }\n\n &::-moz-range-track {\n block-size: 0.25em;\n inline-size: 100%;\n border-radius: var(--radius-full);\n background-color: var(--color-gray-8);\n print-color-adjust: exact;\n }\n\n &::-webkit-slider-thumb {\n height: 1.25em;\n width: 1.25em;\n border-radius: var(--radius-full);\n background-color: white;\n box-shadow: var(--slider-shadow-resting);\n border: var(--border-s) solid var(--color-outline);\n transition-property: border-color, box-shadow, transform;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n\n /* Additional properties needed for webkit */\n appearance: none;\n margin-block-start: -0.5em;\n }\n\n &::-moz-range-thumb {\n height: 1.25em;\n width: 1.25em;\n border-radius: var(--radius-full);\n background-color: white;\n box-shadow: var(--slider-shadow-resting);\n border: var(--border-s) solid var(--color-outline);\n transition-property: border-color, box-shadow, transform;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n }\n}\n","/* Style the label of a labeled switch, which is also the container that holds the switch itself */\nlabel.switch {\n inline-size: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n font-weight: var(--font-weight-semibold);\n gap: var(--space-3xs);\n font-size: var(--font-size-m);\n font-family: var(--font-family-body);\n}\n\n/* For small labeled switches, set the label text size to font-size-s */\nlabel.switch.small {\n font-size: var(--font-size-s);\n}\n\n/* Style the switch itself */\ninput[type=\"checkbox\"].switch,\nlabel.switch input[type=\"checkbox\"] {\n font-size: 1rem;\n print-color-adjust: exact;\n appearance: none;\n block-size: 1.8em;\n inline-size: 3em;\n border-radius: var(--radius-full);\n background-color: var(--color-gray-7);\n position: relative;\n flex: none;\n transition-property: background-color, box-shadow, border-color;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n border: 0.1em solid var(--color-gray-6);\n cursor: pointer;\n\n &::after {\n content: \"\";\n position: absolute;\n height: 1.4em;\n width: 1.4em;\n background-color: white;\n inset-inline-start: 0.1em;\n inset-block-start: 0.1em;\n border-radius: var(--radius-full);\n box-shadow: var(--shadow-s);\n transition-property: border-color, transform;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-both);\n transform: translateX(0);\n }\n\n &:disabled {\n opacity: var(--opacity-disabled);\n cursor: not-allowed;\n }\n\n &:is(:focus-visible, .focus) {\n border-color: var(--color-gray-6);\n box-shadow:\n 0 0 0 0.08em var(--color-gray-6),\n 0 0 0 calc(0.16em + var(--border-s)) var(--color-gray-transparent);\n outline: 0;\n }\n\n &:checked {\n background-color: var(--color-brand-6);\n border-color: var(--color-brand-5);\n\n &::after {\n transform: translateX(1.2em);\n }\n\n &:is(:focus-visible, .focus) {\n box-shadow:\n 0 0 0 0.08em var(--color-brand-5),\n 0 0 0 calc(0.16em + var(--border-s)) var(--color-brand-transparent);\n }\n }\n\n &:dir(rtl):checked::after {\n transform: translateX(-1.2em);\n }\n}\n\n/* For small switches, scale the switch control to 80% of the normal size */\ninput[type=\"checkbox\"].switch.small,\nlabel.switch.small input[type=\"checkbox\"] {\n font-size: 0.8rem;\n}\n","@keyframes spinner-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinner {\n --spinner-primary-color: var(--color-brand-5);\n --spinner-secondary-color: var(--color-brand-3);\n\n font-size: var(--font-size-m);\n position: relative;\n text-align: center;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n gap: var(--space-2xs);\n\n &.small {\n font-size: var(--font-size-xs);\n }\n\n &.large {\n font-size: var(--font-size-xl);\n }\n\n &.label-top {\n flex-direction: column-reverse;\n\n &::after {\n inset: auto 0 0;\n }\n }\n\n &.label-right {\n flex-direction: row;\n gap: var(--space-xs);\n\n &::after {\n inset: 0 auto 0 0;\n }\n }\n\n &.label-left {\n flex-direction: row-reverse;\n gap: var(--space-xs);\n\n &::after {\n inset: 0 0 0 auto;\n }\n }\n\n &::before,\n &::after {\n content: \"\";\n display: block;\n height: 3em;\n width: 3em;\n mask-image: url(\"@/src/svg/loading-arc.svg\");\n mask-size: cover;\n mask-repeat: no-repeat;\n mask-position: center;\n background-color: var(--spinner-primary-color);\n animation: spinner-spin 0.85s linear infinite;\n }\n\n &::after {\n position: absolute;\n inset: 0 0 auto;\n margin: auto;\n background-color: var(--spinner-secondary-color);\n animation-duration: 1.05s;\n }\n}\n","/* stylelint-disable declaration-block-no-redundant-longhand-properties -- text-decoration shorthand doesn't work properly for Safari */\n\n.paragraph,\n:where(.style-semantic-elements p) {\n font-family: var(--font-family-body);\n font-weight: var(--font-weight-normal);\n line-height: 1.6;\n margin: 0.75em 0;\n text-wrap: pretty;\n hanging-punctuation: first;\n overflow-wrap: break-word;\n\n &:first-child {\n margin-block-start: 0;\n }\n\n &:last-child {\n margin-block-end: 0;\n }\n}\n\n/*\n * Remove the top margin from paragraphs immediately after a heading, since we\n * want to use the (slightly smaller) bottom margin of the heading instead.\n *\n * This ensures that headings are visibly closer to their content than the\n * content above them, using spacing intentionally to denote hierarchy.\n */\n:is(.heading-1, .heading-2, .heading-3, .heading-4, .heading-5, .heading-6)\n + .paragraph,\n:where(.style-semantic-elements :is(h1, h2, h3, h4, h5, h6) + p) {\n margin-block-start: 0;\n}\n\n.abbreviation,\n:where(.style-semantic-elements abbr[title]) {\n display: inline;\n text-decoration-line: underline;\n text-decoration-style: dotted;\n text-decoration-thickness: var(--border-m);\n text-decoration-color: var(--color-gray-6);\n text-underline-offset: 0.1em;\n}\n\n.bold,\n:where(.style-semantic-elements strong, .style-semantic-elements b) {\n font-weight: var(--font-weight-bold);\n}\n\n.italic,\n:where(.style-semantic-elements em) {\n font-style: italic;\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.strikethrough,\n:where(.style-semantic-elements s) {\n text-decoration-line: line-through;\n}\n\n.underline.strikethrough {\n text-decoration-line: underline line-through;\n}\n\n.small-text,\n:where(.style-semantic-elements small) {\n font-size: 0.75em;\n vertical-align: baseline;\n}\n\n.subscript,\n.superscript,\n:where(.style-semantic-elements sub, .style-semantic-elements sup) {\n font-size: 0.75em;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\n.subscript,\n:where(.style-semantic-elements sub) {\n inset-block-end: -0.25em;\n}\n\n.superscript,\n:where(.style-semantic-elements sup) {\n inset-block-start: -0.5em;\n}\n\n.code,\n:where(.style-semantic-elements code) {\n font-family: var(--font-family-mono);\n background-color: var(--color-gray-extra-transparent);\n color: var(--color-gray-1);\n border-radius: var(--radius-s);\n display: inline;\n padding: 0.25ch 0.5ch;\n font-size: 0.9em;\n\n &.invert {\n color: var(--color-gray-9);\n }\n}\n\n.link .code,\n:where(.style-semantic-elements a code) {\n text-decoration: inherit;\n text-decoration-color: inherit;\n text-decoration-thickness: inherit;\n color: inherit;\n}\n\n.key,\n.skip-link kbd,\n:where(.style-semantic-elements kbd) {\n display: inline;\n padding: 0 0.5ch;\n margin: 0 0.25ch;\n font-size: 0.9em;\n border: var(--border-s) solid var(--color-gray-8);\n border-bottom-width: 3px;\n border-radius: var(--radius-m);\n font-weight: var(--font-weight-semibold);\n font-family: var(--font-family-body);\n background-color: var(--color-gray-9);\n color: var(--color-body-text);\n}\n",".card {\n background-color: var(--color-body-alt);\n border-radius: var(--radius-l);\n border: var(--border-s) solid var(--color-outline);\n box-shadow: var(--shadow-m);\n padding: var(--space-m);\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-normal);\n\n &.secondary {\n background-color: var(--color-body);\n border-radius: var(--radius-m);\n box-shadow: var(--shadow-s);\n padding: var(--space-s);\n }\n}\n\n/* \n * The Link component also defines .card-title[href]. We specifically add that\n * selector here so the styles in this file override the former.\n */\n.card-title,\n.card-title[href] {\n font-family: var(--font-family-heading);\n line-height: 1.15;\n text-wrap: balance;\n overflow-wrap: break-word;\n font-size: var(--font-size-l);\n font-weight: var(--font-weight-bold);\n color: var(--color-brand-3);\n margin-block: 0 var(--space-xs);\n display: block;\n}\n\n.card-title[href] {\n text-decoration-color: var(--color-brand-transparent);\n}\n\n.card.secondary .card-title {\n font-size: var(--font-size-m);\n margin-block-end: var(--space-2xs);\n}\n","table.table,\n:where(.style-semantic-elements table) {\n --table-bg-odd: var(--color-body-alt);\n --table-bg-even: var(--color-body);\n --table-vertical-border: var(--border-s);\n\n background-color: var(--color-body-alt);\n border-collapse: separate;\n border-spacing: 0;\n font-size: var(--font-size-m);\n border: var(--border-s) solid var(--color-outline);\n border-radius: var(--radius-s);\n color: var(--color-body-text);\n font-family: var(--font-family-body);\n font-weight: var(--font-weight-normal);\n\n &.subtle {\n --table-bg-odd: transparent;\n --table-bg-even: transparent;\n --table-vertical-border: 0;\n\n border: 0;\n }\n\n &.dense :is(th, td) {\n padding: var(--space-3xs) var(--space-2xs);\n }\n\n &.sparse :is(th, td) {\n padding: var(--space-xs) var(--space-s);\n }\n\n caption {\n font-family: var(--font-family-heading);\n line-height: 1.15;\n font-size: var(--font-size-l);\n font-weight: var(--font-weight-semibold);\n text-align: start;\n margin: 0 0 var(--space-2xs);\n }\n\n th,\n td {\n padding: var(--space-2xs) var(--space-xs);\n }\n\n th,\n tfoot td {\n font-weight: var(--font-weight-bold);\n font-family: var(--font-family-heading);\n text-align: center;\n }\n\n th {\n border-block-end: var(--border-m) solid var(--color-outline);\n }\n\n tfoot td {\n border-block-start: var(--border-m) solid var(--color-outline);\n }\n\n td {\n text-align: unset;\n }\n\n :is(th, tfoot td):not(:last-of-type) {\n border-inline-end: var(--table-vertical-border) dashed var(--color-outline);\n }\n\n td:not(tfoot td, :last-of-type) {\n border-inline-end: var(--table-vertical-border) solid var(--color-outline);\n }\n\n tr:not(:last-of-type) td {\n border-block-end: var(--border-s) solid var(--color-outline);\n }\n\n tbody tr:nth-child(odd),\n tbody:has(tr:last-of-type:nth-child(even)) + tfoot tr {\n background-color: var(--table-bg-even);\n }\n\n tbody tr:nth-child(even) {\n background-color: var(--table-bg-odd);\n }\n}\n"],"names":[]}
1
+ {"version":3,"sourceRoot":null,"mappings":"ACAA,gDAOA,yEAIA,+JAAA,mCAAA,yDAKA,8EAMA,sDIlBA,+EAQA,gCAEE,4FAKF,uCAEE,4FAKF,iCAEE,4FASF,oHAKA,kHASA,uMInDA,slXAiNE,mCAAqC,+DAKtB,kYItNjB,yIAQE,sCAKF,0MAaE,kIAQA,yNASA,sGAOA,aACE,4DAIA,0DEvDJ,gQAOE,mCAAqC,uEAIpB,iFAGnB,mNASE,gCAAiC,gGAKtB,oOASX,uCAKF,6TAeE,2RAYA,iQAWE,6HAMJ,uIAUA,kEACE,gCAOF,iHAMA,gFAIA,oLAOA,6IAMA,2HAKA,gBACE,4GAKA,qFI1IF,yWAiBE,8HAMA,qCAIA,gFAIA,4sBC7BF,uSCFA,sBAGE,qUAYE,8CAAgD,2GAKhD,gDAIA,6FAKA,wFAKA,4PAUA,2DAGE,oEAKA,8GAIE,oDAIA,+FAON,mjBAmBE,8CAAgD,0EAIhD,uIAIA,yIAKA,wDAKA,63BAkBA,iPAIA,gCAAiC,0DAG/B,2CAOF,2HAME,0EAKF,iICnJJ,mfAkBE,aACE,qDAKF,mZAOA,smBAOA,kZAOA,wiBAOA,uLAMA,qKC1DF,iRAoBA,uPAYA,mQAaA,yEAOE,kDAKA,uDAKA,4KAUF,yXAgBE,6EAIA,wEAIA,6HAKA,iFAGE,6DAKF,+LAaF,gJAQA,2LAWA,mGAOA,2IAUA,8RAWA,uEAQE,0EAIA,yEAIA,uEAKF,kKAOA,icAcE,8EAIA,oDAIA,6GAKA,+EAIA,uGAMF,kCAGE,6LAOA,wQAaE,+FAIA,iFAIA,+FAOA,gHAIA,4HAKA,kHAMJ,yFAOA,sEAIA,0DAIA,qBAME,qCAIA,wRAWE,mCAKF,0DAIA,oEAIA,sFAMA,4DAGE,iEAIA,wFAMA,uFAMJ,uCAQA,gBACE,yBClXF,8KAOE,wWAMA,wjBAMA,qWAMA,6fAMA,wMAKA,gGAIA,2CAIA,uNAUE,qIAOJ,6LAOE,mMAMA,sKC1EF,imCAyCE,2TAgBA,yKAOA,iDAOE,kCAAqC,uDAKvC,+CAGE,oFAQA,kFAKF,gOAOE,yJAMA,qKAMA,qKAMA,iKAMA,yJAMA,6JAMA,qKAMA,yKAMA,6JAMA,oIAMA,4JAQF,6RASE,gIAKA,qHAIE,8FAKF,8HAIE,oGAKF,8HAIE,oGAKF,2HAIE,kGAKF,qHAIE,8FAKF,wHAIE,gGAKF,8HAIE,oGAKF,iIAIE,sGAKF,gIAKE,mJAKF,4DAIA,+CAIA,+CAKF,8BAIA,+BAIA,mGASI,kDAKA,yFASA,iDAIA,4FAMJ,2HAKE,wFAKF,gCAGE,2KAQA,yEAMJ,uGCxVA,kvBA0BE,6EAKE,6KAQA,4EAIA,yDAOE,kCAAqC,+DAMzC,oIAMA,gJAMA,gJAMA,4IAMA,oIAMA,wIAMA,gJAMA,oJAMA,wIAMA,+GAMA,qIAQF,ifAoBE,ywBAYA,0EAIA,kGAIA,qGCpKF,0UAgBE,yOAWF,yEAKA,mDAIA,qDAIA,oCAIA,oCC3CA,8LAYE,wBAGE,8CAAgD,wGAMlD,wBAGE,8CAAgD,uGAMlD,wBAGE,8CAAgD,uGAMlD,wBAGE,8CAAgD,wGAMlD,mHAQE,mDAIA,oDAIA,mDAKF,kHAQE,kDAIA,mDAIA,kDAMJ,yBAIA,kJASE,4BCzGF,0aAiBE,yKASA,+CAIA,uEAGE,0EAKF,8DAIA,mkBAyBE,6UAQA,uMAIA,2OAMA,6MAGE,uWAUF,4cAKE,2hBAUJ,yEAKE,iEAIA,yHAOA,sHAQF,6aASE,8QAIA,mCAAqC,gRAKvC,6BAIA,4IASA,iJAUE,kjCAaF,wEAKE,0DAKA,qEAIA,+IAKA,0IAKA,6CAIA,uYAaE,uFAMF,gDAIA,kDAIA,sOAQE,uEAIA,wEAIA,8QAWF,0DAGE,qGAMJ,2LAWF,yEAKA,iKAME,+JAMA,iEAKF,4CI3TA,wEAOE,gEAIA,gEAIA,+DAIA,6DAIA,6DAIA,8DAIA,gEAIA,iHAKA,gHAMF,8DAMA,kEAMA,4EAMA,sE/BhEA,qPAcA,wIAYE,oGAKF,kHAMA,kHAMA,qHAMA,oHAMA,gHIvDA,6IAOA,kcAWE,+FAKF,mTAUA,4GAAA,wGIjCA,yWIAA,8dAaE,qHAIA,iGAUA,gmBAYA,sVAIA,sXAOE,g9BAOA,0VAOA,yxCAOA,sVV9DJ,0IAQA,iKAAA,qLAUA,wFAAA,4GAOA,4HAOA,sJAOA,4KAOA,4HAOA,iJAOA,uKAQA,sEAAA,sEAAA,2EAAA,2EI7EA,4DAMA,qCACE,gOAaF,6OAYA,iPAAA,oPAAA,wPAcA,2EAKA,oOAYA,sJAOA,4JAOA,4JAME,mCAAqC,6JAQvC,mKAME,mCAAqC,oKAQvC,uJAOA,8JI/GA,kHAKE,yBAIA,0BAIA,yBAKF,0NAUE,gCAAmC,wEAMnC,iEInCF,2NAUE,oFAIA,iFAYF,iKC1BA,+DAUA,kEAMA,wCACE,sOAaF,mPAYA,+OAYA,0OAYA,oOASA,+Nd3EA,iXAcE,4MAOE,4HIrBJ,+DAUA,8DAUA,8gBAqBE,yJAMA,wHAKA,uGAKA,sGAMA,4NAMA,mCAAqC,oGAKvC,sCI1EA,qkBAyBE,uMASA,6CAKA,uDOvCF,qWAaE,wBAA0B,2CAI1B,qFAKA,iDAGE,uIAKA,mIAOA,0JAKE,mCAAsC,mFAKxC,sJAKE,mCAAsC,+EAM1C,qOASA,wNASA,kZAgBA,qWY5FF,4EAUA,4QAaE,6CAIA,6CAIA,iDAGE,wCAKF,4DAIE,4CAKF,mEAIE,2CAKF,+zCAcA,qIItEF,yOAaA,gDAKA,qcAiBE,yZAgBA,+HAKA,oPAQA,mJAIE,4GAIA,mNAOF,uTAMF,0FHtFA,scAgBE,8LAUA,kHAIA,gHAIA,0OASA,8JAKA,yNAOA,sHAIA,8HAIA,4EAIA,sKAIA,gKAIA,4IAIA,gOAKA,oHCpFF,6GAKA,8DAKA,0CAIA,oFAKA,qEAIA,kKASA,uEAKA,0EAKA,8OAUE,kFAKF,gOGzDA,qRAUE,mIAYF,0QAaA,oIAIA","sources":["index.css","misc/reset.css","components/heading.css","components/quote.css","components/list.css","misc/utility-classes.css","components/highlight.css","components/skeleton.css","components/meter.css","misc/variables.css","components/key.css","components/shared/base-alert.css","components/modal.css","components/link.css","components/skip-link.css","components/shared/base-dialog.css","components/shared/base-dismiss-button.css","components/abbreviation.css","components/accordion.css","components/alert.css","components/app.css","components/banner.css","components/button.css","components/chip.css","components/divider.css","components/drawer.css","components/paragraph.css","components/progress.css","components/slider.css","components/field.css","components/spinner.css","components/table.css","components/text.css","components/flex.css","components/switch.css","components/card.css"],"sourcesContent":["/* Misc styles */\n@import url(\"./misc/reset.css\");\n@import url(\"./misc/utility-classes.css\");\n@import url(\"./misc/variables.css\");\n\n/* Styles used in multiple components */\n@import url(\"./components/shared/base-alert.css\");\n@import url(\"./components/shared/base-dialog.css\");\n@import url(\"./components/shared/base-dismiss-button.css\");\n\n/* Components */\n@import url(\"./components/abbreviation.css\");\n@import url(\"./components/accordion.css\");\n@import url(\"./components/alert.css\");\n@import url(\"./components/app.css\");\n@import url(\"./components/banner.css\");\n@import url(\"./components/button.css\");\n@import url(\"./components/chip.css\");\n@import url(\"./components/divider.css\");\n@import url(\"./components/drawer.css\");\n@import url(\"./components/field.css\");\n@import url(\"./components/flex.css\");\n@import url(\"./components/heading.css\");\n@import url(\"./components/highlight.css\");\n@import url(\"./components/key.css\");\n@import url(\"./components/link.css\");\n@import url(\"./components/list.css\");\n@import url(\"./components/meter.css\");\n@import url(\"./components/modal.css\");\n@import url(\"./components/paragraph.css\");\n@import url(\"./components/progress.css\");\n@import url(\"./components/quote.css\");\n@import url(\"./components/skeleton.css\");\n@import url(\"./components/skip-link.css\");\n@import url(\"./components/slider.css\");\n@import url(\"./components/spinner.css\");\n@import url(\"./components/switch.css\");\n@import url(\"./components/table.css\");\n@import url(\"./components/text.css\");\n\n/*\n * Card needs to be loaded after Link so .card-title[href] in the former\n * overrides the same selector in the latter without needing \"!important\"\n * declarations or specificity hacks.\n */\n@import url(\"./components/card.css\");\n","*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n}\n\n:where(:focus-visible) {\n outline: var(--border-m) solid var(--color-brand-5);\n}\n\nhtml {\n text-size-adjust: none;\n color-scheme: light dark;\n}\n\nbody {\n margin: 0;\n background-color: var(--color-body);\n color: var(--color-body-text);\n}\n\nimg,\npicture,\nvideo,\niframe {\n max-width: 100%;\n display: block;\n}\n",".heading-1,\n.heading-2,\n.heading-3,\n.heading-4,\n.heading-5,\n.heading-6,\n:where(.style-semantic-elements :is(h1, h2, h3, h4, h5, h6)) {\n font-family: var(--font-family-heading);\n margin-block: 0.75em 0.3em;\n line-height: 1.15;\n text-wrap: balance;\n overflow-wrap: break-word;\n}\n\n.heading-1,\n:where(.style-semantic-elements h1) {\n font-size: var(--font-size-4xl);\n font-weight: var(--font-weight-black);\n\n /* \n * Since the Level 1 Heading will typically be the first item inside the App\n * Content container (which already has padding at the top), we remove the top\n * margin by default. We can always add it back for special cases.\n */\n margin-block-start: 0;\n\n .app-content > &:first-of-type {\n margin-block-start: 0;\n }\n}\n\n.heading-2,\n:where(.style-semantic-elements h2) {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n}\n\n.heading-3,\n:where(.style-semantic-elements h3) {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-bold);\n}\n\n.heading-4,\n:where(.style-semantic-elements h4) {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n}\n\n.heading-5,\n:where(.style-semantic-elements h5) {\n font-size: var(--font-size-l);\n font-weight: var(--font-weight-semibold);\n}\n\n.heading-6,\n:where(.style-semantic-elements h6) {\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-bold);\n}\n",".quote,\n:where(.style-semantic-elements blockquote) {\n display: block;\n margin: 0;\n color: var(--color-body-text-alt);\n border-inline-start: 0.25em solid var(--color-gray-transparent);\n padding: var(--space-3xs);\n padding-inline-start: var(--space-xs);\n position: relative;\n line-height: 1.25;\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-normal);\n\n footer {\n margin-block-start: 0.5em;\n font-size: var(--font-size-s);\n font-style: initial;\n color: var(--color-body-text);\n font-weight: var(--font-weight-semibold);\n\n cite {\n font-weight: var(--font-weight-normal);\n font-style: italic;\n }\n }\n}\n","/*\n * Note: for most of the styles applied using `style-semantic-elements`, we use the\n * `:where()` selector to reduce specificity so we can more easily override them.\n * However, this breaks the styling for nested lists, which relies on the specificity\n * of the selectors for each level of nesting being higher than the last. Therefore,\n * we don't use this technique for Lists.\n */\n\n/* Add space between subsequent items and nested lists */\n.list li + li,\n.list .list,\n.style-semantic-elements li + li,\n.style-semantic-elements :is(ol, ul) :is(ol, ul) {\n margin-block-start: var(--space-2xs);\n}\n\n/* Style ordered list markers */\nol.list li::marker,\n.style-semantic-elements ol li::marker {\n color: var(--color-body-text-alt);\n font-size: 0.85em;\n font-family: var(--font-family-heading);\n font-weight: var(--font-weight-semibold);\n line-height: 0;\n}\n\n/* Style unordered list markers */\nul.list li::marker,\n.style-semantic-elements ul li::marker {\n color: var(--color-body-text-alt);\n font-weight: var(--font-weight-bold);\n}\n\n/* Cycle through list marker types in nested lists */\nol.list,\nol.list ol.list ol.list ol.list,\n.style-semantic-elements ol,\n.style-semantic-elements ol ol ol ol {\n list-style: decimal;\n}\n\nol.list ol.list,\nol.list ol.list ol.list ol.list ol.list,\n.style-semantic-elements ol ol,\n.style-semantic-elements ol ol ol ol ol {\n list-style: lower-latin;\n}\n\nol.list ol.list ol.list,\nol.list ol.list ol.list ol.list ol.list ol.list,\n.style-semantic-elements ol ol ol,\n.style-semantic-elements ol ol ol ol ol ol {\n list-style: lower-roman;\n}\n\nul.list,\nul.list ul.list ul.list ul.list,\n.style-semantic-elements ul,\n.style-semantic-elements ul ul ul ul {\n list-style: disc;\n}\n\nul.list ul.list,\nul.list ul.list ul.list ul.list ul.list,\n.style-semantic-elements ul ul,\n.style-semantic-elements ul ul ul ul ul {\n list-style: circle;\n}\n\nul.list ul.list ul.list,\nul.list ul.list ul.list ul.list ul.list ul.list,\n.style-semantic-elements ul ul ul,\n.style-semantic-elements ul ul ul ul ul ul {\n list-style: square;\n}\n\n/* Make the markers a different color for their second appearance in a nested list */\nol.list ol.list ol.list ol.list li::marker,\nul.list ul.list ul.list ul.list li::marker,\n.style-semantic-elements ol ol ol ol li::marker,\n.style-semantic-elements ul ul ul ul li::marker {\n color: var(--color-brand-3);\n}\n","/***********************************\n * Conditionally show/hide content *\n ***********************************/\n\n.js-disabled .if-js-enabled {\n display: none !important;\n}\n\n.js-enabled .if-js-disabled {\n display: none !important;\n}\n\n@media screen and (width < 30rem) {\n /* Narrow viewport */\n :is(.if-medium-viewport, .if-wide-viewport):not(.if-narrow-viewport) {\n display: none !important;\n }\n}\n\n@media screen and (30rem <= width < 55rem) {\n /* Medium viewport */\n :is(.if-narrow-viewport, .if-wide-viewport):not(.if-medium-viewport) {\n display: none !important;\n }\n}\n\n@media screen and (width >= 55rem) {\n /* Wide viewport */\n :is(.if-narrow-viewport, .if-medium-viewport):not(.if-wide-viewport) {\n display: none !important;\n }\n}\n\n/*************************************************\n * Override color mode for a section of the page *\n *************************************************/\n\n.light-mode {\n color-scheme: only light;\n color: var(--color-body-text);\n}\n\n.dark-mode {\n color-scheme: only dark;\n color: var(--color-body-text);\n}\n\n/*****************************************************\n * Make elements invisible, except to screenreaders *\n *****************************************************/\n\n.visually-hidden,\n.app-sidebar-toggle input,\n.skip-link:not(:focus, .static) {\n clip: rect(1px, 1px, 1px, 1px);\n clip-path: inset(50%);\n height: 1px;\n width: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n}\n",".highlight,\n:where(.style-semantic-elements mark) {\n background-color: var(--color-yellow-8);\n color: var(--color-yellow-1);\n print-color-adjust: exact;\n}\n\n.highlight.removed,\n:where(.style-semantic-elements del) {\n background-color: var(--color-red-8);\n color: var(--color-red-1);\n transition: text-decoration-color var(--duration-short) var(--ease-default);\n text-decoration-line: line-through;\n text-decoration-skip-ink: none;\n text-decoration-thickness: var(--border-m);\n text-decoration-color: var(--color-red-4);\n print-color-adjust: exact;\n\n &:hover {\n text-decoration-color: transparent;\n }\n}\n\n.highlight.added,\n:where(.style-semantic-elements ins) {\n background-color: var(--color-green-8);\n color: var(--color-green-1);\n text-decoration-thickness: var(--border-m);\n text-decoration-color: var(--color-green-4);\n text-underline-offset: 0.1em;\n print-color-adjust: exact;\n}\n\n.highlight.target,\n::target-text {\n background-color: var(--color-brand-8);\n color: var(--color-brand-1);\n print-color-adjust: exact;\n}\n","@keyframes skeleton-pulse-light {\n from {\n opacity: 0.14;\n }\n\n to {\n opacity: 0.21;\n }\n}\n\n@keyframes skeleton-pulse-dark {\n from {\n opacity: 0.28;\n }\n\n to {\n opacity: 0.36;\n }\n}\n\n.skeleton,\n.skeleton-controller.loading .skeleton-item {\n animation: skeleton-pulse-light 1s var(--ease-both-subtle) alternate 0s\n infinite !important;\n border-radius: var(--radius-s) !important;\n background-color: var(--color-gray-5) !important;\n border: 0 !important;\n outline: 0 !important;\n box-shadow: none !important;\n pointer-events: none !important;\n color: transparent !important;\n mask-image: none !important;\n background-image: none !important;\n user-select: none !important;\n print-color-adjust: exact;\n\n /*************************************************************\n * Special styles for \"skeletonizing\" specific element types *\n *************************************************************/\n\n /* Make block text take up the full width */\n &.paragraph,\n &.heading {\n inline-size: 100%;\n }\n\n /* For empty text elements, add filler content so it isn't 0 height. */\n &:is(.paragraph, .heading, .chip, .card-title)::before {\n content: \".\";\n }\n\n /* Add a reasonable minimum width to buttons and chips */\n &:is(.button, .chip):empty {\n min-inline-size: 5em;\n }\n\n /* Add a reasonable width to card titles */\n &.card-title {\n inline-size: 40%;\n overflow: hidden;\n }\n\n /* Visually hide contents, but let them take up space so elements don't collapse to 0 height. */\n &::before,\n &::after,\n > * {\n visibility: hidden !important;\n }\n\n @media (prefers-color-scheme: dark) {\n animation-name: skeleton-pulse-dark !important;\n }\n}\n\n.skeleton-controller {\n display: contents;\n}\n","meter.meter {\n appearance: none;\n inline-size: 100%;\n block-size: 1em;\n}\n\n@supports selector(::-moz-meter-bar) {\n meter.meter {\n border-radius: var(--radius-s);\n border: 0;\n display: block;\n inline-size: 100%;\n block-size: 1em;\n box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);\n background: var(--color-gray-9);\n box-sizing: border-box;\n overflow: clip;\n }\n}\n\n.meter::-webkit-meter-bar {\n border-radius: var(--radius-s);\n border: 0;\n display: block;\n inline-size: 100%;\n block-size: 1em;\n box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);\n background: var(--color-gray-9);\n box-sizing: border-box;\n overflow: clip;\n}\n\n.meter::-webkit-meter-optimum-value,\n.meter::-webkit-meter-suboptimum-value,\n.meter::-webkit-meter-even-less-good-value {\n border-radius: var(--radius-s);\n border: var(--border-s) solid transparent;\n box-sizing: border-box;\n background-size: 100vw;\n background-image: linear-gradient(\n to right,\n var(--meter-start-color),\n var(--meter-end-color)\n );\n}\n\n.meter::-webkit-meter-inner-element {\n display: inline-block;\n position: relative;\n}\n\n.meter::-moz-meter-bar {\n border-radius: var(--radius-s);\n border: var(--border-s) solid transparent;\n box-sizing: border-box;\n background-size: 100vw;\n background-image: linear-gradient(\n to right,\n var(--meter-start-color),\n var(--meter-end-color)\n );\n}\n\n.meter::-webkit-meter-optimum-value {\n --meter-start-color: var(--color-green-6);\n --meter-end-color: var(--color-green-4);\n\n border-color: var(--color-green-5);\n}\n\n.meter:-moz-meter-optimum::-moz-meter-bar {\n --meter-start-color: var(--color-green-6);\n --meter-end-color: var(--color-green-4);\n\n border-color: var(--color-green-5);\n}\n\n.meter::-webkit-meter-suboptimum-value {\n --meter-start-color: var(--color-yellow-7);\n --meter-end-color: var(--color-yellow-5);\n\n border-color: var(--color-yellow-6);\n\n @media (prefers-color-scheme: dark) {\n --meter-start-color: var(--color-yellow-6);\n --meter-end-color: var(--color-yellow-4);\n\n border-color: var(--color-yellow-5);\n }\n}\n\n.meter:-moz-meter-sub-optimum::-moz-meter-bar {\n --meter-start-color: var(--color-yellow-7);\n --meter-end-color: var(--color-yellow-5);\n\n border-color: var(--color-yellow-6);\n\n @media (prefers-color-scheme: dark) {\n --meter-start-color: var(--color-yellow-6);\n --meter-end-color: var(--color-yellow-4);\n\n border-color: var(--color-yellow-5);\n }\n}\n\n.meter::-webkit-meter-even-less-good-value {\n --meter-start-color: var(--color-red-6);\n --meter-end-color: var(--color-red-4);\n\n border-color: var(--color-red-5);\n}\n\n.meter:-moz-meter-sub-sub-optimum::-moz-meter-bar {\n --meter-start-color: var(--color-red-6);\n --meter-end-color: var(--color-red-4);\n\n border-color: var(--color-red-5);\n}\n",":root,\n::backdrop,\n.light-mode,\n.dark-mode {\n /* Brand */\n --color-brand-1: light-dark(#08003b, #e9f0ff);\n --color-brand-2: light-dark(#190074, #cad6ff);\n --color-brand-3: light-dark(#290fa3, #9fb0ff);\n --color-brand-4: light-dark(#3c35cb, #7382ff);\n --color-brand-5: light-dark(#545be7, #5961ee);\n --color-brand-6: light-dark(#6f7dff, #4344cf);\n --color-brand-7: light-dark(#93a4ff, #3124b1);\n --color-brand-8: light-dark(#bbc9ff, #230095);\n --color-brand-9: light-dark(#e5edff, #0b004a);\n --color-brand-transparent: light-dark(#545be766, #5961ee80);\n --color-brand-extra-transparent: light-dark(#545be733, #5961ee59);\n\n /* Red */\n --color-red-1: light-dark(#240000, #ffe3dc);\n --color-red-2: light-dark(#4d0000, #ffc3b6);\n --color-red-3: light-dark(#7a0000, #ff8875);\n --color-red-4: light-dark(#a90000, #f45441);\n --color-red-5: light-dark(#cc2a1b, #d33223);\n --color-red-6: light-dark(#f0503d, #b30000);\n --color-red-7: light-dark(#ff7c68, #8d0000);\n --color-red-8: light-dark(#ffb4a5, #6c0000);\n --color-red-9: light-dark(#ffe3dc, #340000);\n --color-red-transparent: light-dark(#cc2a1b66, #d3322380);\n --color-red-extra-transparent: light-dark(#cc2a1b33, #d3322359);\n\n /* Orange */\n --color-orange-1: light-dark(#1c0300, #ffe5d0);\n --color-orange-2: light-dark(#3e1200, #ffc5a0);\n --color-orange-3: light-dark(#632500, #ff9559);\n --color-orange-4: light-dark(#8b3a00, #d97234);\n --color-orange-5: light-dark(#b45100, #ba570d);\n --color-orange-6: light-dark(#d76f04, #9c3b00);\n --color-orange-7: light-dark(#f98f3a, #782700);\n --color-orange-8: light-dark(#ffb87e, #5c1900);\n --color-orange-9: light-dark(#ffe6cc, #2c0400);\n --color-orange-transparent: light-dark(#b4510066, #ba570d80);\n --color-orange-extra-transparent: light-dark(#b4510033, #ba570d59);\n\n /* Yellow */\n --color-yellow-1: light-dark(#140900, #fdf4d5);\n --color-yellow-2: light-dark(#2f1e00, #fadfa6);\n --color-yellow-3: light-dark(#4e3700, #fdd171);\n --color-yellow-4: light-dark(#7a5700, #dfaf3f);\n --color-yellow-5: light-dark(#a57c00, #c69720);\n --color-yellow-6: light-dark(#c89808, #a17807);\n --color-yellow-7: light-dark(#dfb22b, #750);\n --color-yellow-8: light-dark(#efcb72, #4e3700);\n --color-yellow-9: light-dark(#f8edc1, #211500);\n --color-yellow-transparent: light-dark(#a57c0066, #a57c0080);\n --color-yellow-extra-transparent: light-dark(#a57c0033, #a57c0059);\n\n /* Green */\n --color-green-1: light-dark(#011000, #dff4d3);\n --color-green-2: light-dark(#0c2a00, #bbe7a5);\n --color-green-3: light-dark(#1d4600, #8ecb6b);\n --color-green-4: light-dark(#2f6500, #63a736);\n --color-green-5: light-dark(#438500, #498b0f);\n --color-green-6: light-dark(#5fa500, #2e7000);\n --color-green-7: light-dark(#7dc53a, #1c5400);\n --color-green-8: light-dark(#a4e472, #113f00);\n --color-green-9: light-dark(#dafbc4, #011b00);\n --color-green-transparent: light-dark(#43850066, #498b0f80);\n --color-green-extra-transparent: light-dark(#43850033, #498b0f59);\n\n /* Sky */\n --color-sky-1: light-dark(#001011, #c8f6f5);\n --color-sky-2: light-dark(#002a2b, #9ee7e7);\n --color-sky-3: light-dark(#004747, #61c7c8);\n --color-sky-4: light-dark(#006566, #3aa4a5);\n --color-sky-5: light-dark(#008586, #0b8889);\n --color-sky-6: light-dark(#00a7a8, #006d6f);\n --color-sky-7: light-dark(#00c8c9, #005254);\n --color-sky-8: light-dark(#76e2e2, #003e3f);\n --color-sky-9: light-dark(#caf9f8, #001a1b);\n --color-sky-transparent: light-dark(#00858666, #0b888980);\n --color-sky-extra-transparent: light-dark(#00858633, #0b888959);\n\n /* Blue */\n --color-blue-1: light-dark(#00003e, #ddf0ff);\n --color-blue-2: light-dark(#00007a, #b9d9ff);\n --color-blue-3: light-dark(#002b97, #7eb4ff);\n --color-blue-4: light-dark(#004abd, #418dff);\n --color-blue-5: light-dark(#1c69e3, #2370ea);\n --color-blue-6: light-dark(#3988ff, #0053cb);\n --color-blue-7: light-dark(#74adff, #0035ac);\n --color-blue-8: light-dark(#a9cfff, #001a95);\n --color-blue-9: light-dark(#ddf0ff, #005);\n --color-blue-transparent: light-dark(#1c69e366, #2370ea80);\n --color-blue-extra-transparent: light-dark(#1c69e333, #2370ea59);\n\n /* Purple */\n --color-purple-1: light-dark(#170029, #fbe4ff);\n --color-purple-2: light-dark(#370054, #edc4ff);\n --color-purple-3: light-dark(#5a0085, #d88eff);\n --color-purple-4: light-dark(#7819a8, #b864ef);\n --color-purple-5: light-dark(#9640ca, #9c47d1);\n --color-purple-6: light-dark(#b562ea, #8127b3);\n --color-purple-7: light-dark(#ce8dfc, #660095);\n --color-purple-8: light-dark(#e8b6ff, #4f0076);\n --color-purple-9: light-dark(#fbe4ff, #23003a);\n --color-purple-transparent: light-dark(#9640ca66, #9c47d180);\n --color-purple-extra-transparent: light-dark(#9640ca33, #9c47d159);\n\n /* Magenta */\n --color-magenta-1: light-dark(#21000c, #ffe1ef);\n --color-magenta-2: light-dark(#480023, #ffbdd9);\n --color-magenta-3: light-dark(#73003d, #ff7db8);\n --color-magenta-4: light-dark(#9b0058, #ea5096);\n --color-magenta-5: light-dark(#c32775, #ca2f7b);\n --color-magenta-6: light-dark(#e45193, #aa0061);\n --color-magenta-7: light-dark(#fe7cb1, #850048);\n --color-magenta-8: light-dark(#ffadd0, #660035);\n --color-magenta-9: light-dark(#ffe1f0, #300015);\n --color-magenta-transparent: light-dark(#c3277566, #ca2f7b80);\n --color-magenta-extra-transparent: light-dark(#c3277533, #ca2f7b59);\n\n /* Gray */\n --color-gray-1: light-dark(#090b0f, #ebeff3);\n --color-gray-2: light-dark(#202226, #d4d8dc);\n --color-gray-3: light-dark(#383b3f, #b1b4b9);\n --color-gray-4: light-dark(#53555a, #8f9297);\n --color-gray-5: light-dark(#6f7276, #75787c);\n --color-gray-6: light-dark(#8d8f94, #5b5e62);\n --color-gray-7: light-dark(#abaeb3, #424549);\n --color-gray-8: light-dark(#cbced3, #303337);\n --color-gray-9: light-dark(#eceff4, #121417);\n --color-gray-transparent: light-dark(#6f727666, #75787c80);\n --color-gray-extra-transparent: light-dark(#6f727633, #75787c59);\n\n /* Semantic colors */\n --color-body: light-dark(#f9fafc, #14161a);\n --color-body-alt: light-dark(#fff, #010203);\n --color-body-text: light-dark(#030305, #fff);\n --color-body-text-alt: light-dark(#404247, #ccced0);\n --color-body-text-invert: light-dark(#fff, #030305);\n --color-shadow: light-dark(#45484c26, #00000166);\n --color-outline: light-dark(#d8dbe0, #434549);\n\n /* Font sizes */\n --font-size-xs: clamp(0.6944rem, 0.6855rem + 0.0446vw, 0.72rem);\n --font-size-s: clamp(0.8331rem, 0.8099rem + 0.1163vw, 0.9rem);\n --font-size-m: clamp(1rem, 0.9565rem + 0.2174vw, 1.125rem);\n --font-size-l: clamp(1.2rem, 1.1283rem + 0.3587vw, 1.4063rem);\n --font-size-xl: clamp(1.44rem, 1.3293rem + 0.5533vw, 1.7581rem);\n --font-size-2xl: clamp(1.7281rem, 1.5649rem + 0.8163vw, 2.1975rem);\n --font-size-3xl: clamp(2.0738rem, 1.8396rem + 1.1707vw, 2.7469rem);\n --font-size-4xl: clamp(2.4881rem, 2.1594rem + 1.6435vw, 3.4331rem);\n\n /* Font weights */\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-black: 900;\n\n /* Font families */\n --font-family-body:\n \"Avenir Next\", avenir, \"Segoe UI Variable Display\", \"Segoe UI\",\n \"URW Gothic\", source-sans-pro, ui-sans-serif, sans-serif;\n --font-family-heading:\n seravek, \"Gill Sans Nova\", \"Gill Sans MT\", cantarell, \"DejaVu Sans\",\n source-sans-pro, ui-sans-serif, sans-serif;\n --font-family-mono: ui-monospace, \"Cascadia Code\", menlo, hack, monospace;\n\n /* Spacing */\n --space-none: 0;\n --space-3xs: clamp(4px, 3.6528px + 0.1087vw, 5px);\n --space-2xs: clamp(8px, 7.6528px + 0.1087vw, 9px);\n --space-xs: clamp(12px, 11.304px + 0.2174vw, 14px);\n --space-s: clamp(16px, 15.304px + 0.2174vw, 18px);\n --space-m: clamp(24px, 22.9568px + 0.3261vw, 27px);\n --space-l: clamp(32px, 30.608px + 0.4348vw, 36px);\n --space-xl: clamp(48px, 45.9136px + 0.6522vw, 54px);\n --space-2xl: clamp(64px, 61.2176px + 0.8696vw, 72px);\n --space-3xl: clamp(96px, 91.8256px + 1.3043vw, 108px);\n --space-body-x: clamp(20px, 17.5652px + 0.7609vw, 27px);\n --space-body-y: 20px;\n\n /* Radii */\n --radius-none: 0;\n --radius-s: 3px;\n --radius-m: 6px;\n --radius-l: 12px;\n --radius-xl: 24px;\n --radius-2xl: 64px;\n --radius-full: 9999px;\n\n /* Shadows */\n --shadow-none: none;\n --shadow-s: 0 1px 3px -1px var(--color-shadow);\n --shadow-m: 0 1px 7px -1px var(--color-shadow);\n --shadow-l: var(--shadow-s), 0 1px 11px -1px var(--color-shadow);\n --shadow-xl: var(--shadow-m), 0 1px 15px -1px var(--color-shadow);\n\n /* Border widths */\n --border-none: 0;\n --border-s: 1px;\n --border-m: 2px;\n --border-l: 5px;\n --border-xl: 8px;\n\n /* Opacity */\n --opacity-disabled: 0.65;\n\n @media (prefers-color-scheme: dark) {\n --opacity-disabled: 0.5;\n }\n\n /* Easing functions */\n --ease-default: cubic-bezier(0.6, 0.22, 0.45, 0.9);\n --ease-out: cubic-bezier(0.17, 0.84, 0.44, 1);\n --ease-in: cubic-bezier(0.7, 0.1, 0.8, 0.65);\n --ease-both: cubic-bezier(0.65, 0.05, 0.36, 1);\n --ease-both-subtle: cubic-bezier(0.45, 0.12, 0.55, 0.88);\n --ease-spring: cubic-bezier(0.95, -0.55, 0.05, 1.55);\n\n /* Durations */\n --duration-short: 100ms;\n --duration-medium: 150ms;\n --duration-long: 250ms;\n --duration-extra-long: 350ms;\n}\n",".key,\n.skip-link kbd,\n:where(.style-semantic-elements kbd) {\n display: inline;\n padding: 0 0.5ch;\n margin: 0 0.25ch;\n font-size: 0.9em;\n border: var(--border-s) solid var(--color-gray-8);\n border-bottom-width: 3px;\n border-radius: var(--radius-m);\n font-weight: var(--font-weight-semibold);\n font-family: var(--font-family-body);\n background-color: var(--color-gray-9);\n color: var(--color-body-text);\n}\n",".alert,\n.banner {\n display: block;\n font-family: var(--font-family-body);\n font-weight: var(--font-weight-normal);\n position: relative;\n line-height: 1.4;\n\n > * {\n line-height: 1.4;\n }\n}\n\n.alert-title,\n.banner-title {\n font-family: var(--font-family-heading);\n font-weight: var(--font-weight-bold);\n line-height: 1;\n color: var(--alert-border-start-color);\n font-size: 0.85em;\n margin: 0;\n margin-block-end: 0.15em;\n}\n\n.alert,\n.banner-content {\n &::before,\n &::after {\n content: \"\";\n position: absolute;\n inset-block: 0;\n margin-block: auto;\n }\n\n &::before {\n z-index: 2;\n width: 1.15em;\n height: 1.15em;\n mask-repeat: no-repeat;\n mask-size: contain;\n background-color: var(--alert-border-start-color);\n }\n\n &::after {\n z-index: 1;\n width: 1.6em;\n height: 1.6em;\n border-radius: var(--radius-full);\n }\n\n @media print {\n &::before {\n print-color-adjust: exact;\n }\n\n &::after {\n background-color: transparent;\n }\n }\n}\n","/* See utils/base-dialog for more */\n.modal {\n max-height: calc(100svh - 4 * var(--space-body-y));\n max-width: calc(100svw - 4 * var(--space-body-x));\n margin: auto;\n\n &.small {\n width: 25rem;\n }\n\n &.medium {\n width: 40rem;\n }\n\n &.large {\n width: 55rem;\n }\n}\n\n.modal-footer {\n padding: var(--space-xs);\n flex-shrink: 0;\n display: flex;\n gap: var(--space-2xs);\n justify-content: flex-start;\n background-color: var(--color-body);\n border-block-start: var(--border-s) solid var(--color-outline);\n margin: 0;\n\n @media screen and (width < 30rem) {\n flex-direction: column;\n width: 100%;\n justify-content: stretch;\n }\n\n .button:not(.small, .medium, .large) {\n font-size: 0.9rem;\n }\n}\n",".link,\n.card-title[href],\n:where(.style-semantic-elements a) {\n color: var(--color-sky-4);\n font-weight: var(--font-weight-semibold);\n text-decoration-line: underline;\n text-decoration-color: var(--color-sky-transparent);\n text-decoration-skip-ink: all;\n text-decoration-thickness: 0.1em;\n text-underline-offset: 0.1em;\n cursor: pointer;\n transition: text-decoration-color var(--duration-short) var(--ease-default);\n\n &:is(:hover, .hover) {\n text-decoration-color: currentcolor;\n }\n\n &:focus-visible {\n outline-offset: 1px;\n }\n}\n\n/* External and Download icons */\na[target=\"_blank\"]:is(.link, .button, .app-sidebar-item):not(.no-external-icon),\n:where(.style-semantic-elements a[target=\"_blank\"]:not(.no-external-icon)),\na[download]:is(.link, .button, .app-sidebar-item):not(.no-download-icon),\n:where(.style-semantic-elements a[download]:not(.no-download-icon)) {\n &::after {\n content: \"\";\n print-color-adjust: exact;\n mask-size: contain;\n mask-repeat: no-repeat;\n background-color: var(--color-gray-5);\n display: inline-block;\n vertical-align: baseline;\n margin-inline-start: 0.25em;\n transition: background-color var(--duration-short) var(--ease-default);\n }\n\n &:hover::after {\n background-color: var(--color-gray-4);\n }\n\n &.button::after {\n background-color: currentcolor !important;\n margin-inline-start: initial;\n }\n\n /* External icon */\n &[target=\"_blank\"] {\n &::after {\n mask-image: url(\"@/src/svg/external.svg\");\n height: 0.85em;\n width: 0.85em;\n transform: translateY(9%);\n }\n\n &.button::after {\n transform: translateY(2%);\n }\n }\n\n /* Download icon */\n &[download] {\n &::after {\n mask-image: url(\"@/src/svg/download.svg\");\n height: 0.95em;\n width: 0.95em;\n transform: translateY(7%);\n }\n\n &.button::after {\n transform: translateY(-5%);\n }\n }\n}\n",".skip-link {\n position: fixed;\n display: inline-block;\n z-index: 100;\n top: var(--space-body-y);\n left: var(--space-body-x);\n background-color: var(--color-brand-5);\n padding: var(--space-xs);\n border-radius: var(--radius-m);\n border: 0.25em solid var(--color-brand-4);\n color: white;\n font-weight: var(--font-weight-bold);\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n outline: 0;\n box-shadow:\n var(--shadow-l),\n 0 0 0 0.2em var(--color-brand-transparent);\n text-decoration: none;\n vertical-align: middle;\n opacity: 0.25;\n transition: opacity var(--duration-medium) var(--ease-default);\n pointer-events: none;\n line-height: 1;\n\n kbd {\n margin-inline-start: var(--space-2xs) !important;\n font-weight: initial;\n border: 0 !important;\n background-color: var(--color-brand-4) !important;\n color: inherit !important;\n font-size: 1.2em !important;\n }\n\n &:focus,\n &.static {\n opacity: 1;\n }\n\n &.static {\n position: static;\n pointer-events: unset;\n }\n}\n",".modal::backdrop,\n.drawer::backdrop {\n --dialog-backdrop-starting-opacity: 0;\n --dialog-backdrop-open-opacity: 0.75;\n --dialog-backdrop-ending-opacity: 0;\n --dialog-backdrop-color: light-dark(var(--color-gray-2), var(--color-gray-8));\n\n @media (prefers-color-scheme: dark) {\n --dialog-backdrop-open-opacity: 0.85;\n }\n\n background-color: var(--dialog-backdrop-color);\n}\n\n.modal,\n.drawer {\n --dialog-starting-opacity: 1;\n --dialog-starting-transform: translateY(8px);\n --dialog-open-opacity: 1;\n --dialog-open-transform: translate(0);\n --dialog-ending-opacity: 0;\n --dialog-ending-transform: scale(0.97);\n\n @media (prefers-reduced-motion) {\n --dialog-starting-transform: translate(0);\n --dialog-ending-transform: translate(0);\n }\n\n box-shadow: var(--shadow-xl);\n border: var(--border-s) solid var(--color-outline);\n border-radius: var(--radius-l);\n background-color: var(--color-body-alt);\n color: var(--color-body-text);\n padding: 0;\n flex-direction: column;\n gap: 0;\n\n &[open] {\n display: flex;\n }\n}\n\n.modal-header,\n.drawer-header {\n font-family: var(--font-family-heading);\n font-size: var(--font-size-l);\n font-weight: var(--font-weight-bold);\n line-height: 1;\n padding: var(--space-m);\n padding-block-end: var(--space-2xs);\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--color-brand-3);\n margin: 0;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n color: inherit;\n font-size: inherit;\n font-weight: inherit;\n margin: 0;\n }\n\n .button.dismiss {\n --button-fg-color: var(--color-brand-3);\n --button-hover-bg-color: var(--color-brand-extra-transparent);\n\n font-size: 0.8rem;\n width: 2.25rem;\n height: 2.25rem;\n margin: -0.5rem;\n padding: 0.25rem;\n border-radius: var(--radius-full);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-brand-transparent);\n }\n }\n}\n\n.modal-body,\n.drawer-body {\n padding: var(--space-m);\n padding-block-start: var(--space-xs);\n flex-shrink: 1;\n display: block;\n overflow: auto;\n margin: 0;\n}\n\n@supports (transition-behavior: allow-discrete) and (overlay: none) {\n .modal,\n .drawer {\n animation: unset;\n }\n}\n\n/* Fade in/out (mixed browser support as of March 2025) */\n:is(.modal, .drawer)[open] {\n display: flex;\n transform: var(--dialog-open-transform);\n opacity: var(--dialog-open-opacity);\n}\n\n:is(.modal, .drawer)[open]::backdrop {\n opacity: var(--dialog-backdrop-open-opacity);\n}\n\n:is(.modal, .drawer),\n:is(.modal, .drawer)::backdrop {\n transition-property: transform, opacity, display, overlay;\n transition-duration: var(--duration-long);\n transition-behavior: allow-discrete;\n}\n\n:is(.modal, .drawer) {\n transform: var(--dialog-ending-transform);\n opacity: var(--dialog-ending-opacity);\n transition-timing-function: var(--ease-out);\n}\n\n:is(.modal, .drawer)::backdrop {\n opacity: var(--dialog-backdrop-ending-opacity);\n transition-timing-function: var(--ease-default);\n}\n\n@starting-style {\n :is(.modal, .drawer)[open] {\n transform: var(--dialog-starting-transform);\n opacity: var(--dialog-starting-opacity);\n }\n\n :is(.modal, .drawer)[open]::backdrop {\n opacity: var(--dialog-backdrop-starting-opacity);\n }\n}\n\n/* End fade in/out styles */\n",".button.dismiss {\n --button-fg-color: var(--color-body-text);\n --button-bg-color: transparent;\n --button-border-color: transparent;\n --button-hover-bg-color: var(--color-gray-extra-transparent);\n --button-focus-ring-color: transparent;\n --button-shadow: none;\n\n font-size: 0.75rem;\n width: 3em;\n height: 3em;\n border-radius: var(--radius-m);\n min-width: 0;\n min-height: 0;\n aspect-ratio: 1;\n padding: 0.3em;\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-gray-transparent);\n --button-hover-bg-color: transparent;\n }\n\n /* Don't use pseudo element for hover style */\n &::before {\n content: unset;\n }\n\n &:is(:hover, .hover) {\n background-color: var(--button-hover-bg-color);\n }\n\n &::after {\n content: \"\";\n width: 1.8em;\n height: 1.8em;\n mask-image: url(\"@/src/svg/x.svg\");\n mask-size: contain;\n mask-repeat: no-repeat;\n background-color: currentcolor;\n }\n}\n","/* stylelint-disable declaration-block-no-redundant-longhand-properties -- text-decoration shorthand doesn't work properly for Safari */\n\n.abbreviation,\n:where(.style-semantic-elements abbr[title]) {\n display: inline;\n text-decoration-line: underline;\n text-decoration-style: dotted;\n text-decoration-thickness: var(--border-m);\n text-decoration-color: var(--color-gray-6);\n text-underline-offset: 0.1em;\n}\n",".accordion {\n width: 100%;\n\n details {\n width: 100%;\n background-color: var(--color-body-alt);\n padding-block: 0;\n padding-inline: var(--space-xs);\n border-radius: var(--radius-m);\n border: var(--border-s) solid var(--color-outline);\n box-shadow: var(--shadow-s);\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-normal);\n\n @media (prefers-reduced-motion: no-preference) {\n transition: padding var(--duration-long) var(--ease-out);\n interpolate-size: allow-keywords;\n }\n\n & + details {\n border-block-start: 0;\n }\n\n &:not(:first-of-type) {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n }\n\n &:not(:last-of-type) {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n }\n\n &::details-content {\n opacity: 0;\n block-size: 0;\n overflow-y: clip;\n transition-property: content-visibility, opacity, block-size;\n transition-duration: var(--duration-long);\n transition-timing-function: var(--ease-out);\n transition-behavior: allow-discrete;\n }\n\n &[open] {\n padding-block-end: var(--space-xs);\n\n &::details-content {\n opacity: 1;\n block-size: auto;\n }\n\n summary {\n border-block-end-color: var(--color-outline);\n margin-block-end: var(--space-xs);\n\n &::before {\n rotate: 0deg;\n }\n\n &:not(:active, .active, :hover, .hover) {\n color: var(--color-brand-3);\n }\n }\n }\n }\n\n summary {\n font-family: var(--font-family-heading);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-bold);\n line-height: 1;\n cursor: pointer;\n border-block-end: var(--border-s) dashed transparent;\n padding: var(--space-xs);\n padding-inline-start: calc(var(--space-xs) + 1em);\n margin-block: 0;\n margin-inline: calc(-1 * var(--space-xs));\n transition-duration: var(--duration-short);\n transition-property: color, border-color;\n transition-timing-function: var(--ease-default);\n position: relative;\n list-style: none; /* Hides ::marker pseudo element in favor of ::before (better cross browser consistency) */\n color: var(--color-body-text);\n user-select: none;\n\n @media (prefers-reduced-motion: no-preference) {\n transition-property: color, border-color, padding, margin;\n }\n\n &:is(:hover, .hover) {\n color: light-dark(var(--color-brand-4), var(--color-brand-2));\n }\n\n &:is(:active, .active) {\n color: light-dark(var(--color-brand-2), var(--color-brand-4));\n }\n\n /* Hides ::-webkit-details-marker pseudo element in favor of ::before (better cross browser consistency) */\n &::-webkit-details-marker {\n display: none;\n }\n\n /* Replacement marker element */\n &::before {\n content: \"\";\n background-color: var(--color-body-text-alt);\n mask-image: url(\"@/src/svg/dropdown-thick.svg\");\n mask-position: center;\n mask-size: contain;\n mask-repeat: no-repeat;\n display: inline-block;\n position: absolute;\n inset-block: 0;\n inset-inline-start: calc(var(--space-xs) / 2);\n margin: auto;\n width: 1em;\n height: 1em;\n rotate: -90deg;\n transition: rotate var(--duration-long) var(--ease-spring);\n }\n\n &:dir(rtl)::before {\n rotate: 90deg;\n }\n\n @media (prefers-reduced-motion) {\n transition-property: color, border-color;\n\n &::before {\n transition: none;\n }\n }\n }\n\n &.subtle {\n details {\n box-shadow: none;\n border: 0;\n background-color: transparent;\n padding-inline-start: calc(var(--space-xs) + 1em);\n\n &[open] summary {\n margin-block-end: var(--space-3xs);\n }\n }\n\n summary {\n border-block-end: 0;\n padding-block: var(--space-2xs);\n margin-inline-start: calc(-1 * (var(--space-xs) + 1em));\n }\n }\n}\n",".alert {\n font-size: var(--font-size-m);\n color: var(--color-body-text);\n border: var(--border-m) solid transparent;\n border-radius: var(--radius-s);\n border-start-start-radius: calc(var(--space-2xs) + 2em);\n border-end-start-radius: calc(var(--space-2xs) + 2em);\n padding: var(--space-2xs);\n padding-inline-start: calc(var(--space-2xs) + 2em);\n background:\n linear-gradient(var(--alert-bg-color), var(--alert-bg-color)) padding-box,\n linear-gradient(\n to right,\n var(--alert-border-start-color),\n var(--alert-border-end-color)\n )\n border-box;\n\n @media print {\n & {\n border-color: var(--alert-border-start-color);\n }\n }\n\n &.error {\n --alert-bg-color: var(--color-red-9);\n --alert-border-start-color: var(--color-red-5);\n --alert-border-end-color: var(--color-red-6);\n --alert-icon: url(\"@/src/svg/x-thick.svg\");\n }\n\n &.warning {\n --alert-bg-color: var(--color-yellow-9);\n --alert-border-start-color: var(--color-yellow-5);\n --alert-border-end-color: var(--color-yellow-6);\n --alert-icon: url(\"@/src/svg/warning-thick.svg\");\n }\n\n &.success {\n --alert-bg-color: var(--color-green-9);\n --alert-border-start-color: var(--color-green-5);\n --alert-border-end-color: var(--color-green-6);\n --alert-icon: url(\"@/src/svg/check-thick.svg\");\n }\n\n &.info {\n --alert-bg-color: var(--color-sky-9);\n --alert-border-start-color: var(--color-sky-5);\n --alert-border-end-color: var(--color-sky-6);\n --alert-icon: url(\"@/src/svg/info-thick.svg\");\n }\n\n &::before {\n inset-inline-start: calc(var(--space-2xs) * 0.5 + 0.375em);\n mask-image: var(--alert-icon);\n background-color: var(--alert-border-start-color);\n }\n\n &::after {\n inset-inline-start: calc(var(--space-2xs) * 0.5 + 0.15em);\n background-color: var(--color-body-alt);\n border: var(--border-m) solid var(--alert-border-start-color);\n }\n}\n",".app {\n /* The app is designed to take up the entire width of the page. However, we\n * set a global limit on the overall width of its content for UX and aesthetic\n * reasons. The wrapper elements of the page will always extend to the edge of\n * the screen, but all content within them will be kept within this limit and\n * centered.\n */\n --app-max-content-width: 110rem;\n --app-header-height: clamp(50px, 3.8rem, 100px);\n --app-sidebar-width: clamp(300px, 18rem, 450px);\n\n position: relative;\n width: 100%;\n min-height: 100svh;\n display: flex;\n flex-direction: column;\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n}\n\n.app-header {\n height: var(--app-header-height);\n width: 100%;\n color: var(--color-brand-3);\n background-color: var(--color-body-alt);\n border-bottom: var(--border-l) solid var(--color-brand-transparent);\n box-shadow: var(--shadow-s);\n flex: none;\n position: sticky;\n left: 0;\n}\n\n.app-header-content {\n height: 100%;\n width: 100%;\n max-width: var(--app-max-content-width);\n margin-inline: auto;\n padding-inline: calc(var(--space-body-x) - var(--space-xs));\n padding-block: 6px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-s);\n}\n\n.app-header-section {\n margin: 0;\n height: 100%;\n display: flex;\n align-items: center;\n\n /* If header only has 1 section, center it */\n &:only-child {\n margin-inline: auto;\n }\n\n /* Otherwise, align the first to the left and the rest to the right */\n &:first-child {\n margin-inline-end: auto;\n }\n\n /* Put a spacer between consecutive right-aligned sections (3rd onward) */\n &:nth-child(n + 3)::before {\n content: \"\";\n background-color: var(--color-outline);\n height: 2rem;\n width: var(--border-s);\n position: relative;\n right: calc(var(--space-s) / 2);\n }\n}\n\n.app-header-item {\n height: 100%;\n cursor: pointer;\n text-decoration: none;\n color: inherit;\n transition-property: color, background-color;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n display: flex;\n align-items: center;\n position: relative;\n font-size: 1rem;\n font-weight: var(--font-weight-semibold);\n padding-inline: var(--space-xs);\n border-radius: var(--radius-m);\n\n &:hover {\n background-color: var(--color-brand-extra-transparent);\n }\n\n &:active {\n background-color: var(--color-brand-transparent);\n }\n\n &:focus-visible {\n background-color: var(--color-brand-extra-transparent);\n outline-offset: calc(-1 * var(--border-m));\n }\n\n &:is([aria-current], .current) {\n font-weight: var(--font-weight-bold);\n\n &::after {\n opacity: 1;\n }\n }\n\n &::after {\n content: \"\";\n position: absolute;\n width: 100%;\n height: var(--border-l);\n bottom: calc(-1 * (var(--border-l) + 6px));\n left: 0;\n background-color: currentcolor;\n opacity: 0;\n border-radius: 1px;\n }\n}\n\n.app-icon {\n background-color: var(--color-brand-3);\n height: 2rem;\n width: 2rem;\n border: var(--border-m) solid transparent;\n border-radius: var(--radius-full);\n}\n\n.app-title-separator {\n content: \"\";\n background-color: var(--color-brand-transparent);\n width: var(--border-m);\n height: 1.5rem;\n rotate: 22deg;\n margin-inline: var(--space-2xs);\n position: relative;\n left: 1px;\n}\n\n.app-title {\n font-family: var(--font-family-heading);\n font-size: 1.2rem;\n display: flex;\n align-items: center;\n}\n\n.app-body {\n position: relative;\n width: 100%;\n max-width: var(--app-max-content-width);\n margin-inline: auto;\n flex: none;\n display: flex;\n flex-direction: row;\n}\n\n.app-sidebar {\n transition-property: opacity, display;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n transition-behavior: allow-discrete;\n width: var(--app-sidebar-width);\n flex: none;\n opacity: 1;\n border-inline-end: var(--border-s) dashed var(--color-outline);\n}\n\n.app-sidebar-content {\n position: sticky;\n top: 0;\n overflow: auto;\n height: 100dvh;\n}\n\n.app-sidebar-section {\n &:first-of-type {\n margin-block-start: var(--space-body-y);\n }\n\n &:not(:last-of-type) {\n margin-block-end: var(--space-xs);\n }\n\n &:last-of-type {\n margin-block-end: var(--space-body-y);\n }\n}\n\n.app-sidebar-heading {\n font-size: 1.2rem;\n margin: 0 var(--space-body-x) var(--space-3xs);\n font-family: var(--font-family-heading);\n font-weight: var(--font-weight-semibold);\n}\n\n.app-sidebar-item {\n display: block;\n margin: 0 var(--space-2xs);\n padding: var(--space-2xs) calc(var(--space-body-x) - var(--space-2xs));\n border-radius: var(--radius-l);\n color: var(--color-body-text-alt);\n text-decoration: none;\n font-weight: var(--font-weight-normal);\n font-size: 1rem;\n user-select: none;\n transition-property: color, background-color, box-shadow;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n\n &:hover {\n background-color: var(--color-brand-extra-transparent);\n }\n\n &:active {\n color: var(--color-brand-1);\n }\n\n &:is([aria-current], .current) {\n color: var(--color-brand-4);\n font-weight: var(--font-weight-bold);\n }\n\n &:hover:active {\n background-color: var(--color-brand-transparent);\n }\n\n &:focus-visible {\n outline-offset: 0;\n background-color: var(--color-brand-extra-transparent);\n }\n}\n\n.app-sidebar-toggle {\n width: 2.75rem;\n\n &:has(input:focus-visible) {\n background-color: var(--color-brand-extra-transparent);\n outline: var(--border-m) solid var(--color-brand-5);\n outline-offset: calc(-1 * var(--border-m));\n }\n\n /* Style the 3 lines inside the button */\n > div {\n transition-property: transform, opacity;\n transition-duration: var(--duration-long);\n transition-timing-function: var(--ease-out);\n position: absolute;\n width: 1.75rem;\n height: 2px;\n border-radius: 2px;\n background-color: currentcolor;\n opacity: 1;\n top: 50%;\n left: 50%;\n\n &:nth-of-type(1) {\n transform: translateY(calc(-50% - 0.45rem)) translateX(-50%);\n }\n\n &:nth-of-type(2) {\n transform: translateY(-50%) translateX(-50%);\n }\n\n &:nth-of-type(3) {\n transform: translateY(calc(-50% + 0.45rem)) translateX(-50%);\n }\n }\n\n /* When the sidebar is visible, turn the 3 lines into an X */\n &:has(input:checked) > div {\n &:nth-of-type(1) {\n transform: translateY(-50%) translateX(-50%) rotate(45deg);\n }\n\n &:nth-of-type(2) {\n opacity: 0;\n transform: translateY(-50%) translateX(-50%) rotate3d(0, 1, 0, 90deg);\n }\n\n &:nth-of-type(3) {\n transform: translateY(-50%) translateX(-50%) rotate(-45deg);\n }\n }\n}\n\n.app-content {\n width: 100%;\n padding: var(--space-body-y) var(--space-body-x);\n position: relative;\n}\n\n/* If there's a sidebar, shrink the content area to accommodate it */\n.app-sidebar ~ .app-content {\n width: calc(100% - var(--app-sidebar-width));\n}\n\n.app-header-section:has(.app-sidebar-toggle) {\n display: none;\n}\n\n@media (width < 55rem) {\n /* \n * If there's a sidebar, DON'T factor its width into the content width since\n * the sidebar now has `position: fixed`. This only applies to pages with a\n * sidebar; without one, app-content's width is already 100%.\n */\n .app-sidebar ~ .app-content {\n width: 100%;\n }\n\n .app-sidebar {\n position: fixed;\n top: var(--app-header-height);\n left: 0;\n width: 100vw;\n opacity: 1;\n background-color: light-dark(#fffc, #000a);\n backdrop-filter: blur(24px) saturate(120%);\n border-right: 0;\n z-index: 9;\n\n &::after {\n content: initial;\n }\n }\n\n .app-header-section:has(.app-sidebar-toggle) {\n display: flex;\n }\n\n .app-sidebar-content {\n height: calc(100dvh - var(--app-header-height));\n }\n\n .app:not(:has(.app-sidebar-toggle input:checked)) .app-sidebar {\n opacity: 0;\n display: none;\n }\n\n /* If sidebar is open, temporarily hide the overflow and any site-wide banners */\n .app:has(.app-sidebar-toggle input:checked) {\n overflow: hidden;\n\n > .banner {\n display: none;\n }\n\n .app-header {\n position: fixed;\n top: 0;\n z-index: 10;\n }\n\n .app-content {\n top: var(--app-header-height);\n }\n }\n}\n\n.app:has(dialog:modal) {\n /* \n * If modal is open, hide the overflow. This prevents the user from scrolling\n * the page down by dragging on the header, which they'd have no way to undo.\n */\n overflow: hidden;\n}\n\n@starting-style {\n .app > .sidebar {\n opacity: 0;\n }\n}\n",".banner {\n font-size: 1rem;\n color: var(--color-body-text-invert);\n border-block: var(--border-m) solid var(--banner-secondary-color);\n width: 100%;\n background-color: var(--banner-bg-color);\n\n &.error {\n --banner-bg-color: var(--color-red-4);\n --banner-secondary-color: var(--color-red-5);\n --banner-icon: url(\"@/src/svg/x-thick.svg\");\n }\n\n &.warning {\n --banner-bg-color: var(--color-yellow-4);\n --banner-secondary-color: var(--color-yellow-5);\n --banner-icon: url(\"@/src/svg/warning-thick.svg\");\n }\n\n &.success {\n --banner-bg-color: var(--color-green-4);\n --banner-secondary-color: var(--color-green-5);\n --banner-icon: url(\"@/src/svg/check-thick.svg\");\n }\n\n &.info {\n --banner-bg-color: var(--color-sky-4);\n --banner-secondary-color: var(--color-sky-5);\n --banner-icon: url(\"@/src/svg/info-thick.svg\");\n }\n\n .link {\n color: var(--color-body-text-invert);\n text-decoration-color: rgb(from var(--color-body-text-invert) r g b / 40%);\n }\n\n &:has(.button.dismiss) .banner-content {\n padding-inline-end: calc(var(--space-body-x) + 2em);\n }\n\n & + & {\n border-block-start-width: 0;\n }\n\n .button.dismiss {\n --button-fg-color: currentcolor;\n --button-hover-bg-color: var(--banner-secondary-color);\n\n position: absolute;\n inset-block: 0;\n inset-inline-end: calc(var(--space-body-x) * 0.5);\n margin: auto;\n font-size: 0.67em;\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--banner-secondary-color);\n --button-border-color: currentcolor;\n }\n }\n}\n\n.banner-content {\n position: relative;\n max-width: var(--app-max-content-width);\n margin-inline: auto;\n padding: var(--space-2xs) var(--space-body-x);\n padding-inline-start: calc(var(--space-body-x) + 2em);\n\n &::before {\n inset-inline-start: calc(var(--space-body-x) * 0.5 + 0.375em);\n mask-image: var(--banner-icon);\n background-color: var(--banner-secondary-color);\n }\n\n &::after {\n inset-inline-start: calc(var(--space-body-x) * 0.5 + 0.15em);\n background-color: currentcolor;\n border: var(--border-m) solid var(--banner-secondary-color);\n }\n}\n",".button {\n --button-fg-color: var(--color-body-text);\n --button-bg-color: var(--color-gray-9);\n --button-border-color: var(--color-gray-8);\n --button-font-weight: var(--font-weight-normal);\n --button-focus-ring-color: var(--color-gray-extra-transparent);\n --button-shadow: var(--shadow-s);\n --button-hover-bg-color: var(--button-border-color);\n\n box-sizing: border-box;\n display: inline-flex;\n outline: 0;\n padding-inline: 1.25em;\n padding-block: 0.75em;\n gap: 0.625em;\n border-style: solid;\n transform: scale(1);\n transition-property:\n box-shadow, background-color, border-color, transform, opacity;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n text-decoration: none;\n position: relative;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n cursor: pointer;\n border-width: var(--border-s);\n border-radius: var(--radius-m);\n min-height: 2.6em;\n min-width: 3em;\n line-height: 1;\n font-family: var(--font-family-body);\n box-shadow: var(--button-shadow);\n user-select: none;\n font-size: 1rem;\n color: var(--button-fg-color);\n background-color: var(--button-bg-color);\n border-color: var(--button-border-color);\n font-weight: var(--button-font-weight);\n\n &::before {\n content: \"\";\n background-color: var(--button-hover-bg-color);\n position: absolute;\n inset: 0;\n margin: auto;\n transition-property: opacity, width, height, border-radius;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n z-index: -1;\n border-radius: 2em;\n width: 4em;\n height: 4em;\n opacity: 0;\n }\n\n &:is(:focus-visible, .focus) {\n box-shadow:\n var(--button-shadow),\n 0 0 0 0.1em var(--button-border-color),\n 0 0 0 calc(0.2em + var(--border-s)) var(--button-focus-ring-color);\n }\n\n &:is(:active, .active) {\n transform: scale(0.98);\n\n /*\n * On low-resolution screens, the scale effect makes text jump\n * around awkwardly, so we use an alternative.\n */\n @media screen and (resolution < 2x) {\n transform: translateY(1px);\n }\n }\n\n &:is(:hover, .hover) {\n text-decoration: none;\n\n &::before {\n opacity: 1;\n width: 100%;\n height: 100%;\n border-radius: 5px;\n }\n\n /* inputs don't support children, so the ::before pseudo element won't work */\n &:is(input) {\n background-color: var(--button-hover-bg-color);\n }\n }\n\n &.primary {\n --button-fg-color: white;\n --button-bg-color: var(--color-brand-5);\n --button-border-color: var(--color-brand-4);\n --button-font-weight: var(--font-weight-bold);\n --button-focus-ring-color: var(--color-brand-transparent);\n\n &.red {\n --button-bg-color: var(--color-red-5);\n --button-border-color: var(--color-red-4);\n --button-focus-ring-color: var(--color-red-transparent);\n }\n\n &.orange {\n --button-bg-color: var(--color-orange-5);\n --button-border-color: var(--color-orange-4);\n --button-focus-ring-color: var(--color-orange-transparent);\n }\n\n &.yellow {\n --button-bg-color: var(--color-yellow-5);\n --button-border-color: var(--color-yellow-4);\n --button-focus-ring-color: var(--color-yellow-transparent);\n }\n\n &.green {\n --button-bg-color: var(--color-green-5);\n --button-border-color: var(--color-green-4);\n --button-focus-ring-color: var(--color-green-transparent);\n }\n\n &.sky {\n --button-bg-color: var(--color-sky-5);\n --button-border-color: var(--color-sky-4);\n --button-focus-ring-color: var(--color-sky-transparent);\n }\n\n &.blue {\n --button-bg-color: var(--color-blue-5);\n --button-border-color: var(--color-blue-4);\n --button-focus-ring-color: var(--color-blue-transparent);\n }\n\n &.purple {\n --button-bg-color: var(--color-purple-5);\n --button-border-color: var(--color-purple-4);\n --button-focus-ring-color: var(--color-purple-transparent);\n }\n\n &.magenta {\n --button-bg-color: var(--color-magenta-5);\n --button-border-color: var(--color-magenta-4);\n --button-focus-ring-color: var(--color-magenta-transparent);\n }\n\n &.gray {\n --button-bg-color: var(--color-gray-5);\n --button-border-color: var(--color-gray-4);\n --button-focus-ring-color: var(--color-gray-transparent);\n }\n\n &.black {\n --button-bg-color: black;\n --button-border-color: #3d3d3d;\n --button-focus-ring-color: var(--color-gray-transparent);\n }\n\n &.white {\n --button-fg-color: black;\n --button-bg-color: white;\n --button-border-color: #d0d0d0;\n --button-focus-ring-color: var(--color-gray-transparent);\n }\n }\n\n &.tertiary {\n --button-fg-color: var(--color-brand-4);\n --button-bg-color: transparent;\n --button-border-color: transparent;\n --button-hover-bg-color: var(--color-brand-extra-transparent);\n --button-font-weight: var(--font-weight-bold);\n --button-focus-ring-color: transparent;\n --button-shadow: none;\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-brand-transparent);\n --button-hover-bg-color: transparent;\n }\n\n &.red {\n --button-fg-color: var(--color-red-4);\n --button-hover-bg-color: var(--color-red-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-red-transparent);\n }\n }\n\n &.orange {\n --button-fg-color: var(--color-orange-4);\n --button-hover-bg-color: var(--color-orange-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-orange-transparent);\n }\n }\n\n &.yellow {\n --button-fg-color: var(--color-yellow-4);\n --button-hover-bg-color: var(--color-yellow-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-yellow-transparent);\n }\n }\n\n &.green {\n --button-fg-color: var(--color-green-4);\n --button-hover-bg-color: var(--color-green-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-green-transparent);\n }\n }\n\n &.sky {\n --button-fg-color: var(--color-sky-4);\n --button-hover-bg-color: var(--color-sky-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-sky-transparent);\n }\n }\n\n &.blue {\n --button-fg-color: var(--color-blue-4);\n --button-hover-bg-color: var(--color-blue-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-blue-transparent);\n }\n }\n\n &.purple {\n --button-fg-color: var(--color-purple-4);\n --button-hover-bg-color: var(--color-purple-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-purple-transparent);\n }\n }\n\n &.magenta {\n --button-fg-color: var(--color-magenta-4);\n --button-hover-bg-color: var(--color-magenta-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-magenta-transparent);\n }\n }\n\n &.gray,\n &.black,\n &.white {\n --button-hover-bg-color: var(--color-gray-extra-transparent);\n\n &:is(:focus-visible, .focus) {\n --button-bg-color: var(--color-gray-transparent);\n }\n }\n\n &.gray {\n --button-fg-color: var(--color-gray-4);\n }\n\n &.black {\n --button-fg-color: black;\n }\n\n &.white {\n --button-fg-color: white;\n }\n }\n\n &.small {\n font-size: 0.8rem;\n }\n\n &.large {\n font-size: 1.2rem;\n }\n\n &.icon {\n border-radius: var(--radius-full);\n min-width: 0;\n min-height: 0;\n aspect-ratio: 1;\n padding: 0.5em;\n\n /* Tertiary icon buttons use normal pseudo element hover effect */\n &.tertiary {\n &::before {\n width: 75%;\n height: 75%;\n }\n\n &:is(:hover, .hover)::before {\n width: 100%;\n height: 100%;\n border-radius: 100%;\n }\n }\n\n /* Normal icon buttons just change background color */\n &:not(.tertiary) {\n &::before {\n content: unset;\n }\n\n &:is(:hover, .hover) {\n background-color: var(--button-hover-bg-color);\n }\n }\n }\n\n &:is(:disabled, .disabled, [aria-disabled=\"true\"]) {\n opacity: var(--opacity-disabled);\n cursor: not-allowed;\n transform: scale(1);\n\n &:is(:hover, .hover)::before {\n opacity: 0;\n }\n }\n\n &.loading {\n cursor: progress;\n\n &::before {\n opacity: 1 !important;\n height: 100% !important;\n border-radius: inherit !important;\n animation: button-loading-bg 1200ms var(--ease-both-subtle) infinite\n forwards;\n }\n\n &:is(:disabled, .disabled, [aria-disabled=\"true\"]) {\n cursor: wait;\n }\n }\n}\n\n@keyframes button-loading-bg {\n 0% {\n width: 0;\n margin: 0 auto 0 0;\n }\n\n 50% {\n width: 100%;\n }\n\n 100% {\n width: 0;\n margin: 0 0 0 auto;\n }\n}\n",".chip {\n --chip-fg-color: white;\n --chip-bg-color: var(--color-brand-6);\n --chip-border-color: var(--color-brand-5);\n --chip-focus-color: var(--color-brand-transparent);\n\n display: inline-flex;\n align-items: center;\n border-radius: var(--radius-full);\n font-size: var(--font-size-s);\n font-family: var(--font-family-body);\n font-weight: var(--font-weight-normal);\n padding-block: var(--space-3xs);\n padding-inline: var(--space-xs);\n background-color: var(--chip-bg-color);\n border: var(--border-s) solid var(--chip-border-color);\n color: var(--chip-fg-color);\n flex-shrink: 0;\n cursor: default;\n transition-property: box-shadow, background-color, border-color, transform;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n text-decoration: none;\n appearance: none;\n line-height: 1.2;\n\n &.clickable {\n cursor: pointer;\n box-shadow: var(--shadow-s);\n transform: scale(1);\n\n &:is(:focus-visible, .focus) {\n outline: 0;\n box-shadow:\n var(--shadow-s),\n 0 0 0 0.1em var(--chip-border-color),\n 0 0 0 calc(0.2em + var(--border-s)) var(--chip-focus-color);\n }\n\n &:is(:hover, .hover) {\n background-color: var(--chip-border-color);\n }\n\n &:is(:active, .active) {\n transform: scale(0.96);\n\n /*\n * On low-resolution screens, the scale effect makes text jump\n * around awkwardly, so we use an alternative.\n */\n @media screen and (resolution < 2x) {\n transform: translateY(1px);\n }\n }\n }\n\n &.red {\n --chip-bg-color: var(--color-red-6);\n --chip-border-color: var(--color-red-5);\n --chip-focus-color: var(--color-red-transparent);\n }\n\n &.orange {\n --chip-bg-color: var(--color-orange-6);\n --chip-border-color: var(--color-orange-5);\n --chip-focus-color: var(--color-orange-transparent);\n }\n\n &.yellow {\n --chip-bg-color: var(--color-yellow-6);\n --chip-border-color: var(--color-yellow-5);\n --chip-focus-color: var(--color-yellow-transparent);\n }\n\n &.green {\n --chip-bg-color: var(--color-green-6);\n --chip-border-color: var(--color-green-5);\n --chip-focus-color: var(--color-green-transparent);\n }\n\n &.sky {\n --chip-bg-color: var(--color-sky-6);\n --chip-border-color: var(--color-sky-5);\n --chip-focus-color: var(--color-sky-transparent);\n }\n\n &.blue {\n --chip-bg-color: var(--color-blue-6);\n --chip-border-color: var(--color-blue-5);\n --chip-focus-color: var(--color-blue-transparent);\n }\n\n &.purple {\n --chip-bg-color: var(--color-purple-6);\n --chip-border-color: var(--color-purple-5);\n --chip-focus-color: var(--color-purple-transparent);\n }\n\n &.magenta {\n --chip-bg-color: var(--color-magenta-6);\n --chip-border-color: var(--color-magenta-5);\n --chip-focus-color: var(--color-magenta-transparent);\n }\n\n &.gray {\n --chip-bg-color: var(--color-gray-6);\n --chip-border-color: var(--color-gray-5);\n --chip-focus-color: var(--color-gray-transparent);\n }\n\n &.black {\n --chip-bg-color: black;\n --chip-border-color: #3d3d3d;\n --chip-focus-color: var(--color-gray-transparent);\n }\n\n &.white {\n --chip-fg-color: black;\n --chip-bg-color: white;\n --chip-border-color: #d0d0d0;\n --chip-focus-color: var(--color-gray-transparent);\n }\n}\n\n.chip-delete {\n outline: 1px solid transparent;\n margin-inline: var(--space-3xs) calc(-1 * var(--space-2xs));\n font-size: 0.6em;\n border: 0;\n border-radius: var(--radius-full);\n transition-property: background-color, outline-color, filter;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n position: relative;\n overflow: hidden;\n cursor: pointer;\n height: 2em;\n width: 2em;\n user-select: none;\n background-color: var(--chip-border-color);\n padding: 0;\n display: inline-flex;\n box-shadow: none;\n\n &::after {\n content: \"\";\n width: 1.7em;\n height: 1.7em;\n mask-image: url(\"@/src/svg/x.svg\");\n mask-size: contain;\n mask-repeat: no-repeat;\n mask-position: center;\n background-color: var(--chip-fg-color);\n margin: auto;\n }\n\n &:is(:focus-visible, .focus) {\n outline-color: var(--chip-fg-color);\n }\n\n &:is(:hover, .hover) {\n background-color: hsl(from var(--chip-border-color) h s calc(l + 5));\n }\n\n &:is(:active, .active) {\n background-color: hsl(from var(--chip-border-color) h s calc(l - 20));\n }\n}\n",".divider,\n:where(.style-semantic-elements hr, .style-semantic-elements br) {\n --divider-thickness: var(--border-s);\n\n display: block;\n border-style: solid;\n border-color: var(--color-outline);\n border-width: 0;\n border-top-width: var(--divider-thickness);\n margin: var(--space-xs) 0;\n outline: 0;\n width: 100%;\n height: 0;\n print-color-adjust: exact;\n position: relative;\n\n &.vertical {\n display: inline-block;\n border-top-width: 0;\n border-left-width: var(--divider-thickness);\n margin: auto var(--space-xs);\n width: 0;\n height: 100%;\n min-height: 1em;\n }\n}\n\n.divider.invisible,\n:where(.style-semantic-elements br) {\n visibility: hidden;\n}\n\n.divider.thick {\n --divider-thickness: var(--border-m);\n}\n\n.divider.thicker {\n --divider-thickness: var(--border-l);\n}\n\n.divider.dashed {\n border-style: dashed;\n}\n\n.divider.dotted {\n border-style: dotted;\n}\n","/* See utils/base-dialog for more */\n.drawer {\n --dialog-starting-opacity: 1;\n --dialog-ending-opacity: 1;\n\n position: fixed;\n inset: 0;\n border-radius: 0;\n margin: 0;\n border: 0;\n overflow: auto;\n transition-duration: var(--duration-extra-long) !important;\n\n &.left {\n right: auto;\n\n @media (prefers-reduced-motion: no-preference) {\n --dialog-starting-transform: translateX(-100%);\n --dialog-ending-transform: translateX(-100%);\n }\n }\n\n &.top {\n bottom: auto;\n\n @media (prefers-reduced-motion: no-preference) {\n --dialog-starting-transform: translateY(-100%);\n --dialog-ending-transform: translateY(-100%);\n }\n }\n\n &.right {\n left: auto;\n\n @media (prefers-reduced-motion: no-preference) {\n --dialog-starting-transform: translateX(100%);\n --dialog-ending-transform: translateX(100%);\n }\n }\n\n &.bottom {\n top: auto;\n\n @media (prefers-reduced-motion: no-preference) {\n --dialog-starting-transform: translateY(100%);\n --dialog-ending-transform: translateY(100%);\n }\n }\n\n &.top,\n &.bottom {\n width: 100dvw;\n max-width: unset;\n height: auto;\n max-height: 100dvh;\n min-height: min(100dvh, 16rem);\n\n &.small {\n height: 18rem;\n }\n\n &.medium {\n height: 28rem;\n }\n\n &.large {\n height: 38rem;\n }\n }\n\n &.left,\n &.right {\n height: 100dvh;\n max-height: unset;\n width: auto;\n min-width: min(100dvw, 18rem);\n max-width: 100dvw;\n\n &.small {\n width: 22rem;\n }\n\n &.medium {\n width: 32rem;\n }\n\n &.large {\n width: 42rem;\n }\n }\n}\n\n.drawer-body {\n height: 100%;\n}\n\n.drawer-footer {\n padding: var(--space-xs);\n flex-shrink: 0;\n display: flex;\n gap: var(--space-xs);\n justify-content: flex-start;\n margin: 0;\n margin-block-start: auto;\n\n > * {\n width: 100%;\n }\n}\n",".paragraph,\n:where(.style-semantic-elements p) {\n font-family: var(--font-family-body);\n font-weight: var(--font-weight-normal);\n line-height: 1.6;\n margin: 0.75em 0;\n text-wrap: pretty;\n hanging-punctuation: first;\n overflow-wrap: break-word;\n\n &:first-child {\n margin-block-start: 0;\n }\n\n &:last-child {\n margin-block-end: 0;\n }\n}\n\n/*\n * Remove the top margin from paragraphs immediately after a heading, since we\n * want to use the (slightly smaller) bottom margin of the heading instead.\n *\n * This ensures that headings are visibly closer to their content than the\n * content above them, using spacing intentionally to denote hierarchy.\n */\n:is(.heading-1, .heading-2, .heading-3, .heading-4, .heading-5, .heading-6)\n + .paragraph,\n:where(.style-semantic-elements :is(h1, h2, h3, h4, h5, h6) + p) {\n margin-block-start: 0;\n}\n","@keyframes indeterminate-progress {\n from {\n opacity: 0.2;\n }\n\n to {\n opacity: 0.8;\n }\n}\n\nprogress.progress {\n appearance: none;\n inline-size: 100%;\n block-size: 1em;\n}\n\n@supports selector(::-moz-progress-bar) {\n progress.progress {\n border-radius: var(--radius-s);\n border: 0;\n display: block;\n inline-size: 100%;\n block-size: 1em;\n box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);\n background: var(--color-gray-9);\n box-sizing: border-box;\n overflow: clip;\n }\n}\n\n.progress::-webkit-progress-bar {\n border-radius: var(--radius-s);\n border: 0;\n display: block;\n inline-size: 100%;\n block-size: 1em;\n box-shadow: inset 0 0 0 var(--border-s) var(--color-outline);\n background: var(--color-gray-9);\n box-sizing: border-box;\n overflow: clip;\n}\n\n.progress::-webkit-progress-value {\n border-radius: var(--radius-s);\n border: var(--border-s) solid var(--color-blue-5);\n box-sizing: border-box;\n background-size: 100vw;\n background-image: linear-gradient(\n to right,\n var(--color-blue-6),\n var(--color-blue-4)\n );\n}\n\n.progress::-moz-progress-bar {\n border-radius: var(--radius-s);\n border: var(--border-s) solid var(--color-blue-5);\n box-sizing: border-box;\n background-size: 100vw;\n background-image: linear-gradient(\n to right,\n var(--color-blue-6),\n var(--color-blue-4)\n );\n}\n\n.progress:indeterminate::-webkit-progress-value {\n background: var(--color-blue-6);\n border-color: var(--color-blue-5);\n opacity: 0.5;\n inline-size: 100% !important;\n animation: indeterminate-progress 1s var(--ease-both-subtle) infinite\n alternate;\n}\n\n.progress:indeterminate::-moz-progress-bar {\n background: var(--color-blue-6);\n border-color: var(--color-blue-5);\n opacity: 0.5;\n inline-size: 100% !important;\n animation: indeterminate-progress 1s var(--ease-both-subtle) infinite\n alternate;\n}\n","input[type=\"range\"].slider {\n --slider-shadow-resting: var(--shadow-s);\n --slider-shadow-focused:\n var(--shadow-s), 0 0 0 0.08em var(--color-brand-5),\n 0 0 0 calc(0.16em + var(--border-s)) var(--color-brand-transparent);\n --slider-shadow-active: var(--shadow-s), 0 0 0 0.08em var(--color-brand-5);\n\n font-size: 1.2rem;\n block-size: 1.25em;\n appearance: none;\n background: transparent;\n cursor: pointer;\n\n @media (pointer: coarse) {\n font-size: 1.5rem;\n }\n\n &:disabled {\n opacity: var(--opacity-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: 0;\n\n &::-webkit-slider-thumb {\n border-color: var(--color-brand-5);\n box-shadow: var(--slider-shadow-focused);\n }\n\n &::-moz-range-thumb {\n border-color: var(--color-brand-5);\n box-shadow: var(--slider-shadow-focused);\n }\n }\n\n &:enabled:active {\n &::-webkit-slider-thumb {\n border-color: var(--color-brand-5);\n box-shadow: var(--slider-shadow-active);\n transform: scale(1);\n\n @media screen and (resolution >= 2x) {\n transform: scale(0.9);\n }\n }\n\n &::-moz-range-thumb {\n border-color: var(--color-brand-5);\n box-shadow: var(--slider-shadow-active);\n transform: scale(1);\n\n @media screen and (resolution >= 2x) {\n transform: scale(0.9);\n }\n }\n }\n\n &::-webkit-slider-runnable-track {\n block-size: 0.25em;\n inline-size: 100%;\n border-radius: var(--radius-full);\n background-color: var(--color-gray-8);\n print-color-adjust: exact;\n box-shadow: 0 0 1px var(--color-gray-7) inset;\n }\n\n &::-moz-range-track {\n block-size: 0.25em;\n inline-size: 100%;\n border-radius: var(--radius-full);\n background-color: var(--color-gray-8);\n print-color-adjust: exact;\n box-shadow: 0 0 1px var(--color-gray-7) inset;\n }\n\n &::-webkit-slider-thumb {\n height: 1.25em;\n width: 1.25em;\n border-radius: var(--radius-full);\n background-color: white;\n box-shadow: var(--slider-shadow-resting);\n border: var(--border-s) solid var(--color-outline);\n transition-property: border-color, box-shadow, transform;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n\n /* Additional properties needed for webkit */\n appearance: none;\n margin-block-start: -0.5em;\n }\n\n &::-moz-range-thumb {\n height: 1.25em;\n width: 1.25em;\n border-radius: var(--radius-full);\n background-color: white;\n box-shadow: var(--slider-shadow-resting);\n border: var(--border-s) solid var(--color-outline);\n transition-property: border-color, box-shadow, transform;\n transition-duration: var(--duration-short);\n transition-timing-function: var(--ease-default);\n }\n\n /*\n * Below is code to add color to the portion of the slider before the thumb.\n *\n * While it looks great, it's only supported in Firefox (as of 2025), and I'd\n * rather not introduce this big of a difference between browsers. So it's\n * currently commented out and only here for reference.\n *\n * There is a proposal to standardize the pseudo-elements for range inputs,\n * which includes a \"slider-fill\" pseudo-element similar to Firefox's\n * \"moz-range-progress\". If it lands in browsers, we can revisit this.\n *\n * Reference: https://drafts.csswg.org/css-forms-1/#pseudo-elements\n */\n\n /* &::-moz-range-progress {\n background-size: 100vw;\n background-image: linear-gradient(\n to right,\n var(--color-brand-6),\n var(--color-brand-4)\n );\n border-radius: var(--radius-full);\n block-size: 0.25em;\n box-shadow: 0 0 1px var(--color-brand-4) inset;\n } */\n}\n",".field {\n --field-gap: var(--space-2xs);\n --field-padding: 0.5em;\n --field-radius: var(--radius-m);\n\n display: inline-flex;\n flex-direction: column;\n line-height: 1;\n gap: var(--field-gap);\n color: var(--color-body-text);\n font-weight: var(--font-weight-semibold);\n transition-property: color, box-shadow;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n font-size: var(--font-size-m);\n font-family: var(--font-family-body);\n\n &.compact,\n .fieldset.compact & {\n --field-gap: calc(0.9 * var(--space-2xs));\n --field-padding: 0.33em;\n --field-radius: var(--radius-s);\n\n font-size: calc(0.9 * var(--font-size-m));\n }\n\n &:focus-within {\n color: var(--color-brand-5);\n }\n\n &:has(:user-invalid, [aria-invalid=\"true\"]) {\n color: var(--color-red-5);\n\n .error-message {\n display: flex;\n }\n }\n\n &:has([readonly]):focus-within {\n color: var(--color-gray-5);\n }\n\n input:not(\n [type=\"button\"],\n [type=\"checkbox\"],\n [type=\"file\"],\n [type=\"hidden\"],\n [type=\"image\"],\n [type=\"radio\"],\n [type=\"range\"],\n [type=\"reset\"],\n [type=\"submit\"]\n ),\n select,\n textarea {\n color: var(--color-body-text);\n background-color: light-dark(white, black);\n border: var(--border-s) solid var(--color-outline);\n font-size: 1em;\n padding: var(--field-padding);\n border-radius: var(--field-radius);\n transition-property: color, box-shadow, border-color;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n font-family: inherit;\n line-height: 1.25;\n\n &:focus {\n outline: 0;\n border-color: var(--color-brand-5);\n box-shadow:\n 0 0 0 0.1em var(--color-brand-5),\n 0 0 0 calc(0.2em + var(--border-s)) var(--color-brand-transparent);\n }\n\n &:focus-visible {\n outline: 0;\n }\n\n &:disabled {\n opacity: var(--opacity-disabled);\n cursor: not-allowed;\n }\n\n /* Not using :read-only because it matches additional elements (e.g., every color input) */\n &[readonly] {\n border-style: dashed;\n\n &:focus {\n outline: 0;\n border-style: solid;\n border-color: var(--color-gray-5);\n box-shadow:\n 0 0 0 0.1em var(--color-gray-5),\n 0 0 0 calc(0.2em + var(--border-s)) var(--color-gray-transparent);\n }\n }\n\n &:user-invalid,\n &[aria-invalid=\"true\"] {\n border-color: var(--color-red-5);\n box-shadow: 0 0 0 0.1em var(--color-red-5);\n\n &:focus {\n outline: 0;\n border-color: var(--color-red-5);\n box-shadow:\n 0 0 0 0.1em var(--color-red-5),\n 0 0 0 calc(0.2em + var(--border-s)) var(--color-red-transparent);\n }\n }\n }\n\n input[type=\"color\"] {\n inline-size: auto;\n block-size: auto;\n cursor: pointer;\n\n &::-webkit-color-swatch-wrapper {\n padding: 0;\n }\n\n &::-webkit-color-swatch {\n border: 0;\n block-size: 1.25em;\n inline-size: 100%;\n border-radius: var(--radius-s);\n }\n\n &::-moz-color-swatch {\n border: 0;\n block-size: 1.25em;\n inline-size: 100%;\n border-radius: var(--radius-s);\n }\n }\n\n select,\n input[list] {\n background-image: url(\"@/src/svg/dropdown.svg\");\n background-position: center right 0.25em;\n background-size: auto 75%;\n background-repeat: no-repeat;\n appearance: none;\n padding-inline-end: calc(2 * var(--space-2xs) + 1em);\n\n &:dir(rtl) {\n background-position: center left 0.25em;\n }\n\n @media (prefers-color-scheme: dark) {\n background-image: url(\"@/src/svg/dropdown-invert.svg\");\n }\n }\n\n select {\n cursor: pointer;\n }\n\n .help-text {\n font-size: 0.9em;\n color: var(--color-body-text-alt);\n font-weight: var(--font-weight-normal);\n margin: -0.25em 0 0;\n position: relative;\n }\n\n /* Todo glitches */\n .error-message {\n display: none;\n font-size: 0.9em;\n border: 0;\n padding: 0;\n margin: 0;\n font-weight: var(--font-weight-semibold);\n align-items: center;\n gap: 2px;\n\n &::before {\n content: \"\";\n mask-image: url(\"@/src/svg/x-circle.svg\");\n mask-size: contain;\n mask-repeat: no-repeat;\n mask-position: center;\n background-color: currentcolor;\n display: inline-block;\n height: 1.2em;\n width: 1.2em;\n }\n }\n\n .input-group {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n\n > * {\n border-radius: 0 !important;\n z-index: 1;\n }\n\n > :is(:user-invalid, [aria-invalid=\"true\"]) {\n z-index: 2;\n }\n\n > :first-child {\n border-start-start-radius: var(--field-radius) !important;\n border-end-start-radius: var(--field-radius) !important;\n }\n\n > :last-child {\n border-end-end-radius: var(--field-radius) !important;\n border-start-end-radius: var(--field-radius) !important;\n }\n\n > :focus-visible {\n z-index: 3;\n }\n\n > :is(.prefix, .suffix, .action) {\n user-select: none;\n -webkit-user-drag: none;\n display: flex;\n font-weight: var(--font-weight-normal);\n color: var(--color-gray-3);\n background-color: var(--color-gray-9);\n border: var(--border-s) solid var(--color-outline);\n padding: var(--field-padding) calc(2 * var(--field-padding));\n align-items: center;\n justify-content: center;\n font-size: 0.9em;\n\n :is(img, svg) {\n height: 1.15em;\n width: auto;\n }\n }\n\n > .prefix {\n border-inline-end: 0;\n }\n\n > .suffix {\n border-inline-start: 0;\n }\n\n > .action {\n cursor: pointer;\n color: var(--color-brand-3);\n border-inline-start: 0;\n transition-property: box-shadow, background-color;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n\n &:hover {\n background-color: var(--color-gray-8);\n }\n\n &:active {\n background-color: var(--color-gray-7);\n }\n\n &:focus-visible {\n border-color: var(--color-brand-5);\n border-inline-start-width: var(--border-s);\n border-inline-start-style: solid;\n box-shadow:\n 0 0 0 0.11em var(--color-brand-5),\n 0 0 0 calc(0.22em + var(--border-s)) var(--color-brand-transparent);\n outline: 0;\n }\n }\n\n > :is(input, select, textarea) {\n width: 100%;\n\n &:has(~ .action:focus-visible) {\n border-inline-end-width: 0;\n }\n }\n }\n\n .required-indicator {\n display: inline;\n position: relative;\n inset-block-end: 0.15em;\n inset-inline-start: 0.15em;\n color: var(--color-red-5);\n font-size: 0.9em;\n font-weight: var(--font-weight-semibold);\n }\n}\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n accent-color: var(--color-brand-5);\n}\n\nfieldset.fieldset {\n border: var(--border-s) solid var(--color-outline);\n border-radius: var(--radius-s);\n background-color: var(--color-body);\n color: var(--color-body-text);\n\n legend {\n font-family: var(--font-family-heading);\n font-weight: var(--font-weight-bold);\n transition: color var(--duration-medium) var(--ease-default);\n }\n\n &:focus-within legend {\n color: var(--color-brand-5);\n }\n}\n\n.form {\n max-width: 60ch;\n margin-inline-end: auto;\n}\n","@keyframes spinner-spin {\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinner {\n --spinner-primary-color: var(--color-brand-5);\n --spinner-secondary-color: var(--color-brand-3);\n\n font-size: var(--font-size-m);\n position: relative;\n text-align: center;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n gap: var(--space-2xs);\n\n &.small {\n font-size: var(--font-size-xs);\n }\n\n &.large {\n font-size: var(--font-size-xl);\n }\n\n &.label-top {\n flex-direction: column-reverse;\n\n &::after {\n inset: auto 0 0;\n }\n }\n\n &.label-right {\n flex-direction: row;\n gap: var(--space-xs);\n\n &::after {\n inset: 0 auto 0 0;\n }\n }\n\n &.label-left {\n flex-direction: row-reverse;\n gap: var(--space-xs);\n\n &::after {\n inset: 0 0 0 auto;\n }\n }\n\n &::before,\n &::after {\n content: \"\";\n display: block;\n height: 3em;\n width: 3em;\n mask-image: url(\"@/src/svg/loading-arc.svg\");\n mask-size: cover;\n mask-repeat: no-repeat;\n mask-position: center;\n background-color: var(--spinner-primary-color);\n animation: spinner-spin 0.85s linear infinite;\n }\n\n &::after {\n position: absolute;\n inset: 0 0 auto;\n margin: auto;\n background-color: var(--spinner-secondary-color);\n animation-duration: 1.05s;\n }\n}\n","table.table,\n:where(.style-semantic-elements table) {\n --table-bg-odd: var(--color-body-alt);\n --table-bg-even: var(--color-body);\n --table-vertical-border: var(--border-s);\n\n background-color: var(--color-body-alt);\n border-collapse: separate;\n border-spacing: 0;\n font-size: var(--font-size-m);\n border: var(--border-s) solid var(--color-outline);\n border-radius: var(--radius-s);\n color: var(--color-body-text);\n font-family: var(--font-family-body);\n font-weight: var(--font-weight-normal);\n\n &.subtle {\n --table-bg-odd: transparent;\n --table-bg-even: transparent;\n --table-vertical-border: 0;\n\n background-color: transparent;\n color: inherit;\n border: 0;\n }\n\n &.dense :is(th, td) {\n padding: var(--space-3xs) var(--space-2xs);\n }\n\n &.sparse :is(th, td) {\n padding: var(--space-xs) var(--space-s);\n }\n\n caption {\n font-family: var(--font-family-heading);\n line-height: 1.15;\n font-size: var(--font-size-l);\n font-weight: var(--font-weight-semibold);\n text-align: start;\n margin: 0 0 var(--space-2xs);\n }\n\n th,\n td {\n padding: var(--space-2xs) var(--space-xs);\n }\n\n th,\n tfoot td {\n font-weight: var(--font-weight-bold);\n font-family: var(--font-family-heading);\n text-align: center;\n }\n\n th {\n border-block-end: var(--border-m) solid var(--color-outline);\n }\n\n tfoot td {\n border-block-start: var(--border-m) solid var(--color-outline);\n }\n\n td {\n text-align: unset;\n }\n\n :is(th, tfoot td):not(:last-of-type) {\n border-inline-end: var(--table-vertical-border) dashed var(--color-outline);\n }\n\n td:not(tfoot td, :last-of-type) {\n border-inline-end: var(--table-vertical-border) solid var(--color-outline);\n }\n\n tr:not(:last-of-type) td {\n border-block-end: var(--border-s) solid var(--color-outline);\n }\n\n tbody tr:nth-child(odd),\n tbody:has(tr:last-of-type:nth-child(even)) + tfoot tr {\n background-color: var(--table-bg-even);\n }\n\n tbody tr:nth-child(even) {\n background-color: var(--table-bg-odd);\n }\n}\n",".bold,\n:where(.style-semantic-elements strong, .style-semantic-elements b) {\n font-weight: var(--font-weight-bold);\n}\n\n.italic,\n:where(.style-semantic-elements em) {\n font-style: italic;\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.strikethrough,\n:where(.style-semantic-elements s) {\n text-decoration-line: line-through;\n}\n\n.underline.strikethrough {\n text-decoration-line: underline line-through;\n}\n\n.subscript,\n.superscript,\n:where(.style-semantic-elements sub, .style-semantic-elements sup) {\n font-size: 0.75em;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\n.subscript,\n:where(.style-semantic-elements sub) {\n inset-block-end: -0.25em;\n}\n\n.superscript,\n:where(.style-semantic-elements sup) {\n inset-block-start: -0.5em;\n}\n\n.code,\n:where(.style-semantic-elements code) {\n font-family: var(--font-family-mono);\n background-color: var(--color-gray-extra-transparent);\n color: var(--color-gray-1);\n border-radius: var(--radius-s);\n display: inline;\n padding: 0.25ch 0.5ch;\n font-size: 0.9em;\n\n &.invert {\n color: var(--color-gray-9);\n }\n}\n\n.link .code,\n:where(.style-semantic-elements a code) {\n text-decoration: inherit;\n text-decoration-color: inherit;\n text-decoration-thickness: inherit;\n color: inherit;\n}\n",".flow,\n.stack,\n.separate,\n.space {\n display: flex !important;\n gap: var(--space-s);\n\n &.no-gap {\n gap: var(--space-none);\n }\n\n &.densest {\n gap: var(--space-3xs);\n }\n\n &.denser {\n gap: var(--space-2xs);\n }\n\n &.dense {\n gap: var(--space-xs);\n }\n\n &.sparse {\n gap: var(--space-m);\n }\n\n &.sparser {\n gap: var(--space-l);\n }\n\n &.sparsest {\n gap: var(--space-xl);\n }\n\n &.horizontal,\n &.horizontally {\n flex-direction: row;\n }\n\n &.vertical,\n &.vertically {\n flex-direction: column;\n }\n}\n\n.flow {\n flex-wrap: wrap;\n align-items: center;\n justify-content: start;\n}\n\n.stack {\n flex-wrap: nowrap;\n align-items: stretch;\n justify-content: start;\n}\n\n.separate {\n flex-wrap: nowrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.space {\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-evenly;\n}\n","/* Style the label of a labeled switch, which is also the container that holds the switch itself */\nlabel.switch {\n inline-size: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n font-weight: var(--font-weight-semibold);\n gap: var(--space-3xs);\n font-size: var(--font-size-m);\n font-family: var(--font-family-body);\n}\n\n/* For small labeled switches, set the label text size to font-size-s */\nlabel.switch.small {\n font-size: var(--font-size-s);\n}\n\n/* Style the switch itself */\ninput[type=\"checkbox\"].switch,\nlabel.switch input[type=\"checkbox\"] {\n font-size: 1rem;\n print-color-adjust: exact;\n appearance: none;\n block-size: 1.8em;\n inline-size: 3em;\n border-radius: var(--radius-full);\n background-color: var(--color-gray-7);\n position: relative;\n flex: none;\n transition-property: background-color, box-shadow, border-color;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-default);\n border: 0.1em solid var(--color-gray-6);\n cursor: pointer;\n\n &::after {\n content: \"\";\n position: absolute;\n height: 1.4em;\n width: 1.4em;\n background-color: white;\n inset-inline-start: 0.1em;\n inset-block-start: 0.1em;\n border-radius: var(--radius-full);\n box-shadow: var(--shadow-s);\n transition-property: border-color, transform;\n transition-duration: var(--duration-medium);\n transition-timing-function: var(--ease-both);\n transform: translateX(0);\n }\n\n &:disabled {\n opacity: var(--opacity-disabled);\n cursor: not-allowed;\n }\n\n &:is(:focus-visible, .focus) {\n border-color: var(--color-gray-6);\n box-shadow:\n 0 0 0 0.08em var(--color-gray-6),\n 0 0 0 calc(0.16em + var(--border-s)) var(--color-gray-transparent);\n outline: 0;\n }\n\n &:checked {\n background-color: var(--color-brand-6);\n border-color: var(--color-brand-5);\n\n &::after {\n transform: translateX(1.2em);\n }\n\n &:is(:focus-visible, .focus) {\n box-shadow:\n 0 0 0 0.08em var(--color-brand-5),\n 0 0 0 calc(0.16em + var(--border-s)) var(--color-brand-transparent);\n }\n }\n\n &:dir(rtl):checked::after {\n transform: translateX(-1.2em);\n }\n}\n\n/* For small switches, scale the switch control to 80% of the normal size */\ninput[type=\"checkbox\"].switch.small,\nlabel.switch.small input[type=\"checkbox\"] {\n font-size: 0.8rem;\n}\n",".card {\n background-color: var(--color-body-alt);\n border-radius: var(--radius-l);\n border: var(--border-s) solid var(--color-outline);\n box-shadow: var(--shadow-m);\n padding: var(--space-m);\n font-family: var(--font-family-body);\n font-size: var(--font-size-m);\n font-weight: var(--font-weight-normal);\n\n &.secondary {\n background-color: var(--color-body);\n border-radius: var(--radius-m);\n box-shadow: var(--shadow-s);\n padding: var(--space-s);\n }\n}\n\n/* \n * The Link component also defines .card-title[href]. We specifically add that\n * selector here so the styles in this file override the former.\n */\n.card-title,\n.card-title[href] {\n font-family: var(--font-family-heading);\n line-height: 1.15;\n text-wrap: balance;\n overflow-wrap: break-word;\n font-size: var(--font-size-l);\n font-weight: var(--font-weight-bold);\n color: var(--color-brand-3);\n margin-block: 0 var(--space-xs);\n display: block;\n}\n\n.card-title[href] {\n text-decoration-color: var(--color-brand-transparent);\n}\n\n.card.secondary .card-title {\n font-size: var(--font-size-m);\n margin-block-end: var(--space-2xs);\n}\n"],"names":[]}
@@ -0,0 +1,135 @@
1
+ export declare const colorVariants: readonly ["brand", "red", "orange", "yellow", "green", "sky", "blue", "purple", "magenta", "gray", "black", "white"];
2
+ export type ColorVariant = (typeof colorVariants)[number];
3
+ export declare const isColorVariant: (x: unknown) => x is ColorVariant;
4
+ export declare const standardPalletColors: readonly ["brand-1", "brand-2", "brand-3", "brand-4", "brand-5", "brand-6", "brand-7", "brand-8", "brand-9", "brand-transparent", "brand-extra-transparent", "red-1", "red-2", "red-3", "red-4", "red-5", "red-6", "red-7", "red-8", "red-9", "red-transparent", "red-extra-transparent", "orange-1", "orange-2", "orange-3", "orange-4", "orange-5", "orange-6", "orange-7", "orange-8", "orange-9", "orange-transparent", "orange-extra-transparent", "yellow-1", "yellow-2", "yellow-3", "yellow-4", "yellow-5", "yellow-6", "yellow-7", "yellow-8", "yellow-9", "yellow-transparent", "yellow-extra-transparent", "green-1", "green-2", "green-3", "green-4", "green-5", "green-6", "green-7", "green-8", "green-9", "green-transparent", "green-extra-transparent", "sky-1", "sky-2", "sky-3", "sky-4", "sky-5", "sky-6", "sky-7", "sky-8", "sky-9", "sky-transparent", "sky-extra-transparent", "blue-1", "blue-2", "blue-3", "blue-4", "blue-5", "blue-6", "blue-7", "blue-8", "blue-9", "blue-transparent", "blue-extra-transparent", "purple-1", "purple-2", "purple-3", "purple-4", "purple-5", "purple-6", "purple-7", "purple-8", "purple-9", "purple-transparent", "purple-extra-transparent", "magenta-1", "magenta-2", "magenta-3", "magenta-4", "magenta-5", "magenta-6", "magenta-7", "magenta-8", "magenta-9", "magenta-transparent", "magenta-extra-transparent", "gray-1", "gray-2", "gray-3", "gray-4", "gray-5", "gray-6", "gray-7", "gray-8", "gray-9", "gray-transparent", "gray-extra-transparent"];
5
+ export type StandardPalletColor = (typeof standardPalletColors)[number];
6
+ export declare const isStandardPalletColor: (x: unknown) => x is StandardPalletColor;
7
+ export declare const semanticColors: readonly ["body", "body-alt", "body-text", "body-text-alt", "body-text-invert", "shadow", "outline"];
8
+ export type SemanticColor = (typeof semanticColors)[number];
9
+ export declare const isSemanticColor: (x: unknown) => x is SemanticColor;
10
+ export type Color = StandardPalletColor | SemanticColor;
11
+ export declare const isColor: (x: unknown) => x is Color;
12
+ export declare const fontSizes: readonly ["xs", "s", "m", "l", "xl", "2xl", "3xl", "4xl"];
13
+ export type FontSize = (typeof fontSizes)[number];
14
+ export declare const isFontSize: (x: unknown) => x is FontSize;
15
+ export declare const fontWeights: readonly ["light", "normal", "semibold", "bold", "black"];
16
+ export type FontWeight = (typeof fontWeights)[number];
17
+ export declare const isFontWeight: (x: unknown) => x is FontWeight;
18
+ export declare const fontFamilies: readonly ["body", "heading", "mono"];
19
+ export type FontFamily = (typeof fontFamilies)[number];
20
+ export declare const isFontFamily: (x: unknown) => x is FontFamily;
21
+ export declare const spaces: readonly ["none", "3xs", "2xs", "xs", "s", "m", "l", "xl", "2xl", "3xl", "body-x", "body-y"];
22
+ export type Space = (typeof spaces)[number];
23
+ export declare const isSpace: (x: unknown) => x is Space;
24
+ export declare const radii: readonly ["none", "s", "m", "l", "xl", "2xl", "full"];
25
+ export type Radius = (typeof radii)[number];
26
+ export declare const isRadius: (x: unknown) => x is Radius;
27
+ export declare const shadows: readonly ["none", "s", "m", "l", "xl"];
28
+ export type Shadow = (typeof shadows)[number];
29
+ export declare const isShadow: (x: unknown) => x is Shadow;
30
+ export declare const borderWidths: readonly ["none", "s", "m", "l", "xl"];
31
+ export type BorderWidth = (typeof borderWidths)[number];
32
+ export declare const isBorderWidth: (x: unknown) => x is BorderWidth;
33
+ export declare const easingFunctions: readonly ["default", "out", "in", "both", "both-subtle", "spring"];
34
+ export type EasingFunction = (typeof easingFunctions)[number];
35
+ export declare const isEasingFunction: (x: unknown) => x is EasingFunction;
36
+ export declare const durations: readonly ["short", "medium", "long", "extra-long"];
37
+ export type Duration = (typeof durations)[number];
38
+ export declare const isDuration: (x: unknown) => x is Duration;
39
+ /**
40
+ * If the given value is a valid color token, replace it with the corresponding
41
+ * CSS variable reference. Otherwise, return the value as a string.
42
+ *
43
+ * @example
44
+ * resolveColor("red-5") // "var(--color-red-5)"
45
+ * resolveColor("#ff0000") // "#ff0000"
46
+ */
47
+ export declare const resolveColor: (value: unknown) => string;
48
+ /**
49
+ * If the given value is a valid font size token, replace it with the
50
+ * corresponding CSS variable reference. Otherwise, return the value as a
51
+ * string.
52
+ *
53
+ * @example
54
+ * resolveFontSize("m") // "var(--font-size-m)"
55
+ * resolveFontSize("16px") // "16px"
56
+ */
57
+ export declare const resolveFontSize: (value: unknown) => string;
58
+ /**
59
+ * If the given value is a valid font weight token, replace it with the
60
+ * corresponding CSS variable reference. Otherwise, return the value as a
61
+ * string.
62
+ *
63
+ * @example
64
+ * resolveFontWeight("semibold") // "var(--font-weight-semibold)"
65
+ * resolveFontWeight("700") // "700"
66
+ * resolveFontWeight(700) // "700"
67
+ */
68
+ export declare const resolveFontWeight: (value: unknown) => string;
69
+ /**
70
+ * If the given value is a valid font family token, replace it with the
71
+ * corresponding CSS variable reference. Otherwise, return the value as a
72
+ * string.
73
+ *
74
+ * @example
75
+ * resolveFontFamily("body") // "var(--font-family-body)"
76
+ * resolveFontFamily("arial, sans-serif") // "arial, sans-serif"
77
+ */
78
+ export declare const resolveFontFamily: (value: unknown) => string;
79
+ /**
80
+ * If the given value is a valid spacing token, replace it with the
81
+ * corresponding CSS variable reference. Otherwise, return the value as a
82
+ * string.
83
+ *
84
+ * @example
85
+ * resolveSpace("xl") // "var(--space-xl)"
86
+ * resolveSpace("2rem") // "2rem"
87
+ */
88
+ export declare const resolveSpace: (value: unknown) => string;
89
+ /**
90
+ * If the given value is a valid radius token, replace it with the corresponding
91
+ * CSS variable reference. Otherwise, return the value as a string.
92
+ *
93
+ * @example
94
+ * resolveRadius("xl") // "var(--radius-xl)"
95
+ * resolveRadius("12px") // "12px"
96
+ */
97
+ export declare const resolveRadius: (value: unknown) => string;
98
+ /**
99
+ * If the given value is a valid shadow token, replace it with the corresponding
100
+ * CSS variable reference. Otherwise, return the value as a string.
101
+ *
102
+ * @example
103
+ * resolveShadow("xl") // "var(--shadow-xl)"
104
+ * resolveShadow("0 0 1px #0005") // "0 0 1px #0005"
105
+ */
106
+ export declare const resolveShadow: (value: unknown) => string;
107
+ /**
108
+ * If the given value is a valid border token, replace it with the corresponding
109
+ * CSS variable reference. Otherwise, return the value as a string.
110
+ *
111
+ * @example
112
+ * resolveBorder("m") // "var(--border-m)"
113
+ * resolveBorder("2px") // "2px"
114
+ */
115
+ export declare const resolveBorderWidth: (value: unknown) => string;
116
+ /**
117
+ * If the given value is a valid easing function token, replace it with the
118
+ * corresponding CSS variable reference. Otherwise, return the value as a
119
+ * string.
120
+ *
121
+ * @example
122
+ * resolveEasingFunction("in") // "var(--ease-in)"
123
+ * resolveEasingFunction("cubic-bezier(0.5, 0, 0.5, 1)") // "cubic-bezier(0.5, 0, 0.5, 1)"
124
+ */
125
+ export declare const resolveEasingFunction: (value: unknown) => string;
126
+ /**
127
+ * If the given value is a valid duration token, replace it with the
128
+ * corresponding CSS variable reference. Otherwise, return the value as a
129
+ * string.
130
+ *
131
+ * @example
132
+ * resolveDuration("short") // "var(--duration-short)"
133
+ * resolveDuration("2s") // "2s"
134
+ */
135
+ export declare const resolveDuration: (value: unknown) => string;