2025-01-29 18:24:05 +02:00
|
|
|
/*
|
2025-01-29 23:21:44 +02:00
|
|
|
* Command buttons (.btn-primary / .btn-secondary / .btn-sm / .btn-success)
|
2025-01-29 18:24:05 +02:00
|
|
|
*/
|
|
|
|
|
|
2025-01-29 18:51:00 +02:00
|
|
|
button.btn.btn-primary,
|
|
|
|
|
button.btn.btn-secondary,
|
2025-01-30 20:44:27 +02:00
|
|
|
button.btn.btn-sm:not(.select-button),
|
2025-01-29 21:53:22 +02:00
|
|
|
button.btn.btn-success {
|
2025-01-29 23:41:57 +02:00
|
|
|
display: inline-flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
2025-01-29 18:51:00 +02:00
|
|
|
min-width: 120px;
|
2025-01-29 23:21:44 +02:00
|
|
|
box-shadow: 1px 1px 1px var(--cmd-button-shadow-color);
|
|
|
|
|
border: unset;
|
|
|
|
|
border-radius: 6px;
|
|
|
|
|
padding: 4px 16px;
|
|
|
|
|
background: var(--cmd-button-background-color);
|
|
|
|
|
color: var(--cmd-button-text-color);
|
2025-01-29 18:51:00 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
button.btn.btn-primary:hover,
|
|
|
|
|
button.btn.btn-secondary:hover,
|
2025-01-30 20:44:27 +02:00
|
|
|
button.btn.btn-sm:not(.select-button):hover,
|
2025-01-29 21:53:22 +02:00
|
|
|
button.btn.btn-success:hover {
|
2025-01-29 21:17:20 +02:00
|
|
|
background: var(--cmd-button-hover-background-color);
|
|
|
|
|
color: var(--cmd-button-hover-text-color);
|
2025-01-29 18:24:05 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-29 18:51:00 +02:00
|
|
|
button.btn.btn-primary:active,
|
|
|
|
|
button.btn.btn-secondary:active,
|
2025-01-30 20:44:27 +02:00
|
|
|
button.btn.btn-sm:not(.select-button):active,
|
2025-01-29 21:53:22 +02:00
|
|
|
button.btn.btn-success:active {
|
2025-01-29 18:24:05 +02:00
|
|
|
opacity: .85;
|
2025-01-29 23:21:44 +02:00
|
|
|
box-shadow: unset;
|
2025-01-29 21:17:20 +02:00
|
|
|
background: var(--cmd-button-background-color) !important;
|
|
|
|
|
color: var(--cmd-button-text-color) !important;
|
2025-01-29 18:24:05 +02:00
|
|
|
transform: scale(.95);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-29 21:59:18 +02:00
|
|
|
button.btn.btn-primary:disabled,
|
|
|
|
|
button.btn.btn-secondary:disabled,
|
2025-01-30 20:44:27 +02:00
|
|
|
button.btn.btn-sm:not(.select-button):disabled,
|
2025-01-29 21:59:18 +02:00
|
|
|
button.btn.btn-success:disabled {
|
|
|
|
|
opacity: var(--cmd-button-disabled-opacity);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-29 22:02:25 +02:00
|
|
|
button.btn.btn-primary:focus-visible,
|
|
|
|
|
button.btn.btn-secondary:focus-visible,
|
2025-01-30 20:44:27 +02:00
|
|
|
button.btn.btn-sm:not(.select-button):focus-visible,
|
2025-01-29 22:02:25 +02:00
|
|
|
button.btn.btn-success:focus-visible {
|
|
|
|
|
outline: 2px solid var(--input-focus-outline-color);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-29 23:21:44 +02:00
|
|
|
/* Button's icon */
|
2025-01-29 23:14:27 +02:00
|
|
|
button.btn.btn-primary span.bx,
|
|
|
|
|
button.btn.btn-secondary span.bx,
|
|
|
|
|
button.btn.btn-sm span.bx,
|
|
|
|
|
button.btn.btn-success span.bx {
|
|
|
|
|
color: var(--cmd-button-icon-color);
|
2025-01-29 23:41:57 +02:00
|
|
|
padding-right: .35em;
|
|
|
|
|
font-size: 1.2em;
|
2025-01-29 23:14:27 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-29 23:21:44 +02:00
|
|
|
/* Button's keyboard shortcut */
|
2025-01-29 22:20:52 +02:00
|
|
|
button.btn.btn-primary kbd,
|
|
|
|
|
button.btn.btn-secondary kbd,
|
|
|
|
|
button.btn.btn-sm kbd,
|
|
|
|
|
button.btn.btn-success kbd {
|
2025-01-29 23:21:44 +02:00
|
|
|
margin-left: .5em;
|
2025-01-29 22:20:52 +02:00
|
|
|
background: var(--cmd-button-keyboard-shortcut-background);
|
|
|
|
|
color: var(--cmd-button-keyboard-shortcut-color);
|
|
|
|
|
font-size: .6em;
|
|
|
|
|
text-transform: uppercase;
|
|
|
|
|
letter-spacing: .5pt;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-30 22:44:11 +02:00
|
|
|
/*
|
|
|
|
|
* Icon buttons
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
:root .icon-action:not(.global-menu-button) {
|
|
|
|
|
width: var(--icon-button-size);
|
|
|
|
|
height: var(--icon-button-size);
|
|
|
|
|
border: unset;
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
padding: 0;
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: var(--icon-button-color);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* The icon */
|
|
|
|
|
:root .icon-action:not(.global-menu-button)::before {
|
|
|
|
|
display: block;
|
|
|
|
|
line-height: var(--icon-button-size);
|
|
|
|
|
font-size: calc(var(--icon-button-size) * var(--icon-button-icon-ratio));
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-30 22:47:24 +02:00
|
|
|
:root .icon-action:not(.global-menu-button):hover,
|
|
|
|
|
:root .icon-action:not(.global-menu-button).show {
|
2025-01-30 22:44:11 +02:00
|
|
|
background: var(--icon-button-hover-background);
|
|
|
|
|
color: var(--icon-button-hover-color);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:root .icon-action:not(.global-menu-button):active::before {
|
|
|
|
|
transform: scale(.85);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-30 22:50:35 +02:00
|
|
|
:root .icon-action:not(.global-menu-button):focus-visible {
|
|
|
|
|
outline: 2px solid var(--input-focus-outline-color);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-13 14:51:23 +02:00
|
|
|
/*
|
|
|
|
|
* Input boxes
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
input:disabled {
|
|
|
|
|
opacity: .33;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Text boxes */
|
|
|
|
|
|
|
|
|
|
input:not([type]),
|
|
|
|
|
input[type="text"],
|
|
|
|
|
input[type="number"],
|
2025-01-13 21:23:12 +02:00
|
|
|
input[type="password"],
|
2025-01-15 01:28:18 +02:00
|
|
|
textarea.form-control,
|
|
|
|
|
textarea {
|
2025-01-13 14:51:23 +02:00
|
|
|
outline: 3px solid transparent;
|
|
|
|
|
outline-offset: 6px;
|
2025-01-13 21:12:27 +02:00
|
|
|
border: unset;
|
|
|
|
|
background: var(--input-background-color);
|
|
|
|
|
color: var(--input-text-color);
|
2025-01-13 14:51:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input:not([type]):hover,
|
|
|
|
|
input[type="text"]:hover,
|
|
|
|
|
input[type="number"]:hover,
|
2025-01-13 21:23:12 +02:00
|
|
|
input[type="password"]:hover,
|
2025-01-15 01:28:18 +02:00
|
|
|
textarea.form-control:hover,
|
|
|
|
|
textarea:hover {
|
2025-01-13 21:12:27 +02:00
|
|
|
background: var(--input-hover-background);
|
|
|
|
|
color: var(--input-hover-color);
|
2025-01-13 14:51:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input:not([type]):focus,
|
|
|
|
|
input[type="text"]:focus,
|
|
|
|
|
input[type="number"]:focus,
|
2025-01-13 21:23:12 +02:00
|
|
|
input[type="password"]:focus,
|
2025-01-15 01:28:18 +02:00
|
|
|
textarea.form-control:focus,
|
|
|
|
|
textarea:focus {
|
2025-01-13 21:12:27 +02:00
|
|
|
box-shadow: unset;
|
2025-01-13 14:51:23 +02:00
|
|
|
outline: 3px solid var(--input-focus-outline-color);
|
|
|
|
|
outline-offset: 0;
|
2025-01-13 21:12:27 +02:00
|
|
|
background: var(--input-focus-background);
|
|
|
|
|
color: var(--input-focus-color);
|
2025-01-13 14:51:23 +02:00
|
|
|
transition: outline-color 50ms linear,
|
|
|
|
|
outline-offset 200ms ease-out;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-13 21:23:12 +02:00
|
|
|
input::placeholder,
|
|
|
|
|
.form-control::placeholder {
|
2025-01-13 14:51:23 +02:00
|
|
|
--muted-text-color: var(--input-placeholder-color);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-13 21:23:12 +02:00
|
|
|
input::selection,
|
|
|
|
|
.form-control::selection {
|
2025-01-13 14:51:23 +02:00
|
|
|
background: var(--input-selection-background);
|
|
|
|
|
color: var(--input-selection-text-color);
|
2025-01-13 21:45:56 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-14 01:30:31 +02:00
|
|
|
/* Input groups */
|
|
|
|
|
|
|
|
|
|
.input-group {
|
|
|
|
|
outline: 3px solid transparent;
|
|
|
|
|
outline-offset: 6px;
|
|
|
|
|
background: var(--input-background-color);
|
|
|
|
|
border-radius: 6px;
|
|
|
|
|
padding-right: 8px;
|
|
|
|
|
color: var(--quick-search-color);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.input-group:hover {
|
|
|
|
|
background: var(--input-hover-background);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.input-group:focus-within {
|
|
|
|
|
outline: 3px solid var(--input-focus-outline-color);
|
|
|
|
|
outline-offset: 0;
|
|
|
|
|
background: var(--input-focus-background);
|
|
|
|
|
transition: outline-color 50ms linear,
|
|
|
|
|
outline-offset 200ms ease-out;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-13 21:45:56 +02:00
|
|
|
.input-group input
|
2025-01-14 01:30:31 +02:00
|
|
|
.input-group input:hover,
|
2025-01-13 21:45:56 +02:00
|
|
|
.input-group input:focus,
|
|
|
|
|
.input-group .form-control,
|
2025-01-14 01:30:31 +02:00
|
|
|
.input-group .form-control:hover,
|
2025-01-13 21:45:56 +02:00
|
|
|
.input-group .form-control:focus {
|
|
|
|
|
/* Ignore the focus outline for the inputs that are children of an input group */
|
|
|
|
|
outline: unset;
|
2025-01-14 01:30:31 +02:00
|
|
|
|
|
|
|
|
background: transparent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.input-group button,
|
|
|
|
|
.input-group a {
|
|
|
|
|
display: flex;
|
|
|
|
|
--bs-border-width: 0;
|
|
|
|
|
--accented-background-color: transparent;
|
|
|
|
|
background: transparent;
|
|
|
|
|
padding: 0 4px;
|
|
|
|
|
|
2025-01-14 01:51:18 +02:00
|
|
|
/* Workaround to set the "color" property. */
|
2025-01-14 01:46:28 +02:00
|
|
|
--muted-text-color: var(--input-action-button-color);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.input-group button:hover,
|
|
|
|
|
.input-group a:hover {
|
|
|
|
|
--muted-text-color: var(--input-action-button-hover);
|
2025-01-14 01:30:31 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-14 02:12:26 +02:00
|
|
|
.input-group button:focus-visible,
|
|
|
|
|
.input-group a:focus-visible {
|
|
|
|
|
outline: transparent;
|
|
|
|
|
border: transparent;
|
|
|
|
|
text-shadow: 0 0 3px var(--input-action-button-hover);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-14 01:30:31 +02:00
|
|
|
.input-group a.disabled {
|
|
|
|
|
opacity: .5;
|
2025-01-14 01:51:18 +02:00
|
|
|
/* Workaround to set the "background" property. */
|
|
|
|
|
--button-disabled-background-color: transparent;
|
2025-01-14 01:30:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.input-group .input-clearer-button {
|
|
|
|
|
background: transparent !important;
|
2025-01-14 21:40:05 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-15 02:11:17 +02:00
|
|
|
/* Combo box-like dropdown buttons */
|
2025-01-14 21:40:05 +02:00
|
|
|
|
2025-01-15 02:11:17 +02:00
|
|
|
.select-button.dropdown-toggle {
|
|
|
|
|
padding-right: 40px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.select-button.dropdown-toggle::after {
|
|
|
|
|
/* Remove the original arrow */
|
|
|
|
|
content: unset;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Combo boxes and combo box-like dropdown buttons */
|
|
|
|
|
|
|
|
|
|
select,
|
|
|
|
|
select.form-select,
|
|
|
|
|
.select-button.dropdown-toggle.btn {
|
2025-01-14 21:40:05 +02:00
|
|
|
outline: 3px solid transparent;
|
|
|
|
|
outline-offset: 6px;
|
2025-01-14 22:10:06 +02:00
|
|
|
background: var(--input-background-color)
|
|
|
|
|
var(--select-arrow-svg) right 0.75rem center/15px 20px no-repeat;
|
2025-01-14 21:40:05 +02:00
|
|
|
color: var(--input-text-color);
|
|
|
|
|
border: unset;
|
2025-01-15 02:31:49 +02:00
|
|
|
border-radius: 0.375rem;
|
2025-01-14 21:40:05 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-15 02:11:17 +02:00
|
|
|
select:hover,
|
|
|
|
|
select.form-select:hover,
|
2025-01-30 21:00:46 +02:00
|
|
|
.select-button.dropdown-toggle.btn:hover {
|
2025-01-14 21:40:05 +02:00
|
|
|
background-color: var(--input-hover-background);
|
|
|
|
|
color: var(--input-hover-color);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-30 20:57:36 +02:00
|
|
|
button.select-button.dropdown-toggle.btn:active {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
color: var(--select-focus-text-color);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-15 02:11:17 +02:00
|
|
|
select:focus,
|
|
|
|
|
select.form-select:focus,
|
2025-01-30 20:57:36 +02:00
|
|
|
.select-button.dropdown-toggle.btn:focus {
|
2025-01-14 21:40:05 +02:00
|
|
|
box-shadow: unset;
|
|
|
|
|
outline: 3px solid var(--input-focus-outline-color);
|
|
|
|
|
outline-offset: 0;
|
|
|
|
|
background-color: var(--select-focus-background);
|
|
|
|
|
color: var(--select-focus-text-color);
|
|
|
|
|
transition: outline-color 50ms linear,
|
|
|
|
|
outline-offset 200ms ease-out;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
option {
|
|
|
|
|
color: var(--select-dropdown-text-color);
|
2025-01-14 22:39:30 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
optgroup {
|
|
|
|
|
color: var(--select-group-heading-text-color);
|
|
|
|
|
font-size: .75em;
|
|
|
|
|
font-weight: normal;
|
|
|
|
|
font-style: normal;
|
|
|
|
|
line-height: 40px;
|
2025-01-16 18:51:35 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* Check boxes and radio buttons */
|
2025-01-16 18:51:35 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
@supports selector(label:has(*)) {
|
2025-01-17 01:06:25 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* Check box & radio button commons */
|
2025-01-16 18:51:35 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* The parent label */
|
|
|
|
|
label.tn-radio,
|
|
|
|
|
label.tn-checkbox {
|
|
|
|
|
--box-size: 1em;
|
|
|
|
|
--box-label-gap: .5em;
|
2025-01-16 18:51:35 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
position: relative;
|
|
|
|
|
padding-left: calc(var(--box-size) + var(--box-label-gap)) !important;
|
|
|
|
|
user-select: none;
|
2025-01-16 18:51:35 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
}
|
2025-01-17 00:51:26 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* The original input */
|
|
|
|
|
label.tn-radio > input[type="radio"],
|
|
|
|
|
label.tn-checkbox > input[type="checkbox"] {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
width: var(--box-size);
|
|
|
|
|
height: 100%;
|
|
|
|
|
opacity: 0 !important;
|
|
|
|
|
}
|
2025-01-17 00:51:26 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
label.tn-radio::before,
|
|
|
|
|
label.tn-radio::after,
|
|
|
|
|
label.tn-checkbox::before,
|
|
|
|
|
label.tn-checkbox::after {
|
|
|
|
|
content: "";
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 50%;
|
|
|
|
|
left: 0;
|
|
|
|
|
translate: 0 -50%;
|
|
|
|
|
width: var(--box-size);
|
|
|
|
|
height: var(--box-size);
|
|
|
|
|
}
|
2025-01-17 00:51:26 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
label.tn-radio:has(>input[type="radio"]:focus-visible)::before,
|
|
|
|
|
label.tn-checkbox:has(>input[type="checkbox"]:focus-visible)::before {
|
|
|
|
|
outline: 2px solid var(--input-focus-outline-color);
|
|
|
|
|
}
|
2025-01-17 00:51:26 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* Check boxes */
|
|
|
|
|
|
|
|
|
|
/* The check box background */
|
|
|
|
|
label.tn-checkbox::before {
|
|
|
|
|
border-radius: 3px;
|
|
|
|
|
background: var(--radio-checkbox-background);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
label.tn-checkbox:has(>input[type="checkbox"]:not(:disabled)):hover:before {
|
|
|
|
|
background: var(--radio-checkbox-hover-background);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes checkbox-checked {
|
|
|
|
|
from {
|
|
|
|
|
transform: scale(2);
|
|
|
|
|
} to {
|
|
|
|
|
transform: scale(1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* The tick mark */
|
|
|
|
|
label.tn-checkbox::after {
|
|
|
|
|
mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3ctitle%3echeck-bold%3c/title%3e%3cpath d='M9%2c20.42L2.79%2c14.21L5.62%2c11.38L9%2c14.77L18.88%2c4.88L21.71%2c7.71L9%2c20.42Z' /%3e%3c/svg%3e");
|
|
|
|
|
mask-position: center center;
|
|
|
|
|
mask-size: .95em;
|
|
|
|
|
background-color: var(--radio-checkbox-indicator-color);
|
|
|
|
|
transform: scale(0);
|
|
|
|
|
opacity: 0;
|
|
|
|
|
transition: transform 300ms ease-out,
|
|
|
|
|
opacity 300ms linear;
|
|
|
|
|
}
|
2025-01-17 00:51:26 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
label.tn-checkbox:has(>input[type="checkbox"]:checked)::after {
|
|
|
|
|
opacity: 1;
|
2025-01-17 00:51:26 +02:00
|
|
|
transform: scale(1);
|
2025-01-24 22:45:58 +02:00
|
|
|
transition: opacity 100ms ease-in-out;
|
|
|
|
|
animation: checkbox-checked 150ms ease-out;
|
2025-01-17 00:51:26 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* Radio buttons */
|
2025-01-17 00:51:26 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
label.tn-radio::before,
|
|
|
|
|
label.tn-radio::after {
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
}
|
2025-01-17 00:51:26 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* The outer circle */
|
|
|
|
|
label.tn-radio::before {
|
|
|
|
|
background: var(--radio-checkbox-background);
|
|
|
|
|
}
|
2025-01-17 00:51:26 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
label.tn-radio:has(>input[type="radio"]:not(:disabled)):hover::before {
|
|
|
|
|
background: var(--radio-checkbox-hover-background);
|
|
|
|
|
}
|
2025-01-16 18:51:35 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
@keyframes radio-checked {
|
|
|
|
|
from {
|
|
|
|
|
transform: scale(1.5);
|
|
|
|
|
} to {
|
|
|
|
|
transform: scale(.5);
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-01-16 18:51:35 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* The inner circle */
|
|
|
|
|
label.tn-radio::after {
|
|
|
|
|
background: var(--radio-checkbox-indicator-color);
|
|
|
|
|
transform: scale(0);
|
|
|
|
|
opacity: 0;
|
|
|
|
|
transition: opacity 300ms linear,
|
|
|
|
|
transform 300ms ease-in;
|
|
|
|
|
}
|
2025-01-16 18:51:35 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
label.tn-radio:has(>input[type="radio"]:checked)::after {
|
2025-01-17 01:22:09 +02:00
|
|
|
transform: scale(.5);
|
2025-01-24 22:45:58 +02:00
|
|
|
opacity: 1;
|
|
|
|
|
transition: opacity 150ms linear;
|
|
|
|
|
animation: radio-checked 200ms ease-out;
|
2025-01-17 01:22:09 +02:00
|
|
|
}
|
|
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
/* Disabled check boxes and radio buttons */
|
2025-01-16 18:51:35 +02:00
|
|
|
|
2025-01-24 22:45:58 +02:00
|
|
|
label.tn-radio:has(> input[type="radio"]:disabled)::before,
|
|
|
|
|
label.tn-radio:has(> input[type="radio"]:disabled)::after,
|
|
|
|
|
label.tn-checkbox:has(> input[type="checkbox"]:disabled)::before,
|
|
|
|
|
label.tn-checkbox:has(> input[type="checkbox"]:disabled)::after {
|
|
|
|
|
opacity: .5;
|
|
|
|
|
}
|
2025-01-20 17:09:01 +02:00
|
|
|
|
|
|
|
|
}
|
2025-01-23 00:47:14 +02:00
|
|
|
|
|
|
|
|
/* Links */
|
|
|
|
|
|
|
|
|
|
body a.tn-link,
|
|
|
|
|
body a.tn-link:visited,
|
|
|
|
|
.use-tn-links a,
|
|
|
|
|
.use-tn-links a:visited {
|
|
|
|
|
--background: transparent;
|
|
|
|
|
|
2025-01-24 10:14:18 +02:00
|
|
|
box-shadow: 0 0 0 0 var(--background);
|
2025-01-23 00:47:14 +02:00
|
|
|
border-radius: 4px;
|
|
|
|
|
background: var(--background);
|
|
|
|
|
color: currentColor;
|
|
|
|
|
font-weight: normal;
|
|
|
|
|
text-decoration: underline;
|
|
|
|
|
|
|
|
|
|
transition: background-color 200ms ease-out,
|
2025-01-24 10:14:18 +02:00
|
|
|
box-shadow 200ms ease-out,
|
2025-01-23 00:47:14 +02:00
|
|
|
color 300ms ease-out;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
body a.tn-link:focus-visible,
|
|
|
|
|
.use-tn-links a:focus-visible {
|
|
|
|
|
outline: 2px solid var(--input-focus-outline-color);
|
|
|
|
|
outline-offset: 2px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
body a.tn-link:hover,
|
|
|
|
|
.use-tn-links a:hover {
|
2025-01-24 10:14:18 +02:00
|
|
|
box-shadow: 0 0 0 4px var(--link-hover-background);
|
2025-01-23 00:47:14 +02:00
|
|
|
--background: var(--link-hover-background);
|
|
|
|
|
color: var(--link-hover-color);
|
|
|
|
|
|
|
|
|
|
transition: background-color 100ms ease-in,
|
2025-01-24 10:14:18 +02:00
|
|
|
box-shadow 100ms ease-in,
|
2025-01-23 00:47:14 +02:00
|
|
|
color 150ms ease-in;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a.tn-link.external:not(.no-arrow)::after,
|
|
|
|
|
a.tn-link[href^="http://"]:not(.no-arrow)::after,
|
|
|
|
|
a.tn-link[href^="https://"]:not(.no-arrow)::after,
|
|
|
|
|
.use-tn-links a.external:not(.no-arrow)::after,
|
|
|
|
|
.use-tn-links a[href^="http://"]:not(.no-arrow)::after,
|
|
|
|
|
.use-tn-links a[href^="https://"]:not(.no-arrow)::after {
|
|
|
|
|
display: inline-block;
|
|
|
|
|
opacity: .5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes link-arrow-blink {
|
|
|
|
|
from {
|
|
|
|
|
opacity: 1;
|
|
|
|
|
} to {
|
|
|
|
|
opacity: .5;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a.tn-link:hover.external:not(.no-arrow)::after,
|
|
|
|
|
a.tn-link:hover[href^="http://"]:not(.no-arrow)::after,
|
|
|
|
|
a.tn-link:hover[href^="https://"]:not(.no-arrow)::after,
|
|
|
|
|
.use-tn-links a:hover.external:not(.no-arrow)::after,
|
|
|
|
|
.use-tn-links a:hover[href^="http://"]:not(.no-arrow)::after,
|
|
|
|
|
.use-tn-links a:hover[href^="https://"]:not(.no-arrow)::after {
|
|
|
|
|
animation: link-arrow-blink 500ms linear alternate infinite;
|
|
|
|
|
}
|