Files
breadcrumb-the-shire/web/css/layout/app-shell.css

3037 lines
73 KiB
CSS
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@charset "UTF-8";
@layer layout {
a {
--app-text-decoration: underline;
}
a.contrast,
a.secondary {
--app-text-decoration: underline;
}
small {
--app-font-size: 0.875em;
}
div#debugger-bar {
display: none;
}
.app-container.is-sidebar-hidden .app-sidebar {
display: none;
}
.sidebar-hidden .app-sidebar {
display: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
--app-font-weight: 700;
}
h1 {
--app-font-size: 1.5rem;
--app-line-height: 1.125;
--app-typography-spacing-top: 3rem;
}
h2 {
--app-font-size: 1.4rem;
--app-line-height: 1.15;
--app-typography-spacing-top: 2.625rem;
}
h3 {
--app-font-size: 1.3rem;
--app-line-height: 1.175;
--app-typography-spacing-top: 2.25rem;
}
h4 {
--app-font-size: 1.2rem;
--app-line-height: 1.2;
--app-typography-spacing-top: 1.874rem;
}
h5 {
--app-font-size: 1.1rem;
--app-line-height: 1.225;
--app-typography-spacing-top: 1.6875rem;
}
h6 {
--app-font-size: 1rem;
--app-line-height: 1.25;
--app-typography-spacing-top: 1.5rem;
}
tfoot td,
tfoot th,
thead td,
thead th {
--app-font-weight: 600;
--app-border-width: 2px;
}
code,
kbd,
pre,
samp {
--app-font-family: var(--app-font-family-monospace);
}
kbd {
--app-font-weight: bolder;
}
:where(select, textarea),
input:not(
[type="submit"],
[type="button"],
[type="reset"],
[type="checkbox"],
[type="radio"],
[type="file"]
) {
--app-outline-width: 0.0625rem;
}
[type="checkbox"],
[type="radio"] {
--app-border-width: 0.125rem;
}
[type="checkbox"][role="switch"] {
--app-border-width: 0.1875rem;
}
details.dropdown summary:not([role="button"]) {
--app-outline-width: 0.0625rem;
}
nav details.dropdown summary:focus-visible {
--app-outline-width: 0.125rem;
}
[role="search"] {
--app-border-radius: 5rem;
}
[role="group"]:has(
button.secondary:focus,
[type="submit"].secondary:focus,
[type="button"].secondary:focus,
[role="button"].secondary:focus
),
[role="search"]:has(
button.secondary:focus,
[type="submit"].secondary:focus,
[type="button"].secondary:focus,
[role="button"].secondary:focus
) {
--app-group-box-shadow-focus-with-button: 0 0 0 var(--app-outline-width)
var(--app-secondary-focus);
}
[role="group"]:has(
button.contrast:focus,
[type="submit"].contrast:focus,
[type="button"].contrast:focus,
[role="button"].contrast:focus
),
[role="search"]:has(
button.contrast:focus,
[type="submit"].contrast:focus,
[type="button"].contrast:focus,
[role="button"].contrast:focus
) {
--app-group-box-shadow-focus-with-button: 0 0 0 var(--app-outline-width)
var(--app-contrast-focus);
}
[role="group"] [role="button"],
[role="group"] [type="button"],
[role="group"] [type="submit"],
[role="group"] button,
[role="search"] [role="button"],
[role="search"] [type="button"],
[role="search"] [type="submit"],
[role="search"] button {
--app-form-element-spacing-horizontal: 2rem;
}
[role="group"] form:last-child button {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
table td [role="group"] {
margin: 0;
}
th {
text-transform: uppercase;
font-size: 11px;
letter-spacing: 0.4px;
border-top: 1px solid var(--app-border);
}
table td .grid-actions button,
table td .grid-actions [role="button"] {
padding: 4px 10px;
color: var(--app-muted-color);
border: 1px solid var(--app-border);
font-size: small;
background: var(--app-form-element-background-color);
box-shadow: var(--app-group-box-shadow);
}
table td .grid-actions button:has(i),
table td .grid-actions [role="button"]:has(i) {
max-width: 42px;
}
table td .grid-actions button:hover,
table td .grid-actions [role="button"]:hover {
color: var(--app-contrast);
}
details summary[role="button"]:not(.outline)::after {
filter: brightness(0) invert(1);
}
[aria-busy="true"]:not(input, select, textarea):is(
button,
[type="submit"],
[type="button"],
[type="reset"],
[role="button"]
):not(.outline)::before {
filter: brightness(0) invert(1);
}
@media only screen and (prefers-color-scheme: dark) {
:host(:not([data-theme]))
details
summary[role="button"].contrast:not(.outline)::after,
:root:not([data-theme])
details
summary[role="button"].contrast:not(.outline)::after {
filter: brightness(0);
}
:host(:not([data-theme]))
[aria-busy="true"]:not(input, select, textarea).contrast:is(
button,
[type="submit"],
[type="button"],
[type="reset"],
[role="button"]
):not(.outline)::before,
:root:not([data-theme])
[aria-busy="true"]:not(input, select, textarea).contrast:is(
button,
[type="submit"],
[type="button"],
[type="reset"],
[role="button"]
):not(.outline)::before {
filter: brightness(0);
}
}
[data-theme="dark"]
details
summary[role="button"].contrast:not(.outline)::after {
filter: brightness(0);
}
[data-theme="dark"]
[aria-busy="true"]:not(input, select, textarea).contrast:is(
button,
[type="submit"],
[type="button"],
[type="reset"],
[role="button"]
):not(.outline)::before {
filter: brightness(0);
}
[type="checkbox"],
[type="radio"],
[type="range"],
progress {
accent-color: var(--app-primary);
}
*,
::after,
::before {
box-sizing: border-box;
background-repeat: no-repeat;
}
::after,
::before {
text-decoration: inherit;
vertical-align: inherit;
}
:where(:host),
:where(:root) {
-webkit-tap-highlight-color: transparent;
-webkit-text-size-adjust: 100%;
-moz-text-size-adjust: 100%;
text-size-adjust: 100%;
background-color: var(--app-background-color);
color: var(--app-color);
font-weight: var(--app-font-weight);
font-size: var(--app-font-size);
line-height: var(--app-line-height);
font-family: var(--app-font-family);
text-underline-offset: var(--app-text-underline-offset);
text-rendering: optimizeLegibility;
overflow-wrap: break-word;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
}
body {
width: 100%;
margin: 0;
}
main {
display: block;
}
body > footer,
body > main {
padding-block: var(--app-block-spacing-vertical);
}
body > footer {
padding-inline: calc(var(--app-spacing) * 2);
}
footer.site-footer {
padding-inline: calc(var(--app-spacing) * 2);
}
footer.site-footer a {
color: inherit;
}
body > footer a {
color: inherit;
}
header[data-align="center"],
hgroup[data-align="center"] > h1,
hgroup[data-align="center"] > h2,
hgroup[data-align="center"] > h3,
hgroup[data-align="center"] > p,
hgroup[data-align="center"] > *,
hgroup[data-align="center"] {
text-align: center;
justify-content: center;
}
section {
margin-bottom: var(--app-block-spacing-vertical);
}
.container-small {
max-width: 420px;
margin-right: auto;
margin-left: auto;
}
.container,
.container-fluid {
width: 100%;
margin-right: auto;
margin-left: auto;
padding-right: var(--app-spacing);
padding-left: var(--app-spacing);
}
.app-main-content {
padding-inline: calc(var(--app-spacing) * 1);
}
@media (min-width: 576px) {
.container {
max-width: 510px;
padding-right: 0;
padding-left: 0;
}
h1 {
--app-font-size: 1.7rem;
}
h2 {
--app-font-size: 1.6rem;
}
h3 {
--app-font-size: 1.3rem;
}
h4 {
--app-font-size: 1.2rem;
}
h5 {
--app-font-size: 1.1rem;
}
h6 {
--app-font-size: 1rem;
}
}
@media (min-width: 768px) {
.container {
max-width: 700px;
}
.app-container.is-sidebar-hidden:has(.aside-icon-bar):has(.app-sidebar) {
display: grid;
min-height: 100dvh;
align-items: flex-start;
grid-template-columns: minmax(0, 60px) minmax(0, 1fr);
}
.sidebar-hidden .app-container:has(.aside-icon-bar):has(.app-sidebar) {
grid-template-columns: minmax(0, 60px) minmax(0, 1fr);
}
.app-container:has(.aside-icon-bar):has(.app-sidebar) {
display: grid;
min-height: 100dvh;
align-items: flex-start;
grid-template-columns: minmax(0, 60px) minmax(0, 220px) minmax(0, 1fr);
}
.app-container.is-sidebar-collapsed:has(.aside-icon-bar):has(.app-sidebar) {
display: grid;
min-height: 100dvh;
align-items: flex-start;
grid-template-columns: minmax(0, 60px) minmax(0, 220px) minmax(0, 1fr);
}
.app-container.is-sidebar-collapsed {
grid-template-columns: minmax(0, 60px) minmax(0, 220px) minmax(0, 1fr);
}
.sidebar-collapsed .app-container {
grid-template-columns: minmax(0, 60px) minmax(0, 220px) minmax(0, 1fr);
}
.app-main {
border-left: 1px solid var(--app-border);
min-height: 100dvh;
background: var(--app-background-color);
}
.app-main-content {
padding-inline: calc(var(--app-spacing) * 2);
margin-bottom: calc(var(--app-spacing) * 2);
}
.app-main-content:has(.app-details-container) {
margin-bottom: 0;
padding: 0;
position: relative;
z-index: 1;
}
}
@media (min-width: 1024px) {
.container {
max-width: 950px;
}
}
@media (min-width: 1280px) {
.container {
max-width: 1200px;
}
}
@media (min-width: 1536px) {
.container {
max-width: 1450px;
}
}
.grid {
grid-column-gap: var(--app-grid-column-gap);
grid-row-gap: var(--app-grid-row-gap);
display: grid;
--app-grid-template-columns: 1fr;
grid-template-columns: var(--app-grid-template-columns);
}
.flex {
display: flex;
flex-wrap: wrap;
gap: var(--app-flex-gap);
}
.flex h1,
.flex h2,
.flex h3,
.flex h4,
.flex h5,
.flex h6 {
margin-bottom: 0;
}
.align-center {
align-items: center;
}
.align-flex-start {
align-items: flex-start;
}
.justify-space-between {
justify-content: space-between;
}
@media (min-width: 768px) {
.grid {
--app-grid-template-columns: repeat(auto-fit, minmax(0%, 1fr));
}
.grid.grid-2,
.grid.grid-1-1 {
--app-grid-template-columns: repeat(2, minmax(0%, 1fr));
}
.grid.grid-3 {
--app-grid-template-columns: repeat(3, minmax(0%, 1fr));
}
.grid.grid-4 {
--app-grid-template-columns: repeat(4, minmax(0%, 1fr));
}
.grid.grid-5 {
--app-grid-template-columns: repeat(5, minmax(0%, 1fr));
}
.grid.grid-6 {
--app-grid-template-columns: repeat(6, minmax(0%, 1fr));
}
.grid.grid-1-2 {
--app-grid-template-columns: minmax(0%, 1fr) minmax(0%, 2fr);
}
.grid.grid-2-1 {
--app-grid-template-columns: minmax(0%, 2fr) minmax(0%, 1fr);
}
.grid.grid-1-3 {
--app-grid-template-columns: minmax(0%, 1fr) minmax(0%, 3fr);
}
.grid.grid-3-1 {
--app-grid-template-columns: minmax(0%, 3fr) minmax(0%, 1fr);
}
}
.grid > * {
min-width: 0;
}
.overflow-auto {
overflow: auto;
}
b,
strong {
font-weight: bolder;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
address,
blockquote,
dl,
ol,
p,
pre,
table,
ul {
margin-top: 0;
margin-bottom: var(--app-typography-spacing-vertical);
color: var(--app-color);
font-style: normal;
font-weight: var(--app-font-weight);
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
margin-bottom: var(--app-typography-spacing-vertical);
color: var(--app-color);
font-weight: var(--app-font-weight);
font-size: var(--app-font-size);
line-height: var(--app-line-height);
font-family: var(--app-font-family);
}
h1 {
--app-color: var(--app-h1-color);
}
h2 {
--app-color: var(--app-h2-color);
}
h3 {
--app-color: var(--app-h3-color);
}
h4 {
--app-color: var(--app-h4-color);
}
h5 {
--app-color: var(--app-h5-color);
}
h6 {
--app-color: var(--app-h6-color);
}
:where(article, address, blockquote, dl, figure, form, ol, p, pre, table, ul)
~ :is(h1, h2, h3, h4, h5, h6) {
margin-top: var(--app-typography-spacing-top);
}
p {
margin-bottom: var(--app-typography-spacing-vertical);
}
hgroup {
margin-bottom: var(--app-typography-spacing-vertical);
}
.flex hgroup {
margin-bottom: 0;
}
hgroup > * {
margin-top: 0;
margin-bottom: 0;
}
hgroup > :not(:first-child):last-child {
--app-color: var(--app-muted-color);
--app-font-weight: unset;
font-size: 1rem;
}
:where(ol, ul) li {
margin-bottom: calc(var(--app-typography-spacing-vertical) * 0.25);
}
:where(dl, ol, ul) :where(dl, ol, ul) {
margin: 0;
margin-top: calc(var(--app-typography-spacing-vertical) * 0.25);
}
ul li {
list-style: square;
}
mark {
padding: 0.125rem 0.25rem;
background-color: var(--app-mark-background-color);
color: var(--app-mark-color);
vertical-align: baseline;
}
abbr[title] {
border-bottom: 1px dotted;
text-decoration: none;
cursor: help;
}
ins {
color: var(--app-ins-color);
text-decoration: none;
}
del {
color: var(--app-del-color);
}
::-moz-selection {
background-color: var(--app-text-selection-color);
}
::selection {
background-color: var(--app-text-selection-color);
}
:where(a:not([role="button"])),
[role="link"] {
--app-color: var(--app-primary);
--app-background-color: transparent;
--app-underline: var(--app-primary-underline);
outline: 0;
background-color: var(--app-background-color);
color: cornflowerblue;
-webkit-text-decoration: var(--app-text-decoration);
text-decoration: var(--app-text-decoration);
text-decoration-color: var(--app-underline);
text-underline-offset: 0.125em;
transition:
background-color var(--app-transition),
color var(--app-transition),
box-shadow var(--app-transition),
-webkit-text-decoration var(--app-transition);
transition:
background-color var(--app-transition),
color var(--app-transition),
text-decoration var(--app-transition),
box-shadow var(--app-transition);
transition:
background-color var(--app-transition),
color var(--app-transition),
text-decoration var(--app-transition),
box-shadow var(--app-transition),
-webkit-text-decoration var(--app-transition);
}
:where(a:not([role="button"])):is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
),
[role="link"]:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
) {
--app-color: var(--app-primary-hover);
--app-underline: var(--app-primary-hover-underline);
--app-text-decoration: underline;
}
:where(a:not([role="button"])):focus-visible,
[role="link"]:focus-visible {
box-shadow: 0 0 0 var(--app-outline-width) var(--app-primary-focus);
}
:where(a:not([role="button"])).secondary,
[role="link"].secondary {
--app-color: var(--app-secondary);
--app-underline: var(--app-secondary-underline);
}
:where(a:not([role="button"])).secondary:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
),
[role="link"].secondary:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
) {
--app-color: var(--app-secondary-hover);
--app-underline: var(--app-secondary-hover-underline);
}
:where(a:not([role="button"])).contrast,
[role="link"].contrast {
--app-color: var(--app-contrast);
--app-underline: var(--app-contrast-underline);
}
:where(a:not([role="button"])).contrast:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
),
[role="link"].contrast:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
) {
--app-color: var(--app-contrast-hover);
--app-underline: var(--app-contrast-hover-underline);
}
a[role="button"] {
display: inline-block;
}
button {
margin: 0;
overflow: visible;
font-family: inherit;
text-transform: none;
}
a.transparent[role="button"],
button.transparent,
.transparent[role="button"] {
background: transparent;
border: none;
box-shadow: none;
color: var(--app-muted-color);
}
a.transparent[role="button"]:hover,
button.transparent:hover,
.transparent[role="button"]:hover {
background: var(--app-muted-border-color);
color: var(--app-contrast);
}
[type="button"],
[type="reset"],
[type="submit"],
button {
-webkit-appearance: button;
}
[role="button"],
[type="button"],
[type="file"]::file-selector-button,
[type="reset"],
[type="submit"],
button {
--app-background-color: var(--app-primary-background);
--app-border-color: var(--app-primary-border);
--app-color: var(--app-primary-inverse);
--app-box-shadow: var(--app-button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
padding: var(--app-button-padding-vertical)
var(--app-button-padding-horizontal);
border: var(--app-border-width) solid var(--app-border-color);
border-radius: var(--app-border-radius);
outline: 0;
background-color: var(--app-background-color);
box-shadow: var(--app-box-shadow);
color: var(--app-color);
font-weight: var(--app-font-weight);
font-size: 1rem;
line-height: var(--app-line-height);
text-align: center;
text-decoration: none;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
transition:
background-color var(--app-transition),
border-color var(--app-transition),
color var(--app-transition),
box-shadow var(--app-transition);
}
:where(
button,
[type="submit"],
[type="reset"],
[type="button"],
[role="button"]
).small {
--app-button-padding-vertical: var(--app-button-padding-vertical-small);
--app-button-padding-horizontal: var(--app-button-padding-horizontal-small);
font-size: 13px;
}
[role="button"]:is(:hover, :active, :focus),
[role="button"]:is([aria-current]:not([aria-current="false"])),
[type="button"]:is(:hover, :active, :focus),
[type="button"]:is([aria-current]:not([aria-current="false"])),
[type="file"]::file-selector-button:is(:hover, :active, :focus),
[type="file"]::file-selector-button:is(
[aria-current]:not([aria-current="false"])
),
[type="reset"]:is(:hover, :active, :focus),
[type="reset"]:is([aria-current]:not([aria-current="false"])),
[type="submit"]:is(:hover, :active, :focus),
[type="submit"]:is([aria-current]:not([aria-current="false"])),
button:is(:hover, :active, :focus),
button:is([aria-current]:not([aria-current="false"])) {
--app-background-color: var(--app-primary-hover-background);
--app-border-color: var(--app-primary-hover-border);
--app-box-shadow: var(
--app-button-hover-box-shadow,
0 0 0 rgba(0, 0, 0, 0)
);
--app-color: var(--app-primary-inverse);
}
[role="button"]:focus,
[role="button"]:is([aria-current]:not([aria-current="false"])):focus,
[type="button"]:focus,
[type="button"]:is([aria-current]:not([aria-current="false"])):focus,
[type="file"]::file-selector-button:focus,
[type="file"]::file-selector-button:is(
[aria-current]:not([aria-current="false"])
):focus,
[type="reset"]:focus,
[type="reset"]:is([aria-current]:not([aria-current="false"])):focus,
[type="submit"]:focus,
[type="submit"]:is([aria-current]:not([aria-current="false"])):focus,
button:focus,
button:is([aria-current]:not([aria-current="false"])):focus {
--app-box-shadow:
var(--app-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
0 0 0 var(--app-outline-width) var(--app-primary-focus);
}
[type="button"],
[type="reset"] {
margin-bottom: var(--app-spacing);
}
:is(button, [type="submit"], [type="button"], [role="button"]).secondary,
[type="file"]::file-selector-button,
[type="reset"] {
--app-background-color: var(--app-secondary-background);
--app-border-color: var(--app-secondary-border);
--app-color: var(--app-secondary-inverse);
cursor: pointer;
}
:is(button, [type="submit"], [type="button"], [role="button"]).secondary:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
),
[type="file"]::file-selector-button:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
),
[type="reset"]:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
) {
--app-background-color: var(--app-secondary-hover-background);
--app-border-color: var(--app-secondary-hover-border);
--app-color: var(--app-secondary-inverse);
}
:is(
button,
[type="submit"],
[type="button"],
[role="button"]
).secondary:focus,
:is(button, [type="submit"], [type="button"], [role="button"]).secondary:is(
[aria-current]:not([aria-current="false"])
):focus,
[type="file"]::file-selector-button:focus,
[type="file"]::file-selector-button:is(
[aria-current]:not([aria-current="false"])
):focus,
[type="reset"]:focus,
[type="reset"]:is([aria-current]:not([aria-current="false"])):focus {
--app-box-shadow:
var(--app-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
0 0 0 var(--app-outline-width) var(--app-secondary-focus);
}
:is(button, [type="submit"], [type="button"], [role="button"]).contrast {
--app-background-color: var(--app-contrast-background);
--app-border-color: var(--app-contrast-border);
--app-color: var(--app-contrast-inverse);
}
:is(button, [type="submit"], [type="button"], [role="button"]).contrast:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
) {
--app-background-color: var(--app-contrast-hover-background);
--app-border-color: var(--app-contrast-hover-border);
--app-color: var(--app-contrast-inverse);
}
:is(button, [type="submit"], [type="button"], [role="button"]).contrast:focus,
:is(button, [type="submit"], [type="button"], [role="button"]).contrast:is(
[aria-current]:not([aria-current="false"])
):focus {
--app-box-shadow:
var(--app-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
0 0 0 var(--app-outline-width) var(--app-contrast-focus);
}
:is(button, [type="submit"], [type="button"], [role="button"]).outline,
[type="reset"].outline {
--app-background-color: transparent;
--app-color: var(--app-primary);
--app-border-color: var(--app-primary);
}
:is(button, [type="submit"], [type="button"], [role="button"]).outline:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
),
[type="reset"].outline:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
) {
--app-background-color: transparent;
--app-color: var(--app-primary-hover);
--app-border-color: var(--app-primary-hover);
}
:is(
button,
[type="submit"],
[type="button"],
[role="button"]
).outline.secondary,
[type="reset"].outline {
--app-color: var(--app-secondary);
--app-border-color: var(--app-secondary);
}
:is(
button,
[type="submit"],
[type="button"],
[role="button"]
).outline.secondary:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
),
[type="reset"].outline:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
) {
--app-color: var(--app-secondary-hover);
--app-border-color: var(--app-secondary-hover);
}
:is(
button,
[type="submit"],
[type="button"],
[role="button"]
).outline.contrast {
--app-color: var(--app-contrast);
--app-border-color: var(--app-contrast);
}
:is(
button,
[type="submit"],
[type="button"],
[role="button"]
).outline.contrast:is(
[aria-current]:not([aria-current="false"]),
:hover,
:active,
:focus
) {
--app-color: var(--app-contrast-hover);
--app-border-color: var(--app-contrast-hover);
}
:where(
button,
[type="submit"],
[type="reset"],
[type="button"],
[role="button"]
)[disabled],
:where(fieldset[disabled])
:is(
button,
[type="submit"],
[type="button"],
[type="reset"],
[role="button"]
) {
opacity: 0.5;
pointer-events: none;
}
:where(table) {
width: 100%;
border-collapse: collapse;
border-spacing: 0;
text-indent: 0;
}
td,
th {
padding: calc(var(--app-spacing) / 2) var(--app-spacing);
border-bottom: var(--app-border-width) solid var(--app-table-border-color);
background-color: var(--app-background-color);
color: var(--app-color);
font-weight: var(--app-font-weight);
text-align: left;
text-align: start;
}
tfoot td,
tfoot th {
border-top: var(--app-border-width) solid var(--app-table-border-color);
border-bottom: 0;
}
table.striped tbody tr:nth-child(odd) td,
table.striped tbody tr:nth-child(odd) th {
background-color: var(--app-table-row-stripped-background-color);
}
:where(audio, canvas, iframe, img, svg, video) {
vertical-align: middle;
}
audio,
video {
display: inline-block;
}
audio:not([controls]) {
display: none;
height: 0;
}
:where(iframe) {
border-style: none;
}
img {
max-width: 100%;
height: auto;
border-style: none;
}
img.rounded {
border-radius: 0.5rem;
}
:where(svg:not([fill])) {
fill: currentColor;
}
svg:not(:host),
svg:not(:root) {
overflow: hidden;
}
code,
kbd,
pre,
samp {
font-size: 0.875em;
font-family: var(--app-font-family);
}
pre code,
pre samp {
font-size: inherit;
font-family: inherit;
}
pre {
-ms-overflow-style: scrollbar;
overflow: auto;
}
code,
kbd,
pre,
samp {
border-radius: var(--app-border-radius);
background: var(--app-code-background-color);
color: var(--app-code-color);
font-weight: var(--app-font-weight);
line-height: initial;
}
code,
kbd,
samp {
display: inline-block;
padding: 0.375rem;
}
pre {
display: block;
margin-bottom: var(--app-spacing);
overflow-x: auto;
}
pre > code,
pre > samp {
display: block;
padding: var(--app-spacing);
background: 0 0;
line-height: var(--app-line-height);
}
.code-toolbar {
position: relative;
margin-block: var(--app-spacing);
}
.code-toolbar > .toolbar {
position: absolute;
top: 0.5rem;
right: 0.5rem;
z-index: 1;
}
.code-toolbar > .toolbar .toolbar-item {
display: inline-flex;
}
.code-toolbar > .toolbar .copy-to-clipboard-button {
--app-background-color: transparent;
--app-border-color: var(--app-muted-border-color);
--app-color: var(--app-muted-color);
--app-box-shadow: none;
--app-button-padding-vertical: var(--app-button-padding-vertical-small);
--app-button-padding-horizontal: var(--app-button-padding-horizontal-small);
font-size: 0.75rem;
}
.code-toolbar > .toolbar .copy-to-clipboard-button:is(:hover, :focus) {
--app-background-color: var(--app-card-sectioning-background-color);
--app-border-color: var(--app-muted-border-color);
}
.code-toolbar > pre > code {
padding-top: calc(var(--app-spacing) * 2);
}
kbd {
background-color: var(--app-code-kbd-background-color);
color: var(--app-code-kbd-color);
vertical-align: baseline;
}
figure {
display: block;
margin: 0;
padding: 0;
}
figure figcaption {
padding: calc(var(--app-spacing) * 0.5) 0;
color: var(--app-muted-color);
}
hr {
height: 0;
margin: var(--app-typography-spacing-vertical) 0;
border: 0;
border-top: 1px solid var(--app-muted-border-color);
color: inherit;
}
[hidden],
template {
display: none !important;
}
canvas {
display: inline-block;
}
input,
optgroup,
select,
textarea {
margin: 0;
font-size: 1rem;
line-height: var(--app-line-height);
font-family: inherit;
letter-spacing: inherit;
}
input {
overflow: visible;
}
select {
text-transform: none;
}
legend {
max-width: 100%;
white-space: normal;
margin: 0;
display: block;
color: var(--app-color);
font-weight: var(--app-form-label-font-weight, var(--app-font-weight));
}
textarea {
overflow: auto;
}
[type="checkbox"],
[type="radio"] {
padding: 0;
}
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
:-moz-focusring {
outline: 0;
}
:-moz-ui-invalid {
box-shadow: none;
}
::-ms-expand {
display: none;
}
[type="file"],
[type="range"] {
padding: 0;
border-width: 0;
}
input:not([type="checkbox"], [type="radio"], [type="range"]) {
height: calc(
1rem * var(--app-line-height) + var(--app-form-element-spacing-vertical) *
2 + var(--app-border-width) * 2
);
}
fieldset {
width: 100%;
margin-bottom: var(--app-spacing);
border: 1px solid var(--app-form-element-border-color);
padding: var(--app-spacing);
border-radius: var(--app-border-radius);
}
fieldset[role="group"] {
padding: 0;
border: 0;
border-radius: 0;
}
label {
display: block;
margin-bottom: calc(var(--app-spacing) * 0.375);
color: var(--app-color);
font-weight: var(--app-form-label-font-weight, var(--app-font-weight));
font-size: small;
}
label:has(input[required]) span:after {
content: " *";
}
button[type="submit"],
input:not([type="checkbox"], [type="radio"]),
select,
textarea {
width: 100%;
}
input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]),
select,
textarea {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding: var(--app-form-element-spacing-vertical)
var(--app-form-element-spacing-horizontal);
}
input,
select,
textarea {
--app-background-color: var(--app-form-element-background-color);
--app-border-color: var(--app-form-element-border-color);
--app-color: var(--app-form-element-color);
--app-box-shadow: none;
border: var(--app-border-width) solid var(--app-border-color);
border-radius: var(--app-border-radius);
outline: 0;
background-color: var(--app-background-color);
box-shadow: var(--app-box-shadow);
color: var(--app-color);
font-weight: var(--app-font-weight);
transition:
background-color var(--app-transition),
border-color var(--app-transition),
color var(--app-transition),
box-shadow var(--app-transition);
}
:where(select, textarea):not([readonly]):is(:active, :focus),
input:not(
[type="submit"],
[type="button"],
[type="reset"],
[type="checkbox"],
[type="radio"],
[readonly]
):is(:active, :focus) {
--app-background-color: var(--app-form-element-active-background-color);
}
:where(select, textarea):not([readonly]):is(:active, :focus),
input:not(
[type="submit"],
[type="button"],
[type="reset"],
[role="switch"],
[readonly]
):is(:active, :focus) {
--app-border-color: var(--app-form-element-active-border-color);
}
:where(select, textarea):not([readonly]):focus,
input:not(
[type="submit"],
[type="button"],
[type="reset"],
[type="range"],
[type="file"],
[readonly]
):focus {
--app-box-shadow: 0 0 0 var(--app-outline-width)
var(--app-form-element-focus-color);
}
input:not(
[type="submit"],
[type="button"],
[type="reset"],
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[readonly]:not([disabled]),
textarea[readonly]:not([disabled]),
select[readonly]:not([disabled]) {
--app-background-color: var(--app-form-element-readonly-background-color);
--app-border-color: var(--app-form-element-readonly-border-color);
--app-color: var(--app-form-element-readonly-color);
--app-box-shadow: inset 0 0 0 0.0625rem
var(--app-form-element-readonly-border-color);
}
input:not(
[type="submit"],
[type="button"],
[type="reset"],
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[readonly]:not([disabled]):focus,
textarea[readonly]:not([disabled]):focus,
select[readonly]:not([disabled]):focus {
--app-box-shadow: 0 0 0 var(--app-outline-width)
var(--app-form-element-readonly-focus-color);
}
:where(fieldset[disabled])
:is(
input:not([type="submit"], [type="button"], [type="reset"]),
select,
textarea
),
input:not([type="submit"], [type="button"], [type="reset"])[disabled],
label[aria-disabled="true"],
select[disabled],
textarea[disabled] {
opacity: var(--app-form-element-disabled-opacity);
pointer-events: none;
}
label[aria-disabled="true"] input[disabled] {
opacity: 1;
}
:where(input, select, textarea):not(
[type="checkbox"],
[type="radio"],
[type="date"],
[type="datetime-local"],
[type="month"],
[type="time"],
[type="week"],
[type="range"]
)[aria-invalid] {
padding-right: calc(
var(--app-form-element-spacing-horizontal) + 1.5rem
) !important;
padding-left: var(--app-form-element-spacing-horizontal);
padding-inline-start: var(--app-form-element-spacing-horizontal) !important;
padding-inline-end: calc(
var(--app-form-element-spacing-horizontal) + 1.5rem
) !important;
background-position: center right 0.75rem;
background-size: 1rem auto;
background-repeat: no-repeat;
}
:where(input, select, textarea):not(
[type="checkbox"],
[type="radio"],
[type="date"],
[type="datetime-local"],
[type="month"],
[type="time"],
[type="week"],
[type="range"]
)[aria-invalid="false"]:not(select) {
background-image: var(--app-icon-valid);
}
:where(input, select, textarea):not(
[type="checkbox"],
[type="radio"],
[type="date"],
[type="datetime-local"],
[type="month"],
[type="time"],
[type="week"],
[type="range"]
)[aria-invalid="true"]:not(select) {
background-image: var(--app-icon-invalid);
}
:where(input, select, textarea)[aria-invalid="false"] {
--app-border-color: var(--app-form-element-valid-border-color);
}
:where(input, select, textarea)[aria-invalid="false"]:is(:active, :focus) {
--app-border-color: var(
--app-form-element-valid-active-border-color
) !important
;
}
:where(input, select, textarea)[aria-invalid="false"]:is(:active, :focus):not(
[type="checkbox"],
[type="radio"]
) {
--app-box-shadow: 0 0 0 var(--app-outline-width)
var(--app-form-element-valid-focus-color) !important
;
}
:where(input, select, textarea)[aria-invalid="true"] {
--app-border-color: var(--app-form-element-invalid-border-color);
}
:where(input, select, textarea)[aria-invalid="true"]:is(:active, :focus) {
--app-border-color: var(
--app-form-element-invalid-active-border-color
) !important
;
}
:where(input, select, textarea)[aria-invalid="true"]:is(:active, :focus):not(
[type="checkbox"],
[type="radio"]
) {
--app-box-shadow: 0 0 0 var(--app-outline-width)
var(--app-form-element-invalid-focus-color) !important
;
}
[dir="rtl"]
:where(input, select, textarea):not([type="checkbox"], [type="radio"]):is(
[aria-invalid],
[aria-invalid="true"],
[aria-invalid="false"]
) {
background-position: center left 0.75rem;
}
input::-webkit-input-placeholder,
input::placeholder,
select:invalid,
textarea::-webkit-input-placeholder,
textarea::placeholder {
color: var(--app-form-element-placeholder-color);
opacity: 1;
}
input:not([type="checkbox"], [type="radio"]),
select,
textarea {
margin-bottom: var(--app-spacing);
}
select::-ms-expand {
border: 0;
background-color: transparent;
}
select:not([multiple], [size]) {
padding-right: calc(var(--app-form-element-spacing-horizontal) + 1.5rem);
padding-left: var(--app-form-element-spacing-horizontal);
padding-inline-start: var(--app-form-element-spacing-horizontal);
padding-inline-end: calc(
var(--app-form-element-spacing-horizontal) + 1.5rem
);
background-image: var(--app-icon-chevron);
background-position: center right 0.75rem;
background-size: 1rem auto;
background-repeat: no-repeat;
}
select[multiple] option:checked {
background: var(--app-form-element-selected-background-color);
color: var(--app-form-element-color);
}
[dir="rtl"] select:not([multiple], [size]) {
background-position: center left 0.75rem;
}
textarea {
display: block;
resize: vertical;
}
textarea[aria-invalid] {
--app-icon-height: calc(
1rem * var(--app-line-height) + var(--app-form-element-spacing-vertical) *
2 + var(--app-border-width) * 2
);
background-position: top right 0.75rem !important;
background-size: 1rem var(--app-icon-height) !important;
}
:where(input, select, textarea, fieldset, .grid) + small {
display: block;
width: 100%;
margin-top: calc(var(--app-spacing) * -0.75);
margin-bottom: var(--app-spacing);
color: var(--app-muted-color);
}
:where(input, select, textarea, fieldset, .grid)[aria-invalid="false"]
+ small {
color: var(--app-ins-color);
}
:where(input, select, textarea, fieldset, .grid)[aria-invalid="true"]
+ small {
color: var(--app-del-color);
}
label > :where(input, select, textarea) {
margin-top: calc(var(--app-spacing) * 0.25);
}
label:has([type="checkbox"], [type="radio"]) {
width: -moz-fit-content;
width: fit-content;
cursor: pointer;
}
[type="checkbox"],
[type="radio"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
width: 1.25em;
height: 1.25em;
margin-top: -0.125em;
margin-inline-end: 0.5em;
border-width: var(--app-border-width);
vertical-align: middle;
cursor: pointer;
flex-shrink: 0;
}
[type="checkbox"]::-ms-check,
[type="radio"]::-ms-check {
display: none;
}
[type="checkbox"]:checked,
[type="checkbox"]:checked:active,
[type="checkbox"]:checked:focus,
[type="radio"]:checked,
[type="radio"]:checked:active,
[type="radio"]:checked:focus {
--app-background-color: var(--app-primary-background);
--app-border-color: var(--app-primary-border);
background-image: var(--app-icon-checkbox);
background-position: center;
background-size: 0.75em auto;
background-repeat: no-repeat;
}
[type="checkbox"] ~ label,
[type="radio"] ~ label {
display: inline-block;
margin-bottom: 0;
cursor: pointer;
}
[type="checkbox"] ~ label:not(:last-of-type),
[type="radio"] ~ label:not(:last-of-type) {
margin-inline-end: 1em;
}
[type="checkbox"]:indeterminate {
--app-background-color: var(--app-primary-background);
--app-border-color: var(--app-primary-border);
background-image: var(--app-icon-minus);
background-position: center;
background-size: 0.75em auto;
background-repeat: no-repeat;
}
[type="radio"] {
border-radius: 50%;
}
[type="radio"]:checked,
[type="radio"]:checked:active,
[type="radio"]:checked:focus {
--app-background-color: var(--app-primary-inverse);
border-width: 0.35em;
background-image: none;
}
[type="checkbox"][role="switch"] {
--app-background-color: var(--app-switch-background-color);
--app-color: var(--app-switch-color);
width: 2.25em;
height: 1.25em;
border: var(--app-border-width) solid var(--app-border-color);
border-radius: 1.25em;
background-color: var(--app-background-color);
line-height: 1.25em;
}
[type="checkbox"][role="switch"]:not([aria-invalid]) {
--app-border-color: var(--app-switch-background-color);
}
[type="checkbox"][role="switch"]:before {
display: block;
aspect-ratio: 1;
height: 100%;
border-radius: 50%;
background-color: var(--app-color);
box-shadow: var(--app-switch-thumb-box-shadow);
content: "";
transition: margin 0.1s ease-in-out;
}
[type="checkbox"][role="switch"]:focus {
--app-background-color: var(--app-switch-background-color);
--app-border-color: var(--app-switch-background-color);
}
[type="checkbox"][role="switch"]:checked {
--app-background-color: var(--app-switch-checked-background-color);
--app-border-color: var(--app-switch-checked-background-color);
background-image: none;
}
[type="checkbox"][role="switch"]:checked::before {
margin-inline-start: calc(2.25em - 1.25em);
}
[type="checkbox"][role="switch"][disabled] {
--app-background-color: var(--app-border-color);
}
[type="checkbox"][aria-invalid="false"]:checked,
[type="checkbox"][aria-invalid="false"]:checked:active,
[type="checkbox"][aria-invalid="false"]:checked:focus,
[type="checkbox"][role="switch"][aria-invalid="false"]:checked,
[type="checkbox"][role="switch"][aria-invalid="false"]:checked:active,
[type="checkbox"][role="switch"][aria-invalid="false"]:checked:focus {
--app-background-color: var(--app-form-element-valid-border-color);
}
[type="checkbox"]:checked:active[aria-invalid="true"],
[type="checkbox"]:checked:focus[aria-invalid="true"],
[type="checkbox"]:checked[aria-invalid="true"],
[type="checkbox"][role="switch"]:checked:active[aria-invalid="true"],
[type="checkbox"][role="switch"]:checked:focus[aria-invalid="true"],
[type="checkbox"][role="switch"]:checked[aria-invalid="true"] {
--app-background-color: var(--app-form-element-invalid-border-color);
}
[type="checkbox"][aria-invalid="false"]:checked,
[type="checkbox"][aria-invalid="false"]:checked:active,
[type="checkbox"][aria-invalid="false"]:checked:focus,
[type="checkbox"][role="switch"][aria-invalid="false"]:checked,
[type="checkbox"][role="switch"][aria-invalid="false"]:checked:active,
[type="checkbox"][role="switch"][aria-invalid="false"]:checked:focus,
[type="radio"][aria-invalid="false"]:checked,
[type="radio"][aria-invalid="false"]:checked:active,
[type="radio"][aria-invalid="false"]:checked:focus {
--app-border-color: var(--app-form-element-valid-border-color);
}
[type="checkbox"]:checked:active[aria-invalid="true"],
[type="checkbox"]:checked:focus[aria-invalid="true"],
[type="checkbox"]:checked[aria-invalid="true"],
[type="checkbox"][role="switch"]:checked:active[aria-invalid="true"],
[type="checkbox"][role="switch"]:checked:focus[aria-invalid="true"],
[type="checkbox"][role="switch"]:checked[aria-invalid="true"],
[type="radio"]:checked:active[aria-invalid="true"],
[type="radio"]:checked:focus[aria-invalid="true"],
[type="radio"]:checked[aria-invalid="true"] {
--app-border-color: var(--app-form-element-invalid-border-color);
}
[type="color"]::-webkit-color-swatch-wrapper {
padding: 0;
}
[type="color"]::-moz-focus-inner {
padding: 0;
}
[type="color"]::-webkit-color-swatch {
border: 0;
border-radius: calc(var(--app-border-radius) * 0.5);
}
[type="color"]::-moz-color-swatch {
border: 0;
border-radius: calc(var(--app-border-radius) * 0.5);
}
input:not(
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
):is(
[type="date"],
[type="datetime-local"],
[type="month"],
[type="time"],
[type="week"]
) {
--app-icon-position: 0.75rem;
--app-icon-width: 1rem;
padding-right: calc(var(--app-icon-width) + var(--app-icon-position));
background-image: var(--app-icon-date);
background-position: center right var(--app-icon-position);
background-size: var(--app-icon-width) auto;
background-repeat: no-repeat;
}
input:not(
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[type="time"] {
background-image: var(--app-icon-time);
}
[type="date"]::-webkit-calendar-picker-indicator,
[type="datetime-local"]::-webkit-calendar-picker-indicator,
[type="month"]::-webkit-calendar-picker-indicator,
[type="time"]::-webkit-calendar-picker-indicator,
[type="week"]::-webkit-calendar-picker-indicator {
width: var(--app-icon-width);
margin-right: calc(var(--app-icon-width) * -1);
margin-left: var(--app-icon-position);
opacity: 0;
}
@-moz-document url-prefix() {
[type="date"],
[type="datetime-local"],
[type="month"],
[type="time"],
[type="week"] {
padding-right: var(--app-form-element-spacing-horizontal) !important;
background-image: none !important;
}
}
[dir="rtl"]
:is(
[type="date"],
[type="datetime-local"],
[type="month"],
[type="time"],
[type="week"]
) {
text-align: right;
}
[type="file"] {
--app-color: var(--app-muted-color);
margin-left: calc(var(--app-outline-width) * -1);
background: 0 0;
border: 2px dashed var(--app-form-element-border-color);
padding: 1.5rem;
height: auto !important;
}
[type="file"]::file-selector-button {
margin-right: calc(var(--app-spacing) / 2);
padding: calc(var(--app-form-element-spacing-vertical) * 0.5)
var(--app-form-element-spacing-horizontal);
}
[type="file"]:is(:hover, :active, :focus)::file-selector-button {
--app-background-color: var(--app-secondary-hover-background);
--app-border-color: var(--app-secondary-hover-border);
}
[type="file"]:focus::file-selector-button {
--app-box-shadow:
var(--app-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
0 0 0 var(--app-outline-width) var(--app-secondary-focus);
}
[type="range"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
width: 100%;
height: 1.25rem;
background: 0 0;
}
[type="range"]::-webkit-slider-runnable-track {
width: 100%;
height: 0.375rem;
border-radius: var(--app-border-radius);
background-color: var(--app-range-border-color);
-webkit-transition:
background-color var(--app-transition),
box-shadow var(--app-transition);
transition:
background-color var(--app-transition),
box-shadow var(--app-transition);
}
[type="range"]::-moz-range-track {
width: 100%;
height: 0.375rem;
border-radius: var(--app-border-radius);
background-color: var(--app-range-border-color);
-moz-transition:
background-color var(--app-transition),
box-shadow var(--app-transition);
transition:
background-color var(--app-transition),
box-shadow var(--app-transition);
}
[type="range"]::-ms-track {
width: 100%;
height: 0.375rem;
border-radius: var(--app-border-radius);
background-color: var(--app-range-border-color);
-ms-transition:
background-color var(--app-transition),
box-shadow var(--app-transition);
transition:
background-color var(--app-transition),
box-shadow var(--app-transition);
}
[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
width: 1.25rem;
height: 1.25rem;
margin-top: -0.4375rem;
border: 2px solid var(--app-range-thumb-border-color);
border-radius: 50%;
background-color: var(--app-range-thumb-color);
cursor: pointer;
-webkit-transition:
background-color var(--app-transition),
transform var(--app-transition);
transition:
background-color var(--app-transition),
transform var(--app-transition);
}
[type="range"]::-moz-range-thumb {
-webkit-appearance: none;
width: 1.25rem;
height: 1.25rem;
margin-top: -0.4375rem;
border: 2px solid var(--app-range-thumb-border-color);
border-radius: 50%;
background-color: var(--app-range-thumb-color);
cursor: pointer;
-moz-transition:
background-color var(--app-transition),
transform var(--app-transition);
transition:
background-color var(--app-transition),
transform var(--app-transition);
}
[type="range"]::-ms-thumb {
-webkit-appearance: none;
width: 1.25rem;
height: 1.25rem;
margin-top: -0.4375rem;
border: 2px solid var(--app-range-thumb-border-color);
border-radius: 50%;
background-color: var(--app-range-thumb-color);
cursor: pointer;
-ms-transition:
background-color var(--app-transition),
transform var(--app-transition);
transition:
background-color var(--app-transition),
transform var(--app-transition);
}
[type="range"]:active,
[type="range"]:focus-within {
--app-range-border-color: var(--app-range-active-border-color);
--app-range-thumb-color: var(--app-range-thumb-active-color);
}
[type="range"]:active::-webkit-slider-thumb {
transform: scale(1.25);
}
[type="range"]:active::-moz-range-thumb {
transform: scale(1.25);
}
[type="range"]:active::-ms-thumb {
transform: scale(1.25);
}
input:not(
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[type="search"] {
padding-inline-start: calc(
var(--app-form-element-spacing-horizontal) + 1.75rem
);
background-image: var(--app-icon-search);
background-position: center left
calc(var(--app-form-element-spacing-horizontal) + 0.125rem);
background-size: 1rem auto;
background-repeat: no-repeat;
}
input:not(
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[type="search"][aria-invalid] {
padding-inline-start: calc(
var(--app-form-element-spacing-horizontal) + 1.75rem
) !important;
background-position:
center left 1.125rem,
center right 0.75rem;
}
input:not(
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[type="search"][aria-invalid="false"] {
background-image: var(--app-icon-search), var(--app-icon-valid);
}
input:not(
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[type="search"][aria-invalid="true"] {
background-image: var(--app-icon-search), var(--app-icon-invalid);
}
[dir="rtl"]
:where(input):not(
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[type="search"] {
background-position: center right 1.125rem;
}
[dir="rtl"]
:where(input):not(
[type="checkbox"],
[type="radio"],
[type="range"],
[type="file"]
)[type="search"][aria-invalid] {
background-position:
center right 1.125rem,
center left 0.75rem;
}
details {
display: block;
margin-bottom: var(--app-spacing);
}
details summary {
line-height: 1rem;
list-style-type: none;
cursor: pointer;
transition: color var(--app-transition);
}
details summary:not([role]) {
color: var(--app-accordion-close-summary-color);
}
details summary::-webkit-details-marker {
display: none;
}
details summary::marker {
display: none;
}
details summary::-moz-list-bullet {
list-style-type: none;
}
details summary::after {
display: block;
width: 1rem;
height: 1rem;
margin-inline-start: calc(var(--app-spacing, 1rem) * 0.5);
float: right;
transform: rotate(-90deg);
background-image: var(--app-icon-chevron);
background-position: right center;
background-size: 1rem auto;
background-repeat: no-repeat;
content: "";
transition: transform var(--app-transition);
}
/* Opt-out hook for components that should not render the default summary chevron. */
details[data-summary-chevron="none"] > summary::after,
details > summary[data-summary-chevron="none"]::after {
display: none !important;
content: none !important;
background-image: none !important;
}
details summary:focus {
outline: 0;
}
details summary:focus:not([role]) {
color: var(--app-accordion-active-summary-color);
}
details summary:focus-visible:not([role]) {
outline: var(--app-outline-width) solid var(--app-primary-focus);
outline-offset: calc(var(--app-spacing, 1rem) * 0.5);
color: var(--app-primary);
}
details summary[role="button"] {
width: 100%;
text-align: left;
}
details summary[role="button"]::after {
height: calc(1rem * var(--app-line-height, 1.5));
}
details[open] > summary {
margin-bottom: calc(var(--app-spacing) * 0.5);
}
details[open] > summary:not([role]):not(:focus) {
color: var(--app-accordion-close-summary-color);
}
details[open] > summary::after {
transform: rotate(0);
}
[dir="rtl"] details summary {
text-align: right;
}
[dir="rtl"] details summary::after {
float: left;
background-position: left center;
}
article {
margin-bottom: var(--app-block-spacing-vertical);
padding: var(--app-block-spacing-vertical)
var(--app-block-spacing-horizontal);
border-radius: var(--app-border-radius);
background: var(--app-card-background-color);
box-shadow: var(--app-card-box-shadow);
}
article:not(:has(footer)) p:last-child {
margin: 0;
}
article > footer,
article > header {
margin-right: calc(var(--app-block-spacing-horizontal) * -1);
margin-left: calc(var(--app-block-spacing-horizontal) * -1);
padding: calc(var(--app-block-spacing-vertical) * 1)
var(--app-block-spacing-horizontal);
background-color: var(--app-card-sectioning-background-color);
}
article > header {
margin-top: calc(var(--app-block-spacing-vertical) * -1);
margin-bottom: var(--app-block-spacing-vertical);
border-bottom: var(--app-border-width) solid var(--app-card-border-color);
border-top-right-radius: var(--app-border-radius);
border-top-left-radius: var(--app-border-radius);
}
article > header > hgroup {
margin: 0;
}
article > footer {
margin-top: var(--app-block-spacing-vertical);
margin-bottom: calc(var(--app-block-spacing-vertical) * -1);
border-top: var(--app-border-width) solid var(--app-card-border-color);
border-bottom-right-radius: var(--app-border-radius);
border-bottom-left-radius: var(--app-border-radius);
}
details.dropdown {
position: relative;
border-bottom: none;
}
details.dropdown > a::after,
details.dropdown > button::after,
details.dropdown > summary::after {
display: block;
width: 1rem;
height: calc(1rem * var(--app-line-height, 1.5));
margin-inline-start: 0.25rem;
float: right;
transform: rotate(0) translateX(0.2rem);
background-image: var(--app-icon-chevron);
background-position: right center;
background-size: 1rem auto;
background-repeat: no-repeat;
content: "";
}
details.dropdown[data-summary-chevron="none"] > summary::after,
details.dropdown > summary[data-summary-chevron="none"]::after {
display: none !important;
content: none !important;
background-image: none !important;
}
nav details.dropdown {
margin-bottom: 0;
}
details.dropdown > summary:not([role]) {
height: calc(
1rem * var(--app-line-height) + var(--app-form-element-spacing-vertical) *
2 + var(--app-border-width) * 2
);
padding: var(--app-form-element-spacing-vertical)
var(--app-form-element-spacing-horizontal);
border: var(--app-border-width) solid var(--app-form-element-border-color);
border-radius: var(--app-border-radius);
background-color: var(--app-form-element-background-color);
color: var(--app-form-element-placeholder-color);
line-height: inherit;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
transition:
background-color var(--app-transition),
border-color var(--app-transition),
color var(--app-transition),
box-shadow var(--app-transition);
}
details.dropdown > summary:not([role]):active,
details.dropdown > summary:not([role]):focus {
border-color: var(--app-form-element-active-border-color);
background-color: var(--app-form-element-active-background-color);
}
details.dropdown > summary:not([role]):focus {
box-shadow: 0 0 0 var(--app-outline-width)
var(--app-form-element-focus-color);
}
details.dropdown > summary:not([role]):focus-visible {
outline: 0;
}
details.dropdown > summary:not([role])[aria-invalid="false"] {
--app-form-element-border-color: var(--app-form-element-valid-border-color);
--app-form-element-active-border-color: var(
--app-form-element-valid-focus-color
);
--app-form-element-focus-color: var(--app-form-element-valid-focus-color);
}
details.dropdown > summary:not([role])[aria-invalid="true"] {
--app-form-element-border-color: var(
--app-form-element-invalid-border-color
);
--app-form-element-active-border-color: var(
--app-form-element-invalid-focus-color
);
--app-form-element-focus-color: var(--app-form-element-invalid-focus-color);
}
nav details.dropdown {
display: inline;
margin: calc(var(--app-nav-element-spacing-vertical) * -1) 0;
}
nav details.dropdown > summary::after {
transform: rotate(0) translateX(0);
}
nav details.dropdown > summary:not([role]) {
height: calc(
1rem * var(--app-line-height) + var(--app-nav-link-spacing-vertical) * 2
);
padding: calc(
var(--app-nav-link-spacing-vertical) - var(--app-border-width) * 2
)
var(--app-nav-link-spacing-horizontal);
}
nav details.dropdown > summary:not([role]):focus-visible {
box-shadow: 0 0 0 var(--app-outline-width) var(--app-primary-focus);
}
details.dropdown > summary + ul {
display: flex;
z-index: 99;
position: absolute;
left: 0;
flex-direction: column;
width: 100%;
min-width: -moz-fit-content;
min-width: fit-content;
margin: 0;
margin-top: var(--app-outline-width);
padding: 0.25rem;
border: 1px solid var(--app-dropdown-border-color);
border-radius: var(--app-border-radius);
background-color: var(--app-dropdown-background-color);
box-shadow: var(--app-dropdown-box-shadow);
color: var(--app-dropdown-color);
white-space: nowrap;
opacity: 0;
transition:
opacity var(--app-transition),
transform 0s ease-in-out 1s;
}
details.dropdown > summary + ul[dir="rtl"] {
right: 0;
left: auto;
}
details.dropdown > summary + ul li {
width: 100%;
margin-bottom: 0;
padding: 0;
list-style: none;
text-align: left;
}
details.dropdown > summary + ul li a {
display: block;
width: 100%;
margin: 0;
padding: 0.375rem 0.5rem;
overflow: hidden;
border-radius: 3px;
color: var(--app-dropdown-color);
text-decoration: none;
text-overflow: ellipsis;
}
details.dropdown > summary + ul li a:active,
details.dropdown > summary + ul li a:focus,
details.dropdown > summary + ul li a:focus-visible,
details.dropdown > summary + ul li a:hover,
details.dropdown
> summary
+ ul
li
a[aria-current]:not([aria-current="false"]) {
background: color-mix(in srgb, var(--app-contrast) 8%, transparent);
}
details.dropdown > summary + ul li label {
width: 100%;
}
details.dropdown > summary + ul li:has(label):hover {
background: color-mix(in srgb, var(--app-contrast) 8%, transparent);
border-radius: 3px;
}
details.dropdown[open] > summary {
margin-bottom: 0;
}
details.dropdown[open] > summary + ul {
transform: scaleY(1);
opacity: 1;
transition:
opacity var(--app-transition),
transform 0s ease-in-out 0s;
}
details.dropdown[open] > summary::before {
display: block;
z-index: 1;
position: fixed;
width: 100vw;
height: 100vh;
inset: 0;
background: 0 0;
content: "";
cursor: default;
}
label > details.dropdown {
margin-top: calc(var(--app-spacing) * 0.25);
}
[role="group"],
[role="search"] {
display: inline-flex;
position: relative;
width: 100%;
margin-bottom: var(--app-spacing);
border-radius: var(--app-border-radius);
box-shadow: var(--app-group-box-shadow, 0 0 0 transparent);
vertical-align: middle;
transition: box-shadow var(--app-transition);
}
[role="group"] input:not([type="checkbox"], [type="radio"]),
[role="group"] select,
[role="group"] > *,
[role="search"] input:not([type="checkbox"], [type="radio"]),
[role="search"] select,
[role="search"] > * {
position: relative;
flex: 1 1 auto;
margin-bottom: 0;
}
[role="group"] input:not([type="checkbox"], [type="radio"]):not(:first-child),
[role="group"] select:not(:first-child),
[role="group"] > :not(:first-child),
[role="search"]
input:not([type="checkbox"], [type="radio"]):not(:first-child),
[role="search"] select:not(:first-child),
[role="search"] > :not(:first-child) {
margin-left: 0;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
[role="group"] input:not([type="checkbox"], [type="radio"]):not(:last-child),
[role="group"] select:not(:last-child),
[role="group"] > :not(:last-child),
[role="search"] input:not([type="checkbox"], [type="radio"]):not(:last-child),
[role="search"] select:not(:last-child),
[role="search"] > :not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
[role="group"] input:not([type="checkbox"], [type="radio"]):focus,
[role="group"] select:focus,
[role="group"] > :focus,
[role="search"] input:not([type="checkbox"], [type="radio"]):focus,
[role="search"] select:focus,
[role="search"] > :focus {
z-index: 2;
}
[role="group"] [role="button"]:not(:first-child),
[role="group"] [type="button"]:not(:first-child),
[role="group"] [type="reset"]:not(:first-child),
[role="group"] [type="submit"]:not(:first-child),
[role="group"] button:not(:first-child),
[role="group"] input:not([type="checkbox"], [type="radio"]):not(:first-child),
[role="group"] select:not(:first-child),
[role="search"] [role="button"]:not(:first-child),
[role="search"] [type="button"]:not(:first-child),
[role="search"] [type="reset"]:not(:first-child),
[role="search"] [type="submit"]:not(:first-child),
[role="search"] button:not(:first-child),
[role="search"]
input:not([type="checkbox"], [type="radio"]):not(:first-child),
[role="search"] select:not(:first-child) {
margin-left: calc(var(--app-border-width) * -1);
}
[role="group"] [role="button"],
[role="group"] [type="button"],
[role="group"] [type="reset"],
[role="group"] [type="submit"],
[role="group"] button,
[role="search"] [role="button"],
[role="search"] [type="button"],
[role="search"] [type="reset"],
[role="search"] [type="submit"],
[role="search"] button {
width: auto;
}
@supports selector(:has(*)) {
[role="group"]:has(
button:focus,
[type="submit"]:focus,
[type="button"]:focus,
[role="button"]:focus
),
[role="search"]:has(
button:focus,
[type="submit"]:focus,
[type="button"]:focus,
[role="button"]:focus
) {
--app-group-box-shadow: var(--app-group-box-shadow-focus-with-button);
}
[role="group"]:has(
button:focus,
[type="submit"]:focus,
[type="button"]:focus,
[role="button"]:focus
)
input:not([type="checkbox"], [type="radio"]),
[role="group"]:has(
button:focus,
[type="submit"]:focus,
[type="button"]:focus,
[role="button"]:focus
)
select,
[role="search"]:has(
button:focus,
[type="submit"]:focus,
[type="button"]:focus,
[role="button"]:focus
)
input:not([type="checkbox"], [type="radio"]),
[role="search"]:has(
button:focus,
[type="submit"]:focus,
[type="button"]:focus,
[role="button"]:focus
)
select {
border-color: transparent;
}
[role="group"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
),
[role="search"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
) {
--app-group-box-shadow: var(--app-group-box-shadow-focus-with-input);
}
[role="group"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
)
[role="button"],
[role="group"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
)
[type="button"],
[role="group"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
)
[type="submit"],
[role="group"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
)
button,
[role="search"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
)
[role="button"],
[role="search"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
)
[type="button"],
[role="search"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
)
[type="submit"],
[role="search"]:has(
input:not([type="submit"], [type="button"]):focus,
select:focus
)
button {
--app-button-box-shadow: 0 0 0 var(--app-border-width)
var(--app-primary-border);
--app-button-hover-box-shadow: 0 0 0 var(--app-border-width)
var(--app-primary-hover-border);
}
[role="group"] [role="button"]:focus,
[role="group"] [type="button"]:focus,
[role="group"] [type="reset"]:focus,
[role="group"] [type="submit"]:focus,
[role="group"] button:focus,
[role="search"] [role="button"]:focus,
[role="search"] [type="button"]:focus,
[role="search"] [type="reset"]:focus,
[role="search"] [type="submit"]:focus,
[role="search"] button:focus {
box-shadow: none;
}
}
[role="search"] > :first-child {
border-top-left-radius: 5rem;
border-bottom-left-radius: 5rem;
}
[role="search"] > :last-child {
border-top-right-radius: 5rem;
border-bottom-right-radius: 5rem;
}
html {
scroll-behavior: smooth;
background: var(--app-sidebar-background-color);
}
.white-space-nowrap {
white-space: nowrap;
}
[aria-busy="true"]:not(input, select, textarea, html, form) {
white-space: nowrap;
}
[aria-busy="true"]:not(input, select, textarea, html, form)::before {
display: inline-block;
width: 1em;
height: 1em;
background-image: var(--app-icon-loading);
background-size: 1em auto;
background-repeat: no-repeat;
content: "";
vertical-align: -0.125em;
}
[aria-busy="true"]:not(input, select, textarea, html, form):not(
:empty
)::before {
margin-inline-end: calc(var(--app-spacing) * 0.5);
}
[aria-busy="true"]:not(input, select, textarea, html, form):empty {
text-align: center;
}
[role="button"][aria-busy="true"],
[type="button"][aria-busy="true"],
[type="reset"][aria-busy="true"],
[type="submit"][aria-busy="true"],
a[aria-busy="true"],
button[aria-busy="true"] {
pointer-events: none;
}
dialog {
display: flex;
z-index: 999;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
align-items: center;
justify-content: center;
width: inherit;
min-width: 100%;
height: inherit;
min-height: 100%;
padding: 0;
border: 0;
-webkit-backdrop-filter: var(--app-modal-overlay-backdrop-filter);
backdrop-filter: var(--app-modal-overlay-backdrop-filter);
background-color: var(--app-modal-overlay-background-color);
color: var(--app-color);
}
dialog > article {
width: 100%;
max-height: calc(100vh - var(--app-spacing) * 2);
margin: var(--app-spacing);
overflow: auto;
}
.bi::before,
[class^="bi-"]::before,
[class*=" bi-"]::before {
vertical-align: -0.125em;
}
@media (min-width: 576px) {
dialog > article {
max-width: 510px;
}
}
@media (min-width: 768px) {
dialog > article {
max-width: 700px;
}
}
/* Dialog header/footer/close styles → web/css/components/app-dialog.css */
dialog:not([open]),
dialog[open="false"] {
display: none;
}
.modal-is-open {
padding-right: var(--app-scrollbar-width, 0);
overflow: hidden;
pointer-events: none;
touch-action: none;
}
.modal-is-open dialog {
pointer-events: auto;
touch-action: auto;
}
:where(.modal-is-opening, .modal-is-closing) dialog,
:where(.modal-is-opening, .modal-is-closing) dialog > article {
animation-duration: 0.2s;
animation-timing-function: ease-in-out;
animation-fill-mode: both;
}
:where(.modal-is-opening, .modal-is-closing) dialog {
animation-duration: 0.8s;
animation-name: modal-overlay;
}
:where(.modal-is-opening, .modal-is-closing) dialog > article {
animation-delay: 0.2s;
animation-name: modal;
}
.modal-is-closing dialog,
.modal-is-closing dialog > article {
animation-delay: 0s;
animation-direction: reverse;
}
@keyframes modal-overlay {
from {
-webkit-backdrop-filter: none;
backdrop-filter: none;
background-color: transparent;
}
}
@keyframes modal {
from {
transform: translateY(-100%);
opacity: 0;
}
}
:where(nav li)::before {
float: left;
content: "";
}
nav,
nav ul {
display: flex;
}
nav {
justify-content: space-between;
overflow: visible;
}
nav ol,
nav ul {
align-items: center;
margin-bottom: 0;
padding: 0;
list-style: none;
}
nav ol:first-of-type,
nav ul:first-of-type {
margin-left: calc(var(--app-nav-element-spacing-horizontal) * -1);
}
nav ol:last-of-type,
nav ul:last-of-type {
margin-right: calc(var(--app-nav-element-spacing-horizontal) * -1);
}
nav li {
display: inline-block;
margin: 0;
padding: var(--app-nav-element-spacing-vertical)
var(--app-nav-element-spacing-horizontal);
}
nav li :where(a, [role="link"]) {
display: inline-block;
margin: calc(var(--app-nav-link-spacing-vertical) * -1)
calc(var(--app-nav-link-spacing-horizontal) * -1);
padding: var(--app-nav-link-spacing-vertical)
var(--app-nav-link-spacing-horizontal);
border-radius: var(--app-border-radius);
}
nav li :where(a, [role="link"]):not(:hover) {
text-decoration: none;
}
nav li [role="button"],
nav li [type="button"],
nav li button,
nav
li
input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]),
nav li select {
height: auto;
margin-right: inherit;
margin-bottom: 0;
margin-left: inherit;
padding: calc(
var(--app-nav-link-spacing-vertical) - var(--app-border-width) * 2
)
var(--app-nav-link-spacing-horizontal);
}
nav[aria-label="breadcrumb"] {
--app-breadcrumb-separator-size: 0.75rem;
--app-nav-element-spacing-vertical: 0.25rem;
--app-nav-element-spacing-horizontal: 0.25rem;
--app-nav-link-spacing-vertical: 0.25rem;
--app-nav-link-spacing-horizontal: 0.25rem;
align-items: center;
justify-content: start;
font-size: 0.875em;
}
nav[aria-label="breadcrumb"] ol,
nav[aria-label="breadcrumb"] ul {
margin: 0;
}
nav[aria-label="breadcrumb"] :is(ol, ul) li {
padding: 0;
}
nav[aria-label="breadcrumb"] :is(ol, ul) li:not(:first-child) {
margin-inline-start: 0;
}
nav[aria-label="breadcrumb"] :is(ol, ul) li a {
margin: calc(var(--app-nav-link-spacing-vertical) * -1) 0;
margin-inline-start: calc(var(--app-nav-link-spacing-horizontal) * -1);
}
nav[aria-label="breadcrumb"] :is(ol, ul) li:not(:last-child)::after {
display: inline-block;
width: var(--app-breadcrumb-separator-size);
height: var(--app-breadcrumb-separator-size);
margin-inline: calc(var(--app-nav-link-spacing-horizontal) * 0.75);
content: "";
background-image: var(--app-icon-chevron);
background-size: var(--app-breadcrumb-separator-size) auto;
background-repeat: no-repeat;
opacity: 0.7;
transform: rotate(-90deg);
}
nav[aria-label="breadcrumb"] a[aria-current]:not([aria-current="false"]) {
background-color: transparent;
color: inherit;
text-decoration: none;
pointer-events: none;
}
aside li,
aside nav,
aside ol,
aside ul {
display: block;
}
aside li {
padding: calc(var(--app-nav-element-spacing-vertical) * 0.5)
var(--app-nav-element-spacing-horizontal);
}
aside li a {
display: block;
text-decoration: none;
}
aside li [role="button"] {
margin: inherit;
}
.text-align-center {
text-align: center;
}
.primary {
box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px;
}
.secondary {
border: 1px solid var(--app-border);
color: var(--app-muted-color);
box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 2px;
}
.secondary:hover {
border: 1px solid var(--app-contrast);
color: var(--app-contrast);
}
/* Loading state - global cursor and interaction blocking */
body.is-loading {
cursor: wait;
}
body.is-loading * {
cursor: wait !important;
}
body.is-loading button,
body.is-loading a,
body.is-loading input,
body.is-loading select,
body.is-loading textarea {
pointer-events: none;
}
}