Merge pull request #141 from leomp12/patch-1

Perf: Simpler/smaller selectors with :where :is
This commit is contained in:
Lucas Larroche 2022-03-06 15:21:12 +07:00 committed by GitHub
commit 16bfdd9bfa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 368 additions and 1212 deletions

View file

@ -633,10 +633,6 @@ sup {
top: -0.5em; top: -0.5em;
} }
:where(dl, ol, ul) :where(dl, ol, ul) {
margin: 0;
}
address, address,
blockquote, blockquote,
dl, dl,
@ -668,11 +664,8 @@ a,
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition);
} }
a[aria-current], a:hover, a:active, a:focus, a:is([aria-current], :hover, :active, :focus),
[role=link][aria-current], [role=link]:is([aria-current], :hover, :active, :focus) {
[role=link]:hover,
[role=link]:active,
[role=link]:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
@ -719,61 +712,7 @@ h6 {
--color: var(--h6-color); --color: var(--h6-color);
} }
address ~ h1, address ~ h2, address ~ h3, address ~ h4, address ~ h5, address ~ h6, :where(address, blockquote, dl, figure, form, ol, p, pre, table, ul) ~ :is(h1, h2, h3, h4, h5, h6) {
blockquote ~ h1,
blockquote ~ h2,
blockquote ~ h3,
blockquote ~ h4,
blockquote ~ h5,
blockquote ~ h6,
dl ~ h1,
dl ~ h2,
dl ~ h3,
dl ~ h4,
dl ~ h5,
dl ~ h6,
figure ~ h1,
figure ~ h2,
figure ~ h3,
figure ~ h4,
figure ~ h5,
figure ~ h6,
form ~ h1,
form ~ h2,
form ~ h3,
form ~ h4,
form ~ h5,
form ~ h6,
ol ~ h1,
ol ~ h2,
ol ~ h3,
ol ~ h4,
ol ~ h5,
ol ~ h6,
p ~ h1,
p ~ h2,
p ~ h3,
p ~ h4,
p ~ h5,
p ~ h6,
pre ~ h1,
pre ~ h2,
pre ~ h3,
pre ~ h4,
pre ~ h5,
pre ~ h6,
table ~ h1,
table ~ h2,
table ~ h3,
table ~ h4,
table ~ h5,
table ~ h6,
ul ~ h1,
ul ~ h2,
ul ~ h3,
ul ~ h4,
ul ~ h5,
ul ~ h6 {
margin-top: var(--typography-spacing-vertical); margin-top: var(--typography-spacing-vertical);
} }
@ -798,8 +737,7 @@ small {
font-size: var(--font-size); font-size: var(--font-size);
} }
ul, :where(dl, ol, ul) {
ol {
padding-right: 0; padding-right: 0;
padding-left: var(--spacing); padding-left: var(--spacing);
-webkit-padding-start: var(--spacing); -webkit-padding-start: var(--spacing);
@ -807,11 +745,15 @@ ol {
-webkit-padding-end: 0; -webkit-padding-end: 0;
padding-inline-end: 0; padding-inline-end: 0;
} }
ul li, :where(dl, ol, ul) li {
ol li {
margin-bottom: calc(var(--typography-spacing-vertical) * 0.25); margin-bottom: calc(var(--typography-spacing-vertical) * 0.25);
} }
:where(dl, ol, ul) :is(dl, ol, ul) {
margin: 0;
margin-top: calc(var(--typography-spacing-vertical) * 0.25);
}
ul li { ul li {
list-style: square; list-style: square;
} }
@ -914,14 +856,6 @@ button,
-webkit-appearance: button; -webkit-appearance: button;
} }
button::-moz-focus-inner,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
padding: 0;
border-style: none;
}
button { button {
display: block; display: block;
width: 100%; width: 100%;
@ -956,23 +890,11 @@ input[type=reset],
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
button[aria-current], button:hover, button:active, button:focus, button:is([aria-current], :hover, :active, :focus),
input[type=submit][aria-current], input[type=submit]:is([aria-current], :hover, :active, :focus),
input[type=submit]:hover, input[type=button]:is([aria-current], :hover, :active, :focus),
input[type=submit]:active, input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=submit]:focus, [role=button]:is([aria-current], :hover, :active, :focus) {
input[type=button][aria-current],
input[type=button]:hover,
input[type=button]:active,
input[type=button]:focus,
input[type=reset][aria-current],
input[type=reset]:hover,
input[type=reset]:active,
input[type=reset]:focus,
[role=button][aria-current],
[role=button]:hover,
[role=button]:active,
[role=button]:focus {
--background-color: var(--primary-hover); --background-color: var(--primary-hover);
--border-color: var(--primary-hover); --border-color: var(--primary-hover);
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)); --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
@ -993,7 +915,7 @@ input[type=reset] {
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
cursor: pointer; cursor: pointer;
} }
input[type=reset][aria-current], input[type=reset]:hover, input[type=reset]:active, input[type=reset]:focus { input[type=reset]:is([aria-current], :hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1002,12 +924,8 @@ input[type=reset]:focus {
0 0 0 var(--outline-width) var(--secondary-focus); 0 0 0 var(--outline-width) var(--secondary-focus);
} }
button[disabled], :where(button, input[type="submit"], input[type="reset"], [role="button"])[disabled],
input[type=submit][disabled], a[role=button]:not([href]) {
input[type=button][disabled],
input[type=reset][disabled],
a[role=button]:not([href]),
[role=button][disabled] {
opacity: 0.5; opacity: 0.5;
pointer-events: none; pointer-events: none;
} }
@ -1143,19 +1061,13 @@ textarea {
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):active, input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):focus, input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):is(:active, :focus),
select:active, :where(select, textarea):is(:active, :focus) {
select:focus,
textarea:active,
textarea:focus {
--background-color: var(--form-element-active-background-color); --background-color: var(--form-element-active-background-color);
} }
input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):active, input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):focus, input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):is(:active, :focus),
select:active, :where(select, textarea):is(:active, :focus) {
select:focus,
textarea:active,
textarea:focus {
--border-color: var(--form-element-active-border-color); --border-color: var(--form-element-active-border-color);
} }
@ -1173,9 +1085,7 @@ textarea[disabled] {
opacity: var(--form-element-disabled-opacity); opacity: var(--form-element-disabled-opacity);
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid] {
select:not([type=checkbox]):not([type=radio])[aria-invalid],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid] {
padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important; padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;
padding-left: var(--form-element-spacing-horizontal); padding-left: var(--form-element-spacing-horizontal);
-webkit-padding-start: var(--form-element-spacing-horizontal) !important; -webkit-padding-start: var(--form-element-spacing-horizontal) !important;
@ -1186,50 +1096,28 @@ textarea:not([type=checkbox]):not([type=radio])[aria-invalid] {
background-size: 1rem auto; background-size: 1rem auto;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid=false], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] {
select:not([type=checkbox]):not([type=radio])[aria-invalid=false],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid=false] {
background-image: var(--icon-valid); background-image: var(--icon-valid);
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid=true], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true] {
select:not([type=checkbox]):not([type=radio])[aria-invalid=true],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid=true] {
background-image: var(--icon-invalid); background-image: var(--icon-invalid);
} }
input[aria-invalid=false], :where(input, select, textarea)[aria-invalid=false] {
select[aria-invalid=false],
textarea[aria-invalid=false] {
--border-color: var(--form-element-valid-border-color); --border-color: var(--form-element-valid-border-color);
} }
input[aria-invalid=false]:active, input[aria-invalid=false]:focus, :where(input, select, textarea)[aria-invalid=false]:is(:active, :focus) {
select[aria-invalid=false]:active,
select[aria-invalid=false]:focus,
textarea[aria-invalid=false]:active,
textarea[aria-invalid=false]:focus {
--border-color: var(--form-element-valid-active-border-color) !important; --border-color: var(--form-element-valid-active-border-color) !important;
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important; --box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important;
} }
input[aria-invalid=true], :where(input, select, textarea)[aria-invalid=true] {
select[aria-invalid=true],
textarea[aria-invalid=true] {
--border-color: var(--form-element-invalid-border-color); --border-color: var(--form-element-invalid-border-color);
} }
input[aria-invalid=true]:active, input[aria-invalid=true]:focus, :where(input, select, textarea)[aria-invalid=true]:is(:active, :focus) {
select[aria-invalid=true]:active,
select[aria-invalid=true]:focus,
textarea[aria-invalid=true]:active,
textarea[aria-invalid=true]:focus {
--border-color: var(--form-element-invalid-active-border-color) !important; --border-color: var(--form-element-invalid-active-border-color) !important;
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important; --box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important;
} }
[dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid], [dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid=false], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] {
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid],
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid=true],
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid=false],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid=true],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid=false] {
background-position: center left 0.75rem; background-position: center left 0.75rem;
} }
@ -1269,9 +1157,7 @@ select:not([multiple]):not([size]) {
background-position: center left 0.75rem; background-position: center left 0.75rem;
} }
input + small, :where(input, select, textarea) + small {
select + small,
textarea + small {
display: block; display: block;
width: 100%; width: 100%;
margin-top: calc(var(--spacing) * -0.75); margin-top: calc(var(--spacing) * -0.75);
@ -1279,7 +1165,7 @@ textarea + small {
color: var(--muted-color); color: var(--muted-color);
} }
label > input, label > select, label > textarea { label > :where(input, select, textarea) {
margin-top: calc(var(--spacing) * 0.25); margin-top: calc(var(--spacing) * 0.25);
} }
@ -1444,11 +1330,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
opacity: 0; opacity: 0;
} }
[dir=rtl] [type=date], [dir=rtl] :is([type=date], [type=datetime-local], [type=month], [type=time], [type=week]) {
[dir=rtl] [type=datetime-local],
[dir=rtl] [type=month],
[dir=rtl] [type=time],
[dir=rtl] [type=week] {
text-align: right; text-align: right;
} }
@ -1459,10 +1341,6 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
border-radius: 0; border-radius: 0;
background: none; background: none;
} }
[type=file]:hover, [type=file]:active, [type=file]:focus {
border: 0;
background: none;
}
[type=file]::-webkit-file-upload-button { [type=file]::-webkit-file-upload-button {
--background-color: var(--secondary); --background-color: var(--secondary);
--border-color: var(--secondary); --border-color: var(--secondary);
@ -1512,11 +1390,11 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-webkit-file-upload-button:hover, [type=file]::-webkit-file-upload-button:active, [type=file]::-webkit-file-upload-button:focus { [type=file]::-webkit-file-upload-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
[type=file]::file-selector-button:hover, [type=file]::file-selector-button:active, [type=file]::file-selector-button:focus { [type=file]::file-selector-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1545,7 +1423,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
-webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); -webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-webkit-file-upload-button:hover, [type=file]::-webkit-file-upload-button:active, [type=file]::-webkit-file-upload-button:focus { [type=file]::-webkit-file-upload-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1572,7 +1450,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
-ms-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); -ms-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-ms-browse:hover, [type=file]::-ms-browse:active, [type=file]::-ms-browse:focus { [type=file]::-ms-browse:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1997,19 +1875,14 @@ nav li {
nav li > * { nav li > * {
--spacing: 0; --spacing: 0;
} }
nav a, nav :where(a, [role="link"]) {
nav [role=link] {
display: inline-block; display: inline-block;
margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1); margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1);
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
border-radius: var(--border-radius); border-radius: var(--border-radius);
text-decoration: none; text-decoration: none;
} }
nav a[aria-current], nav a:hover, nav a:active, nav a:focus, nav :where(a, [role="link"]):is([aria-current], :hover, :active, :focus) {
nav [role=link][aria-current],
nav [role=link]:hover,
nav [role=link]:active,
nav [role=link]:focus {
text-decoration: none; text-decoration: none;
} }
@ -2105,9 +1978,8 @@ details[role=list],
li[role=list] { li[role=list] {
position: relative; position: relative;
} }
details[role=list] summary + ul, details[role=list] summary + ul,
details[role=list] > ul,
li[role=list] summary + ul,
li[role=list] > ul { li[role=list] > ul {
display: flex; display: flex;
z-index: 99; z-index: 99;
@ -2128,8 +2000,6 @@ li[role=list] > ul {
white-space: nowrap; white-space: nowrap;
} }
details[role=list] summary + ul li, details[role=list] summary + ul li,
details[role=list] > ul li,
li[role=list] summary + ul li,
li[role=list] > ul li { li[role=list] > ul li {
width: 100%; width: 100%;
margin-bottom: 0; margin-bottom: 0;
@ -2137,20 +2007,14 @@ li[role=list] > ul li {
list-style: none; list-style: none;
} }
details[role=list] summary + ul li:first-of-type, details[role=list] summary + ul li:first-of-type,
details[role=list] > ul li:first-of-type,
li[role=list] summary + ul li:first-of-type,
li[role=list] > ul li:first-of-type { li[role=list] > ul li:first-of-type {
margin-top: calc(var(--form-element-spacing-vertical) * 0.5); margin-top: calc(var(--form-element-spacing-vertical) * 0.5);
} }
details[role=list] summary + ul li:last-of-type, details[role=list] summary + ul li:last-of-type,
details[role=list] > ul li:last-of-type,
li[role=list] summary + ul li:last-of-type,
li[role=list] > ul li:last-of-type { li[role=list] > ul li:last-of-type {
margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5); margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
} }
details[role=list] summary + ul li a, details[role=list] summary + ul li a,
details[role=list] > ul li a,
li[role=list] summary + ul li a,
li[role=list] > ul li a { li[role=list] > ul li a {
display: block; display: block;
margin: calc(var(--form-element-spacing-vertical) * -0.5) calc(var(--form-element-spacing-horizontal) * -1); margin: calc(var(--form-element-spacing-vertical) * -0.5) calc(var(--form-element-spacing-horizontal) * -1);
@ -2161,8 +2025,6 @@ li[role=list] > ul li a {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:hover,
details[role=list] > ul li a:hover,
li[role=list] summary + ul li a:hover,
li[role=list] > ul li a:hover { li[role=list] > ul li a:hover {
background-color: var(--dropdown-hover-background-color); background-color: var(--dropdown-hover-background-color);
} }
@ -2222,39 +2084,42 @@ details[role=list][open] summary::before {
cursor: default; cursor: default;
} }
nav [role=list] summary, nav details[role=list] summary,
nav [role=list] a { nav li[role=list] a {
display: flex; display: flex;
direction: ltr; direction: ltr;
} }
nav [role=list] summary + ul,
nav [role=list] > ul { nav details[role=list] summary + ul,
nav li[role=list] > ul {
min-width: -webkit-fit-content; min-width: -webkit-fit-content;
min-width: -moz-fit-content; min-width: -moz-fit-content;
min-width: fit-content; min-width: fit-content;
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul li a, nav details[role=list] summary + ul li a,
nav [role=list] > ul li a { nav li[role=list] > ul li a {
border-radius: 0; border-radius: 0;
} }
nav [role=list] summary, nav details[role=list] summary,
nav [role=list] summary:not([role]) { nav details[role=list] summary:not([role]) {
height: auto; height: auto;
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
} }
nav [role=list][open] summary { nav details[role=list][open] summary {
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul { nav details[role=list] summary + ul {
margin-top: var(--outline-width); margin-top: var(--outline-width);
-webkit-margin-start: 0;
margin-inline-start: 0;
} }
nav [role=list] summary[role=link] { nav details[role=list] summary[role=link] {
margin-bottom: calc(var(--nav-link-spacing-vertical) * -1); margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
line-height: var(--line-height); line-height: var(--line-height);
} }
nav [role=list] summary[role=link] + ul { nav details[role=list] summary[role=link] + ul {
margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width)); margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1); -webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1);
margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1); margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -663,10 +663,6 @@ sup {
top: -0.5em; top: -0.5em;
} }
:where(dl, ol, ul) :where(dl, ol, ul) {
margin: 0;
}
address, address,
blockquote, blockquote,
dl, dl,
@ -698,11 +694,8 @@ a,
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition);
} }
a[aria-current], a:hover, a:active, a:focus, a:is([aria-current], :hover, :active, :focus),
[role=link][aria-current], [role=link]:is([aria-current], :hover, :active, :focus) {
[role=link]:hover,
[role=link]:active,
[role=link]:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
@ -714,11 +707,8 @@ a.secondary,
[role=link].secondary { [role=link].secondary {
--color: var(--secondary); --color: var(--secondary);
} }
a.secondary[aria-current], a.secondary:hover, a.secondary:active, a.secondary:focus, a.secondary:is([aria-current], :hover, :active, :focus),
[role=link].secondary[aria-current], [role=link].secondary:is([aria-current], :hover, :active, :focus) {
[role=link].secondary:hover,
[role=link].secondary:active,
[role=link].secondary:focus {
--color: var(--secondary-hover); --color: var(--secondary-hover);
} }
a.secondary:focus, a.secondary:focus,
@ -729,11 +719,8 @@ a.contrast,
[role=link].contrast { [role=link].contrast {
--color: var(--contrast); --color: var(--contrast);
} }
a.contrast[aria-current], a.contrast:hover, a.contrast:active, a.contrast:focus, a.contrast:is([aria-current], :hover, :active, :focus),
[role=link].contrast[aria-current], [role=link].contrast:is([aria-current], :hover, :active, :focus) {
[role=link].contrast:hover,
[role=link].contrast:active,
[role=link].contrast:focus {
--color: var(--contrast-hover); --color: var(--contrast-hover);
} }
a.contrast:focus, a.contrast:focus,
@ -779,61 +766,7 @@ h6 {
--color: var(--h6-color); --color: var(--h6-color);
} }
address ~ h1, address ~ h2, address ~ h3, address ~ h4, address ~ h5, address ~ h6, :where(address, blockquote, dl, figure, form, ol, p, pre, table, ul) ~ :is(h1, h2, h3, h4, h5, h6) {
blockquote ~ h1,
blockquote ~ h2,
blockquote ~ h3,
blockquote ~ h4,
blockquote ~ h5,
blockquote ~ h6,
dl ~ h1,
dl ~ h2,
dl ~ h3,
dl ~ h4,
dl ~ h5,
dl ~ h6,
figure ~ h1,
figure ~ h2,
figure ~ h3,
figure ~ h4,
figure ~ h5,
figure ~ h6,
form ~ h1,
form ~ h2,
form ~ h3,
form ~ h4,
form ~ h5,
form ~ h6,
ol ~ h1,
ol ~ h2,
ol ~ h3,
ol ~ h4,
ol ~ h5,
ol ~ h6,
p ~ h1,
p ~ h2,
p ~ h3,
p ~ h4,
p ~ h5,
p ~ h6,
pre ~ h1,
pre ~ h2,
pre ~ h3,
pre ~ h4,
pre ~ h5,
pre ~ h6,
table ~ h1,
table ~ h2,
table ~ h3,
table ~ h4,
table ~ h5,
table ~ h6,
ul ~ h1,
ul ~ h2,
ul ~ h3,
ul ~ h4,
ul ~ h5,
ul ~ h6 {
margin-top: var(--typography-spacing-vertical); margin-top: var(--typography-spacing-vertical);
} }
@ -861,8 +794,7 @@ small {
font-size: var(--font-size); font-size: var(--font-size);
} }
ul, :where(dl, ol, ul) {
ol {
padding-right: 0; padding-right: 0;
padding-left: var(--spacing); padding-left: var(--spacing);
-webkit-padding-start: var(--spacing); -webkit-padding-start: var(--spacing);
@ -870,11 +802,15 @@ ol {
-webkit-padding-end: 0; -webkit-padding-end: 0;
padding-inline-end: 0; padding-inline-end: 0;
} }
ul li, :where(dl, ol, ul) li {
ol li {
margin-bottom: calc(var(--typography-spacing-vertical) * 0.25); margin-bottom: calc(var(--typography-spacing-vertical) * 0.25);
} }
:where(dl, ol, ul) :is(dl, ol, ul) {
margin: 0;
margin-top: calc(var(--typography-spacing-vertical) * 0.25);
}
ul li { ul li {
list-style: square; list-style: square;
} }
@ -977,14 +913,6 @@ button,
-webkit-appearance: button; -webkit-appearance: button;
} }
button::-moz-focus-inner,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
padding: 0;
border-style: none;
}
button { button {
display: block; display: block;
width: 100%; width: 100%;
@ -1019,23 +947,11 @@ input[type=reset],
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
button[aria-current], button:hover, button:active, button:focus, button:is([aria-current], :hover, :active, :focus),
input[type=submit][aria-current], input[type=submit]:is([aria-current], :hover, :active, :focus),
input[type=submit]:hover, input[type=button]:is([aria-current], :hover, :active, :focus),
input[type=submit]:active, input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=submit]:focus, [role=button]:is([aria-current], :hover, :active, :focus) {
input[type=button][aria-current],
input[type=button]:hover,
input[type=button]:active,
input[type=button]:focus,
input[type=reset][aria-current],
input[type=reset]:hover,
input[type=reset]:active,
input[type=reset]:focus,
[role=button][aria-current],
[role=button]:hover,
[role=button]:active,
[role=button]:focus {
--background-color: var(--primary-hover); --background-color: var(--primary-hover);
--border-color: var(--primary-hover); --border-color: var(--primary-hover);
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)); --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
@ -1050,174 +966,69 @@ input[type=reset]:focus,
0 0 0 var(--outline-width) var(--primary-focus); 0 0 0 var(--outline-width) var(--primary-focus);
} }
button.secondary, :is(button, input[type=submit], input[type=button], [role=button]).secondary,
input[type=submit].secondary, input[type=reset] {
input[type=button].secondary,
input[type=reset],
[role=button].secondary {
--background-color: var(--secondary); --background-color: var(--secondary);
--border-color: var(--secondary); --border-color: var(--secondary);
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
cursor: pointer; cursor: pointer;
} }
button.secondary[aria-current], button.secondary:hover, button.secondary:active, button.secondary:focus, :is(button, input[type=submit], input[type=button], [role=button]).secondary:is([aria-current], :hover, :active, :focus),
input[type=submit].secondary[aria-current], input[type=reset]:is([aria-current], :hover, :active, :focus) {
input[type=submit].secondary:hover,
input[type=submit].secondary:active,
input[type=submit].secondary:focus,
input[type=button].secondary[aria-current],
input[type=button].secondary:hover,
input[type=button].secondary:active,
input[type=button].secondary:focus,
input[type=reset][aria-current],
input[type=reset]:hover,
input[type=reset]:active,
input[type=reset]:focus,
[role=button].secondary[aria-current],
[role=button].secondary:hover,
[role=button].secondary:active,
[role=button].secondary:focus {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
} }
button.secondary:focus, :is(button, input[type=submit], input[type=button], [role=button]).secondary:focus,
input[type=submit].secondary:focus, input[type=reset]:focus {
input[type=button].secondary:focus,
input[type=reset]:focus,
[role=button].secondary:focus {
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
0 0 0 var(--outline-width) var(--secondary-focus); 0 0 0 var(--outline-width) var(--secondary-focus);
} }
button.contrast, :is(button, input[type=submit], input[type=button], [role=button]).contrast {
input[type=submit].contrast,
input[type=button].contrast,
input[type=reset].contrast,
[role=button].contrast {
--background-color: var(--contrast); --background-color: var(--contrast);
--border-color: var(--contrast); --border-color: var(--contrast);
--color: var(--contrast-inverse); --color: var(--contrast-inverse);
} }
button.contrast[aria-current], button.contrast:hover, button.contrast:active, button.contrast:focus, :is(button, input[type=submit], input[type=button], [role=button]).contrast:is([aria-current], :hover, :active, :focus) {
input[type=submit].contrast[aria-current],
input[type=submit].contrast:hover,
input[type=submit].contrast:active,
input[type=submit].contrast:focus,
input[type=button].contrast[aria-current],
input[type=button].contrast:hover,
input[type=button].contrast:active,
input[type=button].contrast:focus,
input[type=reset].contrast[aria-current],
input[type=reset].contrast:hover,
input[type=reset].contrast:active,
input[type=reset].contrast:focus,
[role=button].contrast[aria-current],
[role=button].contrast:hover,
[role=button].contrast:active,
[role=button].contrast:focus {
--background-color: var(--contrast-hover); --background-color: var(--contrast-hover);
--border-color: var(--contrast-hover); --border-color: var(--contrast-hover);
--color: var(--contrast-inverse); --color: var(--contrast-inverse);
} }
button.contrast:focus, :is(button, input[type=submit], input[type=button], [role=button]).contrast:focus {
input[type=submit].contrast:focus,
input[type=button].contrast:focus,
input[type=reset].contrast:focus,
[role=button].contrast:focus {
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
0 0 0 var(--outline-width) var(--contrast-focus); 0 0 0 var(--outline-width) var(--contrast-focus);
} }
button.outline, :is(button, input[type=submit], input[type=button], [role=button]).outline,
input[type=submit].outline, input[type=reset].outline {
input[type=button].outline,
input[type=reset].outline,
[role=button].outline {
--background-color: transparent; --background-color: transparent;
--color: var(--primary); --color: var(--primary);
} }
button.outline[aria-current], button.outline:hover, button.outline:active, button.outline:focus, :is(button, input[type=submit], input[type=button], [role=button]).outline:is([aria-current], :hover, :active, :focus),
input[type=submit].outline[aria-current], input[type=reset].outline:is([aria-current], :hover, :active, :focus) {
input[type=submit].outline:hover,
input[type=submit].outline:active,
input[type=submit].outline:focus,
input[type=button].outline[aria-current],
input[type=button].outline:hover,
input[type=button].outline:active,
input[type=button].outline:focus,
input[type=reset].outline[aria-current],
input[type=reset].outline:hover,
input[type=reset].outline:active,
input[type=reset].outline:focus,
[role=button].outline[aria-current],
[role=button].outline:hover,
[role=button].outline:active,
[role=button].outline:focus {
--background-color: transparent; --background-color: transparent;
--color: var(--primary-hover); --color: var(--primary-hover);
} }
button.outline.secondary, :is(button, input[type=submit], input[type=button], [role=button]).outline.secondary,
input[type=submit].outline.secondary, input[type=reset].outline {
input[type=button].outline.secondary,
input[type=reset].outline.secondary,
[role=button].outline.secondary {
--color: var(--secondary); --color: var(--secondary);
} }
button.outline.secondary[aria-current], button.outline.secondary:hover, button.outline.secondary:active, button.outline.secondary:focus, :is(button, input[type=submit], input[type=button], [role=button]).outline.secondary:is([aria-current], :hover, :active, :focus),
input[type=submit].outline.secondary[aria-current], input[type=reset].outline:is([aria-current], :hover, :active, :focus) {
input[type=submit].outline.secondary:hover,
input[type=submit].outline.secondary:active,
input[type=submit].outline.secondary:focus,
input[type=button].outline.secondary[aria-current],
input[type=button].outline.secondary:hover,
input[type=button].outline.secondary:active,
input[type=button].outline.secondary:focus,
input[type=reset].outline.secondary[aria-current],
input[type=reset].outline.secondary:hover,
input[type=reset].outline.secondary:active,
input[type=reset].outline.secondary:focus,
[role=button].outline.secondary[aria-current],
[role=button].outline.secondary:hover,
[role=button].outline.secondary:active,
[role=button].outline.secondary:focus {
--color: var(--secondary-hover); --color: var(--secondary-hover);
} }
button.outline.contrast, :is(button, input[type=submit], input[type=button], [role=button]).outline.contrast {
input[type=submit].outline.contrast,
input[type=button].outline.contrast,
input[type=reset].outline.contrast,
[role=button].outline.contrast {
--color: var(--contrast); --color: var(--contrast);
} }
button.outline.contrast[aria-current], button.outline.contrast:hover, button.outline.contrast:active, button.outline.contrast:focus, :is(button, input[type=submit], input[type=button], [role=button]).outline.contrast:is([aria-current], :hover, :active, :focus) {
input[type=submit].outline.contrast[aria-current],
input[type=submit].outline.contrast:hover,
input[type=submit].outline.contrast:active,
input[type=submit].outline.contrast:focus,
input[type=button].outline.contrast[aria-current],
input[type=button].outline.contrast:hover,
input[type=button].outline.contrast:active,
input[type=button].outline.contrast:focus,
input[type=reset].outline.contrast[aria-current],
input[type=reset].outline.contrast:hover,
input[type=reset].outline.contrast:active,
input[type=reset].outline.contrast:focus,
[role=button].outline.contrast[aria-current],
[role=button].outline.contrast:hover,
[role=button].outline.contrast:active,
[role=button].outline.contrast:focus {
--color: var(--contrast-hover); --color: var(--contrast-hover);
} }
button[disabled], :where(button, input[type="submit"], input[type="reset"], [role="button"])[disabled],
input[type=submit][disabled], a[role=button]:not([href]) {
input[type=button][disabled],
input[type=reset][disabled],
a[role=button]:not([href]),
[role=button][disabled] {
opacity: 0.5; opacity: 0.5;
pointer-events: none; pointer-events: none;
} }
@ -1353,19 +1164,13 @@ textarea {
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):active, input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):focus, input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):is(:active, :focus),
select:active, :where(select, textarea):is(:active, :focus) {
select:focus,
textarea:active,
textarea:focus {
--background-color: var(--form-element-active-background-color); --background-color: var(--form-element-active-background-color);
} }
input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):active, input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):focus, input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):is(:active, :focus),
select:active, :where(select, textarea):is(:active, :focus) {
select:focus,
textarea:active,
textarea:focus {
--border-color: var(--form-element-active-border-color); --border-color: var(--form-element-active-border-color);
} }
@ -1383,9 +1188,7 @@ textarea[disabled] {
opacity: var(--form-element-disabled-opacity); opacity: var(--form-element-disabled-opacity);
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid] {
select:not([type=checkbox]):not([type=radio])[aria-invalid],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid] {
padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important; padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;
padding-left: var(--form-element-spacing-horizontal); padding-left: var(--form-element-spacing-horizontal);
-webkit-padding-start: var(--form-element-spacing-horizontal) !important; -webkit-padding-start: var(--form-element-spacing-horizontal) !important;
@ -1396,50 +1199,28 @@ textarea:not([type=checkbox]):not([type=radio])[aria-invalid] {
background-size: 1rem auto; background-size: 1rem auto;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid=false], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] {
select:not([type=checkbox]):not([type=radio])[aria-invalid=false],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid=false] {
background-image: var(--icon-valid); background-image: var(--icon-valid);
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid=true], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true] {
select:not([type=checkbox]):not([type=radio])[aria-invalid=true],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid=true] {
background-image: var(--icon-invalid); background-image: var(--icon-invalid);
} }
input[aria-invalid=false], :where(input, select, textarea)[aria-invalid=false] {
select[aria-invalid=false],
textarea[aria-invalid=false] {
--border-color: var(--form-element-valid-border-color); --border-color: var(--form-element-valid-border-color);
} }
input[aria-invalid=false]:active, input[aria-invalid=false]:focus, :where(input, select, textarea)[aria-invalid=false]:is(:active, :focus) {
select[aria-invalid=false]:active,
select[aria-invalid=false]:focus,
textarea[aria-invalid=false]:active,
textarea[aria-invalid=false]:focus {
--border-color: var(--form-element-valid-active-border-color) !important; --border-color: var(--form-element-valid-active-border-color) !important;
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important; --box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important;
} }
input[aria-invalid=true], :where(input, select, textarea)[aria-invalid=true] {
select[aria-invalid=true],
textarea[aria-invalid=true] {
--border-color: var(--form-element-invalid-border-color); --border-color: var(--form-element-invalid-border-color);
} }
input[aria-invalid=true]:active, input[aria-invalid=true]:focus, :where(input, select, textarea)[aria-invalid=true]:is(:active, :focus) {
select[aria-invalid=true]:active,
select[aria-invalid=true]:focus,
textarea[aria-invalid=true]:active,
textarea[aria-invalid=true]:focus {
--border-color: var(--form-element-invalid-active-border-color) !important; --border-color: var(--form-element-invalid-active-border-color) !important;
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important; --box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important;
} }
[dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid], [dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid=false], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] {
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid],
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid=true],
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid=false],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid=true],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid=false] {
background-position: center left 0.75rem; background-position: center left 0.75rem;
} }
@ -1479,9 +1260,7 @@ select:not([multiple]):not([size]) {
background-position: center left 0.75rem; background-position: center left 0.75rem;
} }
input + small, :where(input, select, textarea) + small {
select + small,
textarea + small {
display: block; display: block;
width: 100%; width: 100%;
margin-top: calc(var(--spacing) * -0.75); margin-top: calc(var(--spacing) * -0.75);
@ -1489,7 +1268,7 @@ textarea + small {
color: var(--muted-color); color: var(--muted-color);
} }
label > input, label > select, label > textarea { label > :where(input, select, textarea) {
margin-top: calc(var(--spacing) * 0.25); margin-top: calc(var(--spacing) * 0.25);
} }
@ -1654,11 +1433,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
opacity: 0; opacity: 0;
} }
[dir=rtl] [type=date], [dir=rtl] :is([type=date], [type=datetime-local], [type=month], [type=time], [type=week]) {
[dir=rtl] [type=datetime-local],
[dir=rtl] [type=month],
[dir=rtl] [type=time],
[dir=rtl] [type=week] {
text-align: right; text-align: right;
} }
@ -1669,10 +1444,6 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
border-radius: 0; border-radius: 0;
background: none; background: none;
} }
[type=file]:hover, [type=file]:active, [type=file]:focus {
border: 0;
background: none;
}
[type=file]::-webkit-file-upload-button { [type=file]::-webkit-file-upload-button {
--background-color: var(--secondary); --background-color: var(--secondary);
--border-color: var(--secondary); --border-color: var(--secondary);
@ -1722,11 +1493,11 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-webkit-file-upload-button:hover, [type=file]::-webkit-file-upload-button:active, [type=file]::-webkit-file-upload-button:focus { [type=file]::-webkit-file-upload-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
[type=file]::file-selector-button:hover, [type=file]::file-selector-button:active, [type=file]::file-selector-button:focus { [type=file]::file-selector-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1755,7 +1526,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
-webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); -webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-webkit-file-upload-button:hover, [type=file]::-webkit-file-upload-button:active, [type=file]::-webkit-file-upload-button:focus { [type=file]::-webkit-file-upload-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1782,7 +1553,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
-ms-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); -ms-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-ms-browse:hover, [type=file]::-ms-browse:active, [type=file]::-ms-browse:focus { [type=file]::-ms-browse:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -2181,7 +1952,7 @@ dialog article .close {
opacity: 0.5; opacity: 0.5;
transition: opacity var(--transition); transition: opacity var(--transition);
} }
dialog article .close[aria-current], dialog article .close:hover, dialog article .close:active, dialog article .close:focus { dialog article .close:is([aria-current], :hover, :active, :focus) {
opacity: 1; opacity: 1;
} }
dialog:not([open]), dialog[open=false] { dialog:not([open]), dialog[open=false] {
@ -2197,10 +1968,8 @@ dialog:not([open]), dialog[open=false] {
pointer-events: auto; pointer-events: auto;
} }
.modal-is-opening dialog, :where(.modal-is-opening, .modal-is-closing) dialog,
.modal-is-opening dialog > article, :where(.modal-is-opening, .modal-is-closing) dialog > article {
.modal-is-closing dialog,
.modal-is-closing dialog > article {
-webkit-animation-duration: 0.2s; -webkit-animation-duration: 0.2s;
animation-duration: 0.2s; animation-duration: 0.2s;
-webkit-animation-timing-function: ease-in-out; -webkit-animation-timing-function: ease-in-out;
@ -2208,15 +1977,13 @@ dialog:not([open]), dialog[open=false] {
-webkit-animation-fill-mode: both; -webkit-animation-fill-mode: both;
animation-fill-mode: both; animation-fill-mode: both;
} }
.modal-is-opening dialog, :where(.modal-is-opening, .modal-is-closing) dialog {
.modal-is-closing dialog {
-webkit-animation-duration: 0.8s; -webkit-animation-duration: 0.8s;
animation-duration: 0.8s; animation-duration: 0.8s;
-webkit-animation-name: fadeIn; -webkit-animation-name: fadeIn;
animation-name: fadeIn; animation-name: fadeIn;
} }
.modal-is-opening dialog > article, :where(.modal-is-opening, .modal-is-closing) dialog > article {
.modal-is-closing dialog > article {
-webkit-animation-delay: 0.2s; -webkit-animation-delay: 0.2s;
animation-delay: 0.2s; animation-delay: 0.2s;
-webkit-animation-name: slideInDown; -webkit-animation-name: slideInDown;
@ -2306,19 +2073,14 @@ nav li {
nav li > * { nav li > * {
--spacing: 0; --spacing: 0;
} }
nav a, nav :where(a, [role="link"]) {
nav [role=link] {
display: inline-block; display: inline-block;
margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1); margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1);
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
border-radius: var(--border-radius); border-radius: var(--border-radius);
text-decoration: none; text-decoration: none;
} }
nav a[aria-current], nav a:hover, nav a:active, nav a:focus, nav :where(a, [role="link"]):is([aria-current], :hover, :active, :focus) {
nav [role=link][aria-current],
nav [role=link]:hover,
nav [role=link]:active,
nav [role=link]:focus {
text-decoration: none; text-decoration: none;
} }
@ -2414,9 +2176,8 @@ details[role=list],
li[role=list] { li[role=list] {
position: relative; position: relative;
} }
details[role=list] summary + ul, details[role=list] summary + ul,
details[role=list] > ul,
li[role=list] summary + ul,
li[role=list] > ul { li[role=list] > ul {
display: flex; display: flex;
z-index: 99; z-index: 99;
@ -2437,8 +2198,6 @@ li[role=list] > ul {
white-space: nowrap; white-space: nowrap;
} }
details[role=list] summary + ul li, details[role=list] summary + ul li,
details[role=list] > ul li,
li[role=list] summary + ul li,
li[role=list] > ul li { li[role=list] > ul li {
width: 100%; width: 100%;
margin-bottom: 0; margin-bottom: 0;
@ -2446,20 +2205,14 @@ li[role=list] > ul li {
list-style: none; list-style: none;
} }
details[role=list] summary + ul li:first-of-type, details[role=list] summary + ul li:first-of-type,
details[role=list] > ul li:first-of-type,
li[role=list] summary + ul li:first-of-type,
li[role=list] > ul li:first-of-type { li[role=list] > ul li:first-of-type {
margin-top: calc(var(--form-element-spacing-vertical) * 0.5); margin-top: calc(var(--form-element-spacing-vertical) * 0.5);
} }
details[role=list] summary + ul li:last-of-type, details[role=list] summary + ul li:last-of-type,
details[role=list] > ul li:last-of-type,
li[role=list] summary + ul li:last-of-type,
li[role=list] > ul li:last-of-type { li[role=list] > ul li:last-of-type {
margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5); margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
} }
details[role=list] summary + ul li a, details[role=list] summary + ul li a,
details[role=list] > ul li a,
li[role=list] summary + ul li a,
li[role=list] > ul li a { li[role=list] > ul li a {
display: block; display: block;
margin: calc(var(--form-element-spacing-vertical) * -0.5) calc(var(--form-element-spacing-horizontal) * -1); margin: calc(var(--form-element-spacing-vertical) * -0.5) calc(var(--form-element-spacing-horizontal) * -1);
@ -2470,8 +2223,6 @@ li[role=list] > ul li a {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:hover,
details[role=list] > ul li a:hover,
li[role=list] summary + ul li a:hover,
li[role=list] > ul li a:hover { li[role=list] > ul li a:hover {
background-color: var(--dropdown-hover-background-color); background-color: var(--dropdown-hover-background-color);
} }
@ -2531,39 +2282,42 @@ details[role=list][open] summary::before {
cursor: default; cursor: default;
} }
nav [role=list] summary, nav details[role=list] summary,
nav [role=list] a { nav li[role=list] a {
display: flex; display: flex;
direction: ltr; direction: ltr;
} }
nav [role=list] summary + ul,
nav [role=list] > ul { nav details[role=list] summary + ul,
nav li[role=list] > ul {
min-width: -webkit-fit-content; min-width: -webkit-fit-content;
min-width: -moz-fit-content; min-width: -moz-fit-content;
min-width: fit-content; min-width: fit-content;
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul li a, nav details[role=list] summary + ul li a,
nav [role=list] > ul li a { nav li[role=list] > ul li a {
border-radius: 0; border-radius: 0;
} }
nav [role=list] summary, nav details[role=list] summary,
nav [role=list] summary:not([role]) { nav details[role=list] summary:not([role]) {
height: auto; height: auto;
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
} }
nav [role=list][open] summary { nav details[role=list][open] summary {
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul { nav details[role=list] summary + ul {
margin-top: var(--outline-width); margin-top: var(--outline-width);
-webkit-margin-start: 0;
margin-inline-start: 0;
} }
nav [role=list] summary[role=link] { nav details[role=list] summary[role=link] {
margin-bottom: calc(var(--nav-link-spacing-vertical) * -1); margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
line-height: var(--line-height); line-height: var(--line-height);
} }
nav [role=list] summary[role=link] + ul { nav details[role=list] summary[role=link] + ul {
margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width)); margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1); -webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1);
margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1); margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);

File diff suppressed because one or more lines are too long

View file

@ -603,10 +603,6 @@ sup {
top: -0.5em; top: -0.5em;
} }
:where(dl, ol, ul) :where(dl, ol, ul) {
margin: 0;
}
address, address,
blockquote, blockquote,
dl, dl,
@ -638,11 +634,8 @@ a,
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition); transition: background-color var(--transition), color var(--transition), text-decoration var(--transition), box-shadow var(--transition), -webkit-text-decoration var(--transition);
} }
a[aria-current], a:hover, a:active, a:focus, a:is([aria-current], :hover, :active, :focus),
[role=link][aria-current], [role=link]:is([aria-current], :hover, :active, :focus) {
[role=link]:hover,
[role=link]:active,
[role=link]:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
@ -689,61 +682,7 @@ h6 {
--color: var(--h6-color); --color: var(--h6-color);
} }
address ~ h1, address ~ h2, address ~ h3, address ~ h4, address ~ h5, address ~ h6, :where(address, blockquote, dl, figure, form, ol, p, pre, table, ul) ~ :is(h1, h2, h3, h4, h5, h6) {
blockquote ~ h1,
blockquote ~ h2,
blockquote ~ h3,
blockquote ~ h4,
blockquote ~ h5,
blockquote ~ h6,
dl ~ h1,
dl ~ h2,
dl ~ h3,
dl ~ h4,
dl ~ h5,
dl ~ h6,
figure ~ h1,
figure ~ h2,
figure ~ h3,
figure ~ h4,
figure ~ h5,
figure ~ h6,
form ~ h1,
form ~ h2,
form ~ h3,
form ~ h4,
form ~ h5,
form ~ h6,
ol ~ h1,
ol ~ h2,
ol ~ h3,
ol ~ h4,
ol ~ h5,
ol ~ h6,
p ~ h1,
p ~ h2,
p ~ h3,
p ~ h4,
p ~ h5,
p ~ h6,
pre ~ h1,
pre ~ h2,
pre ~ h3,
pre ~ h4,
pre ~ h5,
pre ~ h6,
table ~ h1,
table ~ h2,
table ~ h3,
table ~ h4,
table ~ h5,
table ~ h6,
ul ~ h1,
ul ~ h2,
ul ~ h3,
ul ~ h4,
ul ~ h5,
ul ~ h6 {
margin-top: var(--typography-spacing-vertical); margin-top: var(--typography-spacing-vertical);
} }
@ -768,8 +707,7 @@ small {
font-size: var(--font-size); font-size: var(--font-size);
} }
ul, :where(dl, ol, ul) {
ol {
padding-right: 0; padding-right: 0;
padding-left: var(--spacing); padding-left: var(--spacing);
-webkit-padding-start: var(--spacing); -webkit-padding-start: var(--spacing);
@ -777,11 +715,15 @@ ol {
-webkit-padding-end: 0; -webkit-padding-end: 0;
padding-inline-end: 0; padding-inline-end: 0;
} }
ul li, :where(dl, ol, ul) li {
ol li {
margin-bottom: calc(var(--typography-spacing-vertical) * 0.25); margin-bottom: calc(var(--typography-spacing-vertical) * 0.25);
} }
:where(dl, ol, ul) :is(dl, ol, ul) {
margin: 0;
margin-top: calc(var(--typography-spacing-vertical) * 0.25);
}
ul li { ul li {
list-style: square; list-style: square;
} }
@ -884,14 +826,6 @@ button,
-webkit-appearance: button; -webkit-appearance: button;
} }
button::-moz-focus-inner,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
padding: 0;
border-style: none;
}
button { button {
display: block; display: block;
width: 100%; width: 100%;
@ -926,23 +860,11 @@ input[type=reset],
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
button[aria-current], button:hover, button:active, button:focus, button:is([aria-current], :hover, :active, :focus),
input[type=submit][aria-current], input[type=submit]:is([aria-current], :hover, :active, :focus),
input[type=submit]:hover, input[type=button]:is([aria-current], :hover, :active, :focus),
input[type=submit]:active, input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=submit]:focus, [role=button]:is([aria-current], :hover, :active, :focus) {
input[type=button][aria-current],
input[type=button]:hover,
input[type=button]:active,
input[type=button]:focus,
input[type=reset][aria-current],
input[type=reset]:hover,
input[type=reset]:active,
input[type=reset]:focus,
[role=button][aria-current],
[role=button]:hover,
[role=button]:active,
[role=button]:focus {
--background-color: var(--primary-hover); --background-color: var(--primary-hover);
--border-color: var(--primary-hover); --border-color: var(--primary-hover);
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)); --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
@ -963,7 +885,7 @@ input[type=reset] {
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
cursor: pointer; cursor: pointer;
} }
input[type=reset][aria-current], input[type=reset]:hover, input[type=reset]:active, input[type=reset]:focus { input[type=reset]:is([aria-current], :hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -972,12 +894,8 @@ input[type=reset]:focus {
0 0 0 var(--outline-width) var(--secondary-focus); 0 0 0 var(--outline-width) var(--secondary-focus);
} }
button[disabled], :where(button, input[type="submit"], input[type="reset"], [role="button"])[disabled],
input[type=submit][disabled], a[role=button]:not([href]) {
input[type=button][disabled],
input[type=reset][disabled],
a[role=button]:not([href]),
[role=button][disabled] {
opacity: 0.5; opacity: 0.5;
pointer-events: none; pointer-events: none;
} }
@ -1113,19 +1031,13 @@ textarea {
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):active, input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):focus, input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):is(:active, :focus),
select:active, :where(select, textarea):is(:active, :focus) {
select:focus,
textarea:active,
textarea:focus {
--background-color: var(--form-element-active-background-color); --background-color: var(--form-element-active-background-color);
} }
input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):active, input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):focus, input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):is(:active, :focus),
select:active, :where(select, textarea):is(:active, :focus) {
select:focus,
textarea:active,
textarea:focus {
--border-color: var(--form-element-active-border-color); --border-color: var(--form-element-active-border-color);
} }
@ -1143,9 +1055,7 @@ textarea[disabled] {
opacity: var(--form-element-disabled-opacity); opacity: var(--form-element-disabled-opacity);
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid] {
select:not([type=checkbox]):not([type=radio])[aria-invalid],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid] {
padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important; padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;
padding-left: var(--form-element-spacing-horizontal); padding-left: var(--form-element-spacing-horizontal);
-webkit-padding-start: var(--form-element-spacing-horizontal) !important; -webkit-padding-start: var(--form-element-spacing-horizontal) !important;
@ -1156,50 +1066,28 @@ textarea:not([type=checkbox]):not([type=radio])[aria-invalid] {
background-size: 1rem auto; background-size: 1rem auto;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid=false], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] {
select:not([type=checkbox]):not([type=radio])[aria-invalid=false],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid=false] {
background-image: var(--icon-valid); background-image: var(--icon-valid);
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid=true], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true] {
select:not([type=checkbox]):not([type=radio])[aria-invalid=true],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid=true] {
background-image: var(--icon-invalid); background-image: var(--icon-invalid);
} }
input[aria-invalid=false], :where(input, select, textarea)[aria-invalid=false] {
select[aria-invalid=false],
textarea[aria-invalid=false] {
--border-color: var(--form-element-valid-border-color); --border-color: var(--form-element-valid-border-color);
} }
input[aria-invalid=false]:active, input[aria-invalid=false]:focus, :where(input, select, textarea)[aria-invalid=false]:is(:active, :focus) {
select[aria-invalid=false]:active,
select[aria-invalid=false]:focus,
textarea[aria-invalid=false]:active,
textarea[aria-invalid=false]:focus {
--border-color: var(--form-element-valid-active-border-color) !important; --border-color: var(--form-element-valid-active-border-color) !important;
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important; --box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important;
} }
input[aria-invalid=true], :where(input, select, textarea)[aria-invalid=true] {
select[aria-invalid=true],
textarea[aria-invalid=true] {
--border-color: var(--form-element-invalid-border-color); --border-color: var(--form-element-invalid-border-color);
} }
input[aria-invalid=true]:active, input[aria-invalid=true]:focus, :where(input, select, textarea)[aria-invalid=true]:is(:active, :focus) {
select[aria-invalid=true]:active,
select[aria-invalid=true]:focus,
textarea[aria-invalid=true]:active,
textarea[aria-invalid=true]:focus {
--border-color: var(--form-element-invalid-active-border-color) !important; --border-color: var(--form-element-invalid-active-border-color) !important;
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important; --box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important;
} }
[dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid], [dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid=false], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] {
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid],
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid=true],
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid=false],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid=true],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid=false] {
background-position: center left 0.75rem; background-position: center left 0.75rem;
} }
@ -1239,9 +1127,7 @@ select:not([multiple]):not([size]) {
background-position: center left 0.75rem; background-position: center left 0.75rem;
} }
input + small, :where(input, select, textarea) + small {
select + small,
textarea + small {
display: block; display: block;
width: 100%; width: 100%;
margin-top: calc(var(--spacing) * -0.75); margin-top: calc(var(--spacing) * -0.75);
@ -1249,7 +1135,7 @@ textarea + small {
color: var(--muted-color); color: var(--muted-color);
} }
label > input, label > select, label > textarea { label > :where(input, select, textarea) {
margin-top: calc(var(--spacing) * 0.25); margin-top: calc(var(--spacing) * 0.25);
} }
@ -1414,11 +1300,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
opacity: 0; opacity: 0;
} }
[dir=rtl] [type=date], [dir=rtl] :is([type=date], [type=datetime-local], [type=month], [type=time], [type=week]) {
[dir=rtl] [type=datetime-local],
[dir=rtl] [type=month],
[dir=rtl] [type=time],
[dir=rtl] [type=week] {
text-align: right; text-align: right;
} }
@ -1429,10 +1311,6 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
border-radius: 0; border-radius: 0;
background: none; background: none;
} }
[type=file]:hover, [type=file]:active, [type=file]:focus {
border: 0;
background: none;
}
[type=file]::-webkit-file-upload-button { [type=file]::-webkit-file-upload-button {
--background-color: var(--secondary); --background-color: var(--secondary);
--border-color: var(--secondary); --border-color: var(--secondary);
@ -1482,11 +1360,11 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
cursor: pointer; cursor: pointer;
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-webkit-file-upload-button:hover, [type=file]::-webkit-file-upload-button:active, [type=file]::-webkit-file-upload-button:focus { [type=file]::-webkit-file-upload-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
[type=file]::file-selector-button:hover, [type=file]::file-selector-button:active, [type=file]::file-selector-button:focus { [type=file]::file-selector-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1515,7 +1393,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
-webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); -webkit-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-webkit-file-upload-button:hover, [type=file]::-webkit-file-upload-button:active, [type=file]::-webkit-file-upload-button:focus { [type=file]::-webkit-file-upload-button:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1542,7 +1420,7 @@ input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file])[
-ms-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); -ms-transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition); transition: background-color var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
} }
[type=file]::-ms-browse:hover, [type=file]::-ms-browse:active, [type=file]::-ms-browse:focus { [type=file]::-ms-browse:is(:hover, :active, :focus) {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -1967,19 +1845,14 @@ nav li {
nav li > * { nav li > * {
--spacing: 0; --spacing: 0;
} }
nav a, nav :where(a, [role="link"]) {
nav [role=link] {
display: inline-block; display: inline-block;
margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1); margin: calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1);
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
border-radius: var(--border-radius); border-radius: var(--border-radius);
text-decoration: none; text-decoration: none;
} }
nav a[aria-current], nav a:hover, nav a:active, nav a:focus, nav :where(a, [role="link"]):is([aria-current], :hover, :active, :focus) {
nav [role=link][aria-current],
nav [role=link]:hover,
nav [role=link]:active,
nav [role=link]:focus {
text-decoration: none; text-decoration: none;
} }
@ -2075,9 +1948,8 @@ details[role=list],
li[role=list] { li[role=list] {
position: relative; position: relative;
} }
details[role=list] summary + ul, details[role=list] summary + ul,
details[role=list] > ul,
li[role=list] summary + ul,
li[role=list] > ul { li[role=list] > ul {
display: flex; display: flex;
z-index: 99; z-index: 99;
@ -2098,8 +1970,6 @@ li[role=list] > ul {
white-space: nowrap; white-space: nowrap;
} }
details[role=list] summary + ul li, details[role=list] summary + ul li,
details[role=list] > ul li,
li[role=list] summary + ul li,
li[role=list] > ul li { li[role=list] > ul li {
width: 100%; width: 100%;
margin-bottom: 0; margin-bottom: 0;
@ -2107,20 +1977,14 @@ li[role=list] > ul li {
list-style: none; list-style: none;
} }
details[role=list] summary + ul li:first-of-type, details[role=list] summary + ul li:first-of-type,
details[role=list] > ul li:first-of-type,
li[role=list] summary + ul li:first-of-type,
li[role=list] > ul li:first-of-type { li[role=list] > ul li:first-of-type {
margin-top: calc(var(--form-element-spacing-vertical) * 0.5); margin-top: calc(var(--form-element-spacing-vertical) * 0.5);
} }
details[role=list] summary + ul li:last-of-type, details[role=list] summary + ul li:last-of-type,
details[role=list] > ul li:last-of-type,
li[role=list] summary + ul li:last-of-type,
li[role=list] > ul li:last-of-type { li[role=list] > ul li:last-of-type {
margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5); margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
} }
details[role=list] summary + ul li a, details[role=list] summary + ul li a,
details[role=list] > ul li a,
li[role=list] summary + ul li a,
li[role=list] > ul li a { li[role=list] > ul li a {
display: block; display: block;
margin: calc(var(--form-element-spacing-vertical) * -0.5) calc(var(--form-element-spacing-horizontal) * -1); margin: calc(var(--form-element-spacing-vertical) * -0.5) calc(var(--form-element-spacing-horizontal) * -1);
@ -2131,8 +1995,6 @@ li[role=list] > ul li a {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
details[role=list] summary + ul li a:hover, details[role=list] summary + ul li a:hover,
details[role=list] > ul li a:hover,
li[role=list] summary + ul li a:hover,
li[role=list] > ul li a:hover { li[role=list] > ul li a:hover {
background-color: var(--dropdown-hover-background-color); background-color: var(--dropdown-hover-background-color);
} }
@ -2192,39 +2054,42 @@ details[role=list][open] summary::before {
cursor: default; cursor: default;
} }
nav [role=list] summary, nav details[role=list] summary,
nav [role=list] a { nav li[role=list] a {
display: flex; display: flex;
direction: ltr; direction: ltr;
} }
nav [role=list] summary + ul,
nav [role=list] > ul { nav details[role=list] summary + ul,
nav li[role=list] > ul {
min-width: -webkit-fit-content; min-width: -webkit-fit-content;
min-width: -moz-fit-content; min-width: -moz-fit-content;
min-width: fit-content; min-width: fit-content;
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul li a, nav details[role=list] summary + ul li a,
nav [role=list] > ul li a { nav li[role=list] > ul li a {
border-radius: 0; border-radius: 0;
} }
nav [role=list] summary, nav details[role=list] summary,
nav [role=list] summary:not([role]) { nav details[role=list] summary:not([role]) {
height: auto; height: auto;
padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal); padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
} }
nav [role=list][open] summary { nav details[role=list][open] summary {
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
nav [role=list] summary + ul { nav details[role=list] summary + ul {
margin-top: var(--outline-width); margin-top: var(--outline-width);
-webkit-margin-start: 0;
margin-inline-start: 0;
} }
nav [role=list] summary[role=link] { nav details[role=list] summary[role=link] {
margin-bottom: calc(var(--nav-link-spacing-vertical) * -1); margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
line-height: var(--line-height); line-height: var(--line-height);
} }
nav [role=list] summary[role=link] + ul { nav details[role=list] summary[role=link] + ul {
margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width)); margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
-webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1); -webkit-margin-start: calc(var(--nav-link-spacing-horizontal) * -1);
margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1); margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
css/pico.min.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -594,10 +594,6 @@ sup {
top: -0.5em; top: -0.5em;
} }
:where(dl, ol, ul) :where(dl, ol, ul) {
margin: 0;
}
address, address,
blockquote, blockquote,
dl, dl,
@ -626,11 +622,8 @@ a,
-webkit-text-decoration: var(--text-decoration); -webkit-text-decoration: var(--text-decoration);
text-decoration: var(--text-decoration); text-decoration: var(--text-decoration);
} }
a[aria-current], a:hover, a:active, a:focus, a:is([aria-current], :hover, :active, :focus),
[role=link][aria-current], [role=link]:is([aria-current], :hover, :active, :focus) {
[role=link]:hover,
[role=link]:active,
[role=link]:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
@ -642,11 +635,8 @@ a.secondary,
[role=link].secondary { [role=link].secondary {
--color: var(--secondary); --color: var(--secondary);
} }
a.secondary[aria-current], a.secondary:hover, a.secondary:active, a.secondary:focus, a.secondary:is([aria-current], :hover, :active, :focus),
[role=link].secondary[aria-current], [role=link].secondary:is([aria-current], :hover, :active, :focus) {
[role=link].secondary:hover,
[role=link].secondary:active,
[role=link].secondary:focus {
--color: var(--secondary-hover); --color: var(--secondary-hover);
} }
a.secondary:focus, a.secondary:focus,
@ -657,11 +647,8 @@ a.contrast,
[role=link].contrast { [role=link].contrast {
--color: var(--contrast); --color: var(--contrast);
} }
a.contrast[aria-current], a.contrast:hover, a.contrast:active, a.contrast:focus, a.contrast:is([aria-current], :hover, :active, :focus),
[role=link].contrast[aria-current], [role=link].contrast:is([aria-current], :hover, :active, :focus) {
[role=link].contrast:hover,
[role=link].contrast:active,
[role=link].contrast:focus {
--color: var(--contrast-hover); --color: var(--contrast-hover);
} }
a.contrast:focus, a.contrast:focus,
@ -707,61 +694,7 @@ h6 {
--color: var(--h6-color); --color: var(--h6-color);
} }
address ~ h1, address ~ h2, address ~ h3, address ~ h4, address ~ h5, address ~ h6, :where(address, blockquote, dl, figure, form, ol, p, pre, table, ul) ~ :is(h1, h2, h3, h4, h5, h6) {
blockquote ~ h1,
blockquote ~ h2,
blockquote ~ h3,
blockquote ~ h4,
blockquote ~ h5,
blockquote ~ h6,
dl ~ h1,
dl ~ h2,
dl ~ h3,
dl ~ h4,
dl ~ h5,
dl ~ h6,
figure ~ h1,
figure ~ h2,
figure ~ h3,
figure ~ h4,
figure ~ h5,
figure ~ h6,
form ~ h1,
form ~ h2,
form ~ h3,
form ~ h4,
form ~ h5,
form ~ h6,
ol ~ h1,
ol ~ h2,
ol ~ h3,
ol ~ h4,
ol ~ h5,
ol ~ h6,
p ~ h1,
p ~ h2,
p ~ h3,
p ~ h4,
p ~ h5,
p ~ h6,
pre ~ h1,
pre ~ h2,
pre ~ h3,
pre ~ h4,
pre ~ h5,
pre ~ h6,
table ~ h1,
table ~ h2,
table ~ h3,
table ~ h4,
table ~ h5,
table ~ h6,
ul ~ h1,
ul ~ h2,
ul ~ h3,
ul ~ h4,
ul ~ h5,
ul ~ h6 {
margin-top: var(--typography-spacing-vertical); margin-top: var(--typography-spacing-vertical);
} }
@ -789,8 +722,7 @@ small {
font-size: var(--font-size); font-size: var(--font-size);
} }
ul, :where(dl, ol, ul) {
ol {
padding-right: 0; padding-right: 0;
padding-left: var(--spacing); padding-left: var(--spacing);
-webkit-padding-start: var(--spacing); -webkit-padding-start: var(--spacing);
@ -798,11 +730,15 @@ ol {
-webkit-padding-end: 0; -webkit-padding-end: 0;
padding-inline-end: 0; padding-inline-end: 0;
} }
ul li, :where(dl, ol, ul) li {
ol li {
margin-bottom: calc(var(--typography-spacing-vertical) * 0.25); margin-bottom: calc(var(--typography-spacing-vertical) * 0.25);
} }
:where(dl, ol, ul) :is(dl, ol, ul) {
margin: 0;
margin-top: calc(var(--typography-spacing-vertical) * 0.25);
}
ul li { ul li {
list-style: square; list-style: square;
} }
@ -905,14 +841,6 @@ button,
-webkit-appearance: button; -webkit-appearance: button;
} }
button::-moz-focus-inner,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
padding: 0;
border-style: none;
}
button { button {
display: block; display: block;
width: 100%; width: 100%;
@ -946,23 +874,11 @@ input[type=reset],
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
} }
button[aria-current], button:hover, button:active, button:focus, button:is([aria-current], :hover, :active, :focus),
input[type=submit][aria-current], input[type=submit]:is([aria-current], :hover, :active, :focus),
input[type=submit]:hover, input[type=button]:is([aria-current], :hover, :active, :focus),
input[type=submit]:active, input[type=reset]:is([aria-current], :hover, :active, :focus),
input[type=submit]:focus, [role=button]:is([aria-current], :hover, :active, :focus) {
input[type=button][aria-current],
input[type=button]:hover,
input[type=button]:active,
input[type=button]:focus,
input[type=reset][aria-current],
input[type=reset]:hover,
input[type=reset]:active,
input[type=reset]:focus,
[role=button][aria-current],
[role=button]:hover,
[role=button]:active,
[role=button]:focus {
--background-color: var(--primary-hover); --background-color: var(--primary-hover);
--border-color: var(--primary-hover); --border-color: var(--primary-hover);
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)); --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
@ -977,174 +893,69 @@ input[type=reset]:focus,
0 0 0 var(--outline-width) var(--primary-focus); 0 0 0 var(--outline-width) var(--primary-focus);
} }
button.secondary, :is(button, input[type=submit], input[type=button], [role=button]).secondary,
input[type=submit].secondary, input[type=reset] {
input[type=button].secondary,
input[type=reset],
[role=button].secondary {
--background-color: var(--secondary); --background-color: var(--secondary);
--border-color: var(--secondary); --border-color: var(--secondary);
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
cursor: pointer; cursor: pointer;
} }
button.secondary[aria-current], button.secondary:hover, button.secondary:active, button.secondary:focus, :is(button, input[type=submit], input[type=button], [role=button]).secondary:is([aria-current], :hover, :active, :focus),
input[type=submit].secondary[aria-current], input[type=reset]:is([aria-current], :hover, :active, :focus) {
input[type=submit].secondary:hover,
input[type=submit].secondary:active,
input[type=submit].secondary:focus,
input[type=button].secondary[aria-current],
input[type=button].secondary:hover,
input[type=button].secondary:active,
input[type=button].secondary:focus,
input[type=reset][aria-current],
input[type=reset]:hover,
input[type=reset]:active,
input[type=reset]:focus,
[role=button].secondary[aria-current],
[role=button].secondary:hover,
[role=button].secondary:active,
[role=button].secondary:focus {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
} }
button.secondary:focus, :is(button, input[type=submit], input[type=button], [role=button]).secondary:focus,
input[type=submit].secondary:focus, input[type=reset]:focus {
input[type=button].secondary:focus,
input[type=reset]:focus,
[role=button].secondary:focus {
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
0 0 0 var(--outline-width) var(--secondary-focus); 0 0 0 var(--outline-width) var(--secondary-focus);
} }
button.contrast, :is(button, input[type=submit], input[type=button], [role=button]).contrast {
input[type=submit].contrast,
input[type=button].contrast,
input[type=reset].contrast,
[role=button].contrast {
--background-color: var(--contrast); --background-color: var(--contrast);
--border-color: var(--contrast); --border-color: var(--contrast);
--color: var(--contrast-inverse); --color: var(--contrast-inverse);
} }
button.contrast[aria-current], button.contrast:hover, button.contrast:active, button.contrast:focus, :is(button, input[type=submit], input[type=button], [role=button]).contrast:is([aria-current], :hover, :active, :focus) {
input[type=submit].contrast[aria-current],
input[type=submit].contrast:hover,
input[type=submit].contrast:active,
input[type=submit].contrast:focus,
input[type=button].contrast[aria-current],
input[type=button].contrast:hover,
input[type=button].contrast:active,
input[type=button].contrast:focus,
input[type=reset].contrast[aria-current],
input[type=reset].contrast:hover,
input[type=reset].contrast:active,
input[type=reset].contrast:focus,
[role=button].contrast[aria-current],
[role=button].contrast:hover,
[role=button].contrast:active,
[role=button].contrast:focus {
--background-color: var(--contrast-hover); --background-color: var(--contrast-hover);
--border-color: var(--contrast-hover); --border-color: var(--contrast-hover);
--color: var(--contrast-inverse); --color: var(--contrast-inverse);
} }
button.contrast:focus, :is(button, input[type=submit], input[type=button], [role=button]).contrast:focus {
input[type=submit].contrast:focus,
input[type=button].contrast:focus,
input[type=reset].contrast:focus,
[role=button].contrast:focus {
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
0 0 0 var(--outline-width) var(--contrast-focus); 0 0 0 var(--outline-width) var(--contrast-focus);
} }
button.outline, :is(button, input[type=submit], input[type=button], [role=button]).outline,
input[type=submit].outline, input[type=reset].outline {
input[type=button].outline,
input[type=reset].outline,
[role=button].outline {
--background-color: transparent; --background-color: transparent;
--color: var(--primary); --color: var(--primary);
} }
button.outline[aria-current], button.outline:hover, button.outline:active, button.outline:focus, :is(button, input[type=submit], input[type=button], [role=button]).outline:is([aria-current], :hover, :active, :focus),
input[type=submit].outline[aria-current], input[type=reset].outline:is([aria-current], :hover, :active, :focus) {
input[type=submit].outline:hover,
input[type=submit].outline:active,
input[type=submit].outline:focus,
input[type=button].outline[aria-current],
input[type=button].outline:hover,
input[type=button].outline:active,
input[type=button].outline:focus,
input[type=reset].outline[aria-current],
input[type=reset].outline:hover,
input[type=reset].outline:active,
input[type=reset].outline:focus,
[role=button].outline[aria-current],
[role=button].outline:hover,
[role=button].outline:active,
[role=button].outline:focus {
--background-color: transparent; --background-color: transparent;
--color: var(--primary-hover); --color: var(--primary-hover);
} }
button.outline.secondary, :is(button, input[type=submit], input[type=button], [role=button]).outline.secondary,
input[type=submit].outline.secondary, input[type=reset].outline {
input[type=button].outline.secondary,
input[type=reset].outline.secondary,
[role=button].outline.secondary {
--color: var(--secondary); --color: var(--secondary);
} }
button.outline.secondary[aria-current], button.outline.secondary:hover, button.outline.secondary:active, button.outline.secondary:focus, :is(button, input[type=submit], input[type=button], [role=button]).outline.secondary:is([aria-current], :hover, :active, :focus),
input[type=submit].outline.secondary[aria-current], input[type=reset].outline:is([aria-current], :hover, :active, :focus) {
input[type=submit].outline.secondary:hover,
input[type=submit].outline.secondary:active,
input[type=submit].outline.secondary:focus,
input[type=button].outline.secondary[aria-current],
input[type=button].outline.secondary:hover,
input[type=button].outline.secondary:active,
input[type=button].outline.secondary:focus,
input[type=reset].outline.secondary[aria-current],
input[type=reset].outline.secondary:hover,
input[type=reset].outline.secondary:active,
input[type=reset].outline.secondary:focus,
[role=button].outline.secondary[aria-current],
[role=button].outline.secondary:hover,
[role=button].outline.secondary:active,
[role=button].outline.secondary:focus {
--color: var(--secondary-hover); --color: var(--secondary-hover);
} }
button.outline.contrast, :is(button, input[type=submit], input[type=button], [role=button]).outline.contrast {
input[type=submit].outline.contrast,
input[type=button].outline.contrast,
input[type=reset].outline.contrast,
[role=button].outline.contrast {
--color: var(--contrast); --color: var(--contrast);
} }
button.outline.contrast[aria-current], button.outline.contrast:hover, button.outline.contrast:active, button.outline.contrast:focus, :is(button, input[type=submit], input[type=button], [role=button]).outline.contrast:is([aria-current], :hover, :active, :focus) {
input[type=submit].outline.contrast[aria-current],
input[type=submit].outline.contrast:hover,
input[type=submit].outline.contrast:active,
input[type=submit].outline.contrast:focus,
input[type=button].outline.contrast[aria-current],
input[type=button].outline.contrast:hover,
input[type=button].outline.contrast:active,
input[type=button].outline.contrast:focus,
input[type=reset].outline.contrast[aria-current],
input[type=reset].outline.contrast:hover,
input[type=reset].outline.contrast:active,
input[type=reset].outline.contrast:focus,
[role=button].outline.contrast[aria-current],
[role=button].outline.contrast:hover,
[role=button].outline.contrast:active,
[role=button].outline.contrast:focus {
--color: var(--contrast-hover); --color: var(--contrast-hover);
} }
button[disabled], :where(button, input[type="submit"], input[type="reset"], [role="button"])[disabled],
input[type=submit][disabled], a[role=button]:not([href]) {
input[type=button][disabled],
input[type=reset][disabled],
a[role=button]:not([href]),
[role=button][disabled] {
opacity: 0.5; opacity: 0.5;
pointer-events: none; pointer-events: none;
} }
@ -1279,19 +1090,13 @@ textarea {
font-weight: var(--font-weight); font-weight: var(--font-weight);
} }
input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):active, input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):focus, input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([readonly]):is(:active, :focus),
select:active, :where(select, textarea):is(:active, :focus) {
select:focus,
textarea:active,
textarea:focus {
--background-color: var(--form-element-active-background-color); --background-color: var(--form-element-active-background-color);
} }
input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):active, input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):focus, input:not([type=submit]):not([type=button]):not([type=reset]):not([role=switch]):not([readonly]):is(:active, :focus),
select:active, :where(select, textarea):is(:active, :focus) {
select:focus,
textarea:active,
textarea:focus {
--border-color: var(--form-element-active-border-color); --border-color: var(--form-element-active-border-color);
} }
@ -1309,9 +1114,7 @@ textarea[disabled] {
opacity: var(--form-element-disabled-opacity); opacity: var(--form-element-disabled-opacity);
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid] {
select:not([type=checkbox]):not([type=radio])[aria-invalid],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid] {
padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem); padding-right: calc(var(--form-element-spacing-horizontal) + 1.5rem);
padding-left: var(--form-element-spacing-horizontal); padding-left: var(--form-element-spacing-horizontal);
-webkit-padding-start: var(--form-element-spacing-horizontal); -webkit-padding-start: var(--form-element-spacing-horizontal);
@ -1322,50 +1125,28 @@ textarea:not([type=checkbox]):not([type=radio])[aria-invalid] {
background-size: 1rem auto; background-size: 1rem auto;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid=false], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] {
select:not([type=checkbox]):not([type=radio])[aria-invalid=false],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid=false] {
background-image: var(--icon-valid); background-image: var(--icon-valid);
} }
input:not([type=checkbox]):not([type=radio])[aria-invalid=true], :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true] {
select:not([type=checkbox]):not([type=radio])[aria-invalid=true],
textarea:not([type=checkbox]):not([type=radio])[aria-invalid=true] {
background-image: var(--icon-invalid); background-image: var(--icon-invalid);
} }
input[aria-invalid=false], :where(input, select, textarea)[aria-invalid=false] {
select[aria-invalid=false],
textarea[aria-invalid=false] {
--border-color: var(--form-element-valid-border-color); --border-color: var(--form-element-valid-border-color);
} }
input[aria-invalid=false]:active, input[aria-invalid=false]:focus, :where(input, select, textarea)[aria-invalid=false]:is(:active, :focus) {
select[aria-invalid=false]:active,
select[aria-invalid=false]:focus,
textarea[aria-invalid=false]:active,
textarea[aria-invalid=false]:focus {
--border-color: var(--form-element-valid-active-border-color); --border-color: var(--form-element-valid-active-border-color);
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color); --box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color);
} }
input[aria-invalid=true], :where(input, select, textarea)[aria-invalid=true] {
select[aria-invalid=true],
textarea[aria-invalid=true] {
--border-color: var(--form-element-invalid-border-color); --border-color: var(--form-element-invalid-border-color);
} }
input[aria-invalid=true]:active, input[aria-invalid=true]:focus, :where(input, select, textarea)[aria-invalid=true]:is(:active, :focus) {
select[aria-invalid=true]:active,
select[aria-invalid=true]:focus,
textarea[aria-invalid=true]:active,
textarea[aria-invalid=true]:focus {
--border-color: var(--form-element-invalid-active-border-color); --border-color: var(--form-element-invalid-active-border-color);
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color); --box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color);
} }
[dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid], [dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] input:not([type=checkbox]):not([type=radio])[aria-invalid=false], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=true], [dir=rtl] :where(input, select, textarea):not([type=checkbox]):not([type=radio])[aria-invalid=false] {
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid],
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid=true],
[dir=rtl] select:not([type=checkbox]):not([type=radio])[aria-invalid=false],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid=true],
[dir=rtl] textarea:not([type=checkbox]):not([type=radio])[aria-invalid=false] {
background-position: center left 0.75rem; background-position: center left 0.75rem;
} }
@ -1405,9 +1186,7 @@ select:not([multiple]):not([size]) {
background-position: center left 0.75rem; background-position: center left 0.75rem;
} }
input + small, :where(input, select, textarea) + small {
select + small,
textarea + small {
display: block; display: block;
width: 100%; width: 100%;
margin-top: calc(var(--spacing) * -0.75); margin-top: calc(var(--spacing) * -0.75);
@ -1415,7 +1194,7 @@ textarea + small {
color: var(--muted-color); color: var(--muted-color);
} }
label > input, label > select, label > textarea { label > :where(input, select, textarea) {
margin-top: calc(var(--spacing) * 0.25); margin-top: calc(var(--spacing) * 0.25);
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -6,56 +6,56 @@
details[role="list"], details[role="list"],
li[role="list"] { li[role="list"] {
position: relative; position: relative;
}
summary + ul, details[role="list"] summary + ul,
> ul { li[role="list"] > ul {
display: flex; display: flex;
z-index: 99; z-index: 99;
position: absolute; position: absolute;
top: auto; top: auto;
right: 0; right: 0;
left: 0; left: 0;
flex-direction: column; flex-direction: column;
margin: 0; margin: 0;
padding: 0; padding: 0;
border: var(--border-width) solid var(--dropdown-border-color); border: var(--border-width) solid var(--dropdown-border-color);
border-radius: var(--border-radius); border-radius: var(--border-radius);
border-top-right-radius: 0; border-top-right-radius: 0;
border-top-left-radius: 0; border-top-left-radius: 0;
background-color: var(--dropdown-background-color); background-color: var(--dropdown-background-color);
box-shadow: var(--card-box-shadow); box-shadow: var(--card-box-shadow);
color: var(--dropdown-color); color: var(--dropdown-color);
white-space: nowrap; white-space: nowrap;
li { li {
width: 100%; width: 100%;
margin-bottom: 0; margin-bottom: 0;
padding: calc(var(--form-element-spacing-vertical) * 0.5)
var(--form-element-spacing-horizontal);
list-style: none;
&:first-of-type {
margin-top: calc(var(--form-element-spacing-vertical) * 0.5);
}
&:last-of-type {
margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
}
a {
display: block;
margin: calc(var(--form-element-spacing-vertical) * -0.5)
calc(var(--form-element-spacing-horizontal) * -1);
padding: calc(var(--form-element-spacing-vertical) * 0.5) padding: calc(var(--form-element-spacing-vertical) * 0.5)
var(--form-element-spacing-horizontal); var(--form-element-spacing-horizontal);
list-style: none; overflow: hidden;
color: var(--dropdown-color);
text-decoration: none;
text-overflow: ellipsis;
&:first-of-type { &:hover {
margin-top: calc(var(--form-element-spacing-vertical) * 0.5); background-color: var(--dropdown-hover-background-color);
}
&:last-of-type {
margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
}
a {
display: block;
margin: calc(var(--form-element-spacing-vertical) * -0.5)
calc(var(--form-element-spacing-horizontal) * -1);
padding: calc(var(--form-element-spacing-vertical) * 0.5)
var(--form-element-spacing-horizontal);
overflow: hidden;
color: var(--dropdown-color);
text-decoration: none;
text-overflow: ellipsis;
&:hover {
background-color: var(--dropdown-hover-background-color);
}
} }
} }
} }
@ -139,26 +139,24 @@ details[role="list"] {
} }
// All Dropdowns inside <nav> // All Dropdowns inside <nav>
nav [role="list"] { nav details[role="list"] summary,
summary, nav li[role="list"] a {
a { display: flex;
display: flex; direction: ltr;
direction: ltr; }
}
summary + ul, nav details[role="list"] summary + ul,
> ul { nav li[role="list"] > ul {
min-width: fit-content; min-width: fit-content;
border-radius: var(--border-radius); border-radius: var(--border-radius);
li a { li a {
border-radius: 0; border-radius: 0;
}
} }
} }
// Dropdowns inside <nav> as nested <details> // Dropdowns inside <nav> as nested <details>
nav [role="list"] { nav details[role="list"] {
summary, summary,
summary:not([role]) { summary:not([role]) {
height: auto; height: auto;
@ -171,6 +169,7 @@ nav [role="list"] {
summary + ul { summary + ul {
margin-top: var(--outline-width); margin-top: var(--outline-width);
margin-inline-start: 0;
} }
summary[role="link"] { summary[role="link"] {

View file

@ -92,10 +92,7 @@ dialog {
transition: opacity var(--transition); transition: opacity var(--transition);
} }
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
opacity: 1; opacity: 1;
} }
} }
@ -126,8 +123,7 @@ dialog {
@if ($enable-classes and $enable-transitions) { @if ($enable-classes and $enable-transitions) {
$animation-duration: 0.2s; $animation-duration: 0.2s;
.modal-is-opening, :where(.modal-is-opening, .modal-is-closing) {
.modal-is-closing {
dialog, dialog,
dialog > article { dialog > article {
animation-duration: $animation-duration; animation-duration: $animation-duration;

View file

@ -50,8 +50,7 @@ nav {
} }
} }
a, :where(a, [role="link"]) {
[role="link"] {
display: inline-block; display: inline-block;
margin: calc(var(--nav-link-spacing-vertical) * -1) margin: calc(var(--nav-link-spacing-vertical) * -1)
calc(var(--nav-link-spacing-horizontal) * -1); calc(var(--nav-link-spacing-horizontal) * -1);
@ -59,10 +58,7 @@ nav {
border-radius: var(--border-radius); border-radius: var(--border-radius);
text-decoration: none; text-decoration: none;
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
text-decoration: none; text-decoration: none;
} }
} }

View file

@ -25,15 +25,6 @@ button,
-webkit-appearance: button; -webkit-appearance: button;
} }
// Remove the inner border and padding in Firefox
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
// Pico // Pico
// //
@ -77,10 +68,7 @@ input[type="reset"],
box-shadow var(--transition); box-shadow var(--transition);
} }
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--background-color: var(--primary-hover); --background-color: var(--primary-hover);
--border-color: var(--primary-hover); --border-color: var(--primary-hover);
--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)); --box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
@ -95,21 +83,16 @@ input[type="reset"],
// .secondary, .contrast & .outline // .secondary, .contrast & .outline
@if $enable-classes { @if $enable-classes {
// Secondary // Secondary
button.secondary, :is(button, input[type="submit"], input[type="button"], [role="button"]).secondary,
input[type="submit"].secondary, input[type="reset"] {
input[type="button"].secondary,
input[type="reset"],
[role="button"].secondary {
--background-color: var(--secondary); --background-color: var(--secondary);
--border-color: var(--secondary); --border-color: var(--secondary);
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
cursor: pointer; cursor: pointer;
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
@ -122,19 +105,12 @@ input[type="reset"],
} }
// Contrast // Contrast
button.contrast, :is(button, input[type="submit"], input[type="button"], [role="button"]).contrast {
input[type="submit"].contrast,
input[type="button"].contrast,
input[type="reset"].contrast,
[role="button"].contrast {
--background-color: var(--contrast); --background-color: var(--contrast);
--border-color: var(--contrast); --border-color: var(--contrast);
--color: var(--contrast-inverse); --color: var(--contrast-inverse);
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--background-color: var(--contrast-hover); --background-color: var(--contrast-hover);
--border-color: var(--contrast-hover); --border-color: var(--contrast-hover);
--color: var(--contrast-inverse); --color: var(--contrast-inverse);
@ -147,51 +123,32 @@ input[type="reset"],
} }
// Outline (primary) // Outline (primary)
button.outline, :is(button, input[type="submit"], input[type="button"], [role="button"]).outline,
input[type="submit"].outline, input[type="reset"].outline {
input[type="button"].outline,
input[type="reset"].outline,
[role="button"].outline {
--background-color: transparent; --background-color: transparent;
--color: var(--primary); --color: var(--primary);
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--background-color: transparent; --background-color: transparent;
--color: var(--primary-hover); --color: var(--primary-hover);
} }
} }
// Outline (secondary) // Outline (secondary)
button.outline.secondary, :is(button, input[type="submit"], input[type="button"], [role="button"]).outline.secondary,
input[type="submit"].outline.secondary, input[type="reset"].outline {
input[type="button"].outline.secondary,
input[type="reset"].outline.secondary,
[role="button"].outline.secondary {
--color: var(--secondary); --color: var(--secondary);
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--color: var(--secondary-hover); --color: var(--secondary-hover);
} }
} }
// Outline (contrast) // Outline (contrast)
button.outline.contrast, :is(button, input[type="submit"], input[type="button"], [role="button"]).outline.contrast {
input[type="submit"].outline.contrast,
input[type="button"].outline.contrast,
input[type="reset"].outline.contrast,
[role="button"].outline.contrast {
--color: var(--contrast); --color: var(--contrast);
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--color: var(--contrast-hover); --color: var(--contrast-hover);
} }
} }
@ -204,10 +161,7 @@ input[type="reset"],
--color: var(--secondary-inverse); --color: var(--secondary-inverse);
cursor: pointer; cursor: pointer;
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }
@ -220,13 +174,9 @@ input[type="reset"],
} }
// Button [disabled] // Button [disabled]
// 1. Links without href are disabled by default // Links without href are disabled by default
button[disabled], :where(button, input[type="submit"], input[type="reset"], [role="button"])[disabled],
input[type="submit"][disabled], a[role="button"]:not([href]) {
input[type="button"][disabled],
input[type="reset"][disabled],
a[role="button"]:not([href]), // 1
[role="button"][disabled] {
opacity: 0.5; opacity: 0.5;
pointer-events: none; pointer-events: none;
} }

View file

@ -70,14 +70,9 @@ input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="
} }
} }
[dir="rtl"] { [dir="rtl"]
[type="date"], :is([type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"]) {
[type="datetime-local"], text-align: right;
[type="month"],
[type="time"],
[type="week"] {
text-align: right;
}
} }
// File // File
@ -88,13 +83,6 @@ input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="
border-radius: 0; border-radius: 0;
background: none; background: none;
&:hover,
&:active,
&:focus {
border: 0;
background: none;
}
@mixin file-selector-button { @mixin file-selector-button {
--background-color: var(--secondary); --background-color: var(--secondary);
--border-color: var(--secondary); --border-color: var(--secondary);
@ -123,9 +111,7 @@ input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="
box-shadow var(--transition); box-shadow var(--transition);
} }
&:hover, &:is(:hover, :active, :focus) {
&:active,
&:focus {
--background-color: var(--secondary-hover); --background-color: var(--secondary-hover);
--border-color: var(--secondary-hover); --border-color: var(--secondary-hover);
} }

View file

@ -174,20 +174,16 @@ textarea {
// Active & Focus // Active & Focus
input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([readonly]), input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([readonly]),
select, :where(select, textarea) {
textarea { &:is(:active, :focus) {
&:active,
&:focus {
--background-color: var(--form-element-active-background-color); --background-color: var(--form-element-active-background-color);
} }
} }
// Active & Focus // Active & Focus
input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([role="switch"]):not([readonly]), input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([role="switch"]):not([readonly]),
select, :where(select, textarea) {
textarea { &:is(:active, :focus) {
&:active,
&:focus {
--border-color: var(--form-element-active-border-color); --border-color: var(--form-element-active-border-color);
} }
} }
@ -213,9 +209,7 @@ textarea {
} }
// Aria-invalid // Aria-invalid
input, :where(input, select, textarea) {
select,
textarea {
&:not([type="checkbox"]):not([type="radio"]) { &:not([type="checkbox"]):not([type="radio"]) {
&[aria-invalid] { &[aria-invalid] {
@if $enable-important { @if $enable-important {
@ -251,8 +245,7 @@ textarea {
&[aria-invalid="false"] { &[aria-invalid="false"] {
--border-color: var(--form-element-valid-border-color); --border-color: var(--form-element-valid-border-color);
&:active, &:is(:active, :focus) {
&:focus {
@if $enable-important { @if $enable-important {
--border-color: var(--form-element-valid-active-border-color) !important; --border-color: var(--form-element-valid-active-border-color) !important;
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important; --box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important;
@ -267,8 +260,7 @@ textarea {
&[aria-invalid="true"] { &[aria-invalid="true"] {
--border-color: var(--form-element-invalid-border-color); --border-color: var(--form-element-invalid-border-color);
&:active, &:is(:active, :focus) {
&:focus {
@if $enable-important { @if $enable-important {
--border-color: var(--form-element-invalid-active-border-color) !important; --border-color: var(--form-element-invalid-active-border-color) !important;
--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important; --box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important;
@ -282,9 +274,7 @@ textarea {
} }
[dir="rtl"] { [dir="rtl"] {
input, :where(input, select, textarea) {
select,
textarea {
&:not([type="checkbox"]):not([type="radio"]) { &:not([type="checkbox"]):not([type="radio"]) {
&[aria-invalid], &[aria-invalid],
&[aria-invalid="true"], &[aria-invalid="true"],
@ -341,9 +331,7 @@ select {
} }
// Helper // Helper
input, :where(input, select, textarea) {
select,
textarea {
+ small { + small {
display: block; display: block;
width: 100%; width: 100%;
@ -355,9 +343,7 @@ textarea {
// Styles for Input inside a label // Styles for Input inside a label
label { label {
& > input, > :where(input, select, textarea) {
& > select,
& > textarea {
margin-top: calc(var(--spacing) * 0.25); margin-top: calc(var(--spacing) * 0.25);
} }
} }

View file

@ -28,11 +28,6 @@ sup {
top: -0.5em; top: -0.5em;
} }
// Remove the margin on nested lists in Chrome, Edge, and Safari
:where(dl, ol, ul) :where(dl, ol, ul) {
margin: 0;
}
// Pico // Pico
// //
@ -70,10 +65,7 @@ a,
text-decoration var(--transition), box-shadow var(--transition); text-decoration var(--transition), box-shadow var(--transition);
} }
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--color: var(--primary-hover); --color: var(--primary-hover);
--text-decoration: underline; --text-decoration: underline;
} }
@ -87,10 +79,7 @@ a,
&.secondary { &.secondary {
--color: var(--secondary); --color: var(--secondary);
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--color: var(--secondary-hover); --color: var(--secondary-hover);
} }
@ -103,10 +92,7 @@ a,
&.contrast { &.contrast {
--color: var(--contrast); --color: var(--contrast);
&[aria-current], &:is([aria-current], :hover, :active, :focus) {
&:hover,
&:active,
&:focus {
--color: var(--contrast-hover); --color: var(--contrast-hover);
} }
@ -152,22 +138,8 @@ h6 {
} }
// Margin-top for headings after a typography block // Margin-top for headings after a typography block
address, :where(address, blockquote, dl, figure, form, ol, p, pre, table, ul) {
blockquote, ~ :is(h1, h2, h3, h4, h5, h6) {
dl,
figure,
form,
ol,
p,
pre,
table,
ul {
& ~ h1,
& ~ h2,
& ~ h3,
& ~ h4,
& ~ h5,
& ~ h6 {
margin-top: var(--typography-spacing-vertical); margin-top: var(--typography-spacing-vertical);
} }
} }
@ -219,8 +191,7 @@ small {
} }
// Lists // Lists
ul, :where(dl, ol, ul) {
ol {
padding-right: 0; padding-right: 0;
padding-left: var(--spacing); padding-left: var(--spacing);
padding-inline-start: var(--spacing); padding-inline-start: var(--spacing);
@ -231,6 +202,15 @@ ol {
} }
} }
// Margin-top for nested lists
// 1. Remove the margin on nested lists in Chrome, Edge, IE, and Safari
:where(dl, ol, ul) {
:is(dl, ol, ul) {
margin: 0; // 1
margin-top: calc(var(--typography-spacing-vertical) * 0.25);
}
}
ul li { ul li {
list-style: square; list-style: square;
} }