Files
CT/dist/styles.css
T

1308 lines
19 KiB
CSS
Raw Normal View History

2024-07-07 13:43:18 +02:00
/*
BASIC
*/
* {
2026-04-01 08:46:10 +00:00
box-sizing: border-box;
text-align: left;
border: none;
outline: none;
margin: 0px;
padding: 0px;
2024-07-07 13:43:18 +02:00
}
2024-07-13 11:57:35 +02:00
html {
2026-04-01 08:46:10 +00:00
-webkit-text-size-adjust: 100%;
2024-07-13 11:57:35 +02:00
}
2024-07-20 23:20:57 +02:00
/*
ANIMATION
*/
@keyframes slide-up {
2026-04-01 08:46:10 +00:00
0% {
opacity: 0;
transform: translateY(2rem);
}
2024-07-20 23:20:57 +02:00
}
body {
2026-04-01 08:46:10 +00:00
--animation-duration: 0.4s;
2024-07-20 23:20:57 +02:00
}
2026-08-29 02:10:26 +02:00
.modal > div,
2024-07-26 03:14:55 +02:00
.slide-up {
2026-04-01 08:46:10 +00:00
animation: slide-up var(--animation-duration);
2024-07-26 03:14:55 +02:00
}
2024-07-07 13:43:18 +02:00
/*
COLORS
*/
/* definition */
2026-04-09 21:28:09 +00:00
body {
2026-04-01 08:46:10 +00:00
--background: hsla(0, 0%, 100%, 100%);
--background-glass: hsla(0, 0%, 100%, 5%);
--background-transparent: hsla(0, 0%, 0%, 5%);
--background-hover: hsla(0, 0%, 55%, 12%);
--background-active: hsla(0, 0%, 55%, 12%);
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--layer: hsla(0, 0%, 96%, 60%);
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--surface: hsla(0, 0%, 0%, 5%);
--surface-hover: hsla(0, 0%, 5%, 10%);
--surface-active: hsla(0, 0%, 5%, 15%);
--surface-alt: hsla(0, 0%, 0%, 2%);
2024-07-07 13:43:18 +02:00
2026-04-14 19:29:49 +00:00
--blur: 70px;
2026-04-01 08:46:10 +00:00
--border: hsla(0, 0%, 0%, 10%);
--surface-border: #8d8d8d;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--text-normal: #161616;
--text-placeholder: hsla(0, 0%, 0%, 30%);
--text-on-color: #ffffff;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--text-success: #24a148;
--text-warning: #f1c21b;
--text-error: #da1e28;
--text-info: #0043ce;
2024-07-07 13:43:18 +02:00
2026-08-29 02:10:26 +02:00
--highlight-background: linear-gradient(
45deg,
hsl(30, 100%, 50%),
hsl(40, 100%, 50%)
);
--highlight-color: black;
2026-04-01 08:46:10 +00:00
--link: #0f62fe;
--link-hover: #0043ce;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--primary: #0f62fe;
--primary-hover: #0353e9;
--primary-active: #002d9c;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--danger: #da1e28;
--danger-hover: #ba1b23;
--danger-active: #750e13;
2024-07-07 13:43:18 +02:00
}
2026-04-09 18:09:26 +00:00
body[theme="dark"] {
--background: hsla(0, 0%, 9%, 100%);
--background-glass: hsla(0, 0%, 9%, 20%);
--background-transparent: hsla(0, 0%, 100%, 5%);
--background-hover: hsla(0, 0%, 55%, 16%);
--background-active: hsla(0, 0%, 55%, 40%);
2024-07-07 13:43:18 +02:00
2026-04-09 18:09:26 +00:00
--layer: hsla(0, 0%, 15%, 60%);
2024-07-07 13:43:18 +02:00
--surface: hsla(0, 0%, 100%, 5%);
2026-04-09 18:09:26 +00:00
--surface-hover: hsla(0, 0%, 100%, 10%);
--surface-active: hsla(0, 0%, 100%, 15%);
--surface-alt: hsla(0, 0%, 100%, 2%);
2024-07-07 13:43:18 +02:00
2026-04-09 18:09:26 +00:00
--border: hsla(0, 0%, 100%, 10%);
--surface-border: #6f6f6f;
2024-07-07 13:43:18 +02:00
2026-04-09 18:09:26 +00:00
--text-normal: #f4f4f4;
--text-placeholder: hsla(0, 0%, 100%, 30%);
2024-07-07 13:43:18 +02:00
2026-04-09 18:09:26 +00:00
--text-success: #42be65;
--text-warning: #f1c21b;
--text-error: #fa4d56;
--text-info: #4589ff;
2024-07-07 13:43:18 +02:00
2026-04-09 18:09:26 +00:00
--link: #78a9ff;
--link-hover: #a6c8ff;
}
2024-07-07 13:43:18 +02:00
/* basic */
2026-04-01 11:15:28 +00:00
body {
background: var(--background);
2026-04-09 18:09:26 +00:00
color: var(--text-normal);
2026-04-01 11:15:28 +00:00
}
2024-07-20 18:10:42 +02:00
.tile {
2026-04-01 08:46:10 +00:00
color: var(--text-normal);
2024-07-07 13:43:18 +02:00
}
2024-07-13 12:06:41 +02:00
::placeholder {
2026-04-01 08:46:10 +00:00
color: var(--text-placeholder);
2024-07-13 12:06:41 +02:00
}
2026-08-29 02:10:26 +02:00
.modal > div {
2026-04-01 08:46:10 +00:00
background: var(--background-glass);
2024-07-07 13:43:18 +02:00
}
menu,
header {
2026-04-01 08:46:10 +00:00
background: var(--background-transparent);
2024-07-07 13:43:18 +02:00
}
* {
2026-04-01 08:46:10 +00:00
color: inherit;
accent-color: var(--primary);
2024-07-07 13:43:18 +02:00
}
2024-07-07 16:56:12 +02:00
a {
2026-04-01 08:46:10 +00:00
color: var(--link);
2024-07-07 16:56:12 +02:00
}
2024-07-07 13:43:18 +02:00
/* text */
.success {
2026-04-01 08:46:10 +00:00
color: var(--text-success);
2024-07-07 13:43:18 +02:00
}
.warning {
2026-04-01 08:46:10 +00:00
color: var(--text-warning);
2024-07-07 13:43:18 +02:00
}
.error {
2026-04-01 08:46:10 +00:00
color: var(--text-error);
2024-07-07 13:43:18 +02:00
}
.info {
2026-04-01 08:46:10 +00:00
color: var(--text-info);
2024-07-07 13:43:18 +02:00
}
/* controls */
2024-07-20 14:54:52 +02:00
button:not(.tile *),
footer:not(.tile *),
input:not(.tile *),
textarea:not(.tile *),
select:not(.tile *),
2024-07-07 13:43:18 +02:00
.surface,
.tile {
2026-04-01 08:46:10 +00:00
background: var(--surface);
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
.surface-alt {
background: var(--surface-alt);
}
@media (hover: hover) {
2026-04-01 08:46:10 +00:00
button:hover,
select:hover,
button.tile.ghost:hover {
background: var(--surface-hover);
}
[selected]:hover {
background: var(--surface);
}
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
button:active,
select:active,
2024-07-23 23:28:22 +02:00
button.tile.ghost:active {
2026-04-01 08:46:10 +00:00
background: var(--surface-active);
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-10 19:07:58 +02:00
[selected]:active {
2026-04-01 08:46:10 +00:00
background: var(--surface-hover);
2024-07-10 19:07:58 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-20 14:54:52 +02:00
.tile *,
2024-07-07 13:43:18 +02:00
header button {
2026-04-01 08:46:10 +00:00
background: transparent;
2024-07-07 13:43:18 +02:00
}
input:checked {
2026-04-01 08:46:10 +00:00
background: var(--primary);
2024-07-07 13:43:18 +02:00
}
/* primary button */
button.primary {
2026-04-01 08:46:10 +00:00
background: var(--primary);
color: var(--text-on-color);
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
@media (hover: hover) {
2026-04-01 08:46:10 +00:00
button.primary:hover {
background: var(--primary-hover);
}
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
button.primary:active {
2026-04-01 08:46:10 +00:00
background: var(--primary-active);
2024-07-07 13:43:18 +02:00
}
/* ghost button */
button.ghost:not(.tile) {
2026-04-01 08:46:10 +00:00
background: transparent;
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
button.ghost {
2026-04-01 08:46:10 +00:00
color: var(--link);
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
.tab-link[active] {
2026-04-01 08:46:10 +00:00
color: var(--primary);
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
@media (hover: hover) {
2026-04-01 08:46:10 +00:00
button.ghost:hover {
background: var(--background-hover);
}
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
button.ghost:active {
2026-04-01 08:46:10 +00:00
background: var(--background-active);
2024-07-07 13:43:18 +02:00
}
/* danger button */
button.danger {
2026-04-01 08:46:10 +00:00
background: var(--danger);
color: white;
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
@media (hover: hover) {
2026-04-01 08:46:10 +00:00
button.danger:hover {
background: var(--danger-hover);
}
2024-07-07 13:43:18 +02:00
}
2026-04-01 08:46:10 +00:00
2024-07-07 13:43:18 +02:00
button.danger:active {
2026-04-01 08:46:10 +00:00
background: var(--danger-active);
2024-07-07 13:43:18 +02:00
}
/*
SIZES
*/
body {
2026-04-01 08:46:10 +00:00
/* gap */
--gap-between-tiles: 4px;
--gap-in-controls: 7px;
2026-04-01 08:46:10 +00:00
--gap-in-tab-links: 1rem;
--text-gap: 1.2rem;
2026-04-01 08:46:10 +00:00
--large-gap: 2rem;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
/* outline */
--outline-width: var(--gap-between-tiles);
2024-07-22 00:30:43 +02:00
2026-04-01 08:46:10 +00:00
/* margin */
--label-top-padding: 0.25rem;
--label-tile-top-padding: 0.5rem;
--label-margin-bottom: 1rem;
--content-margin: 0.75rem;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
/* padding */
--control-padding: 1rem;
2026-04-09 18:09:26 +00:00
--control-padding-compact: 0.4rem 0.8rem;
2026-04-01 08:46:10 +00:00
--control-marker-padding: 0.7rem;
--content-padding: 1rem;
--modal-padding: 1.25rem;
--horizontal-tab-link-padding: 0.8rem;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
/* size */
--checkbox-size: 16px;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--menu-height-mobile: calc(var(--header-height) + var(--safe-area-bottom));
--menu-width-desktop: 200px;
--split-pane-width-desktop: 300px;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--control-height: 42px;
--header-height: 48px;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--max-input-width: 24rem;
--max-content-width: 38rem;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
/* safe */
--safe-area-top: env(safe-area-inset-top);
--safe-area-left: env(safe-area-inset-left);
--safe-area-right: env(safe-area-inset-right);
--safe-area-bottom: env(safe-area-inset-bottom);
2024-07-07 13:43:18 +02:00
}
/*
TYPE
*/
@font-face {
2026-04-01 08:46:10 +00:00
font-family: IBM Plex Sans;
src: url("Fonts/IBMPlexSans-Regular.ttf");
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
@font-face {
2026-04-01 08:46:10 +00:00
font-family: IBM Plex Sans;
src: url("Fonts/IBMPlexSans-Bold.ttf");
font-weight: bold;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
@font-face {
2026-04-01 08:46:10 +00:00
font-family: IBM Plex Mono;
src: url("Fonts/IBMPlexMono-Regular.ttf");
2024-07-07 13:43:18 +02:00
}
@font-face {
2026-04-01 08:46:10 +00:00
font-family: IBM Plex Serif;
src: url("Fonts/IBMPlexSerif-Regular.ttf");
2024-07-07 13:43:18 +02:00
}
/*
MAIN
*/
/* appearance */
input[type="checkbox"],
input[type="radio"],
select {
2026-04-01 08:46:10 +00:00
appearance: none;
--webkit-appearance: none;
--mpz-appearance: none;
2024-07-07 13:43:18 +02:00
}
/* backdrop-filter */
header,
2024-07-20 22:48:57 +02:00
menu,
2026-08-29 02:10:26 +02:00
.modal > div,
2026-04-14 19:35:58 +00:00
.blur {
2026-04-14 19:29:49 +00:00
backdrop-filter: blur(var(--blur));
-webkit-backdrop-filter: blur(var(--blur));
2024-07-07 13:43:18 +02:00
}
/* border, outline, etc */
button,
input,
select,
textarea {
2026-04-01 08:46:10 +00:00
border: none;
2024-07-07 13:43:18 +02:00
}
footer {
2026-04-01 08:46:10 +00:00
border-top: 1px solid var(--surface-border);
2024-07-07 13:43:18 +02:00
}
2026-08-29 02:10:26 +02:00
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not(
label.tile *
),
2024-07-07 13:43:18 +02:00
label.tile,
select:not(label.tile *),
textarea:not(label.tile *) {
2026-04-01 08:46:10 +00:00
border-bottom: 1px solid var(--surface-border);
2024-07-07 13:43:18 +02:00
}
hr {
2026-04-01 08:46:10 +00:00
border-bottom: 1px solid var(--border);
2024-07-07 13:43:18 +02:00
}
2024-07-11 17:07:06 +02:00
.border-bottom {
2026-04-01 08:46:10 +00:00
border-bottom: 1px solid var(--border) !important;
2024-07-11 17:07:06 +02:00
}
2026-08-29 02:10:26 +02:00
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):focus:not(
label.tile *
):not(.no-outline),
2024-07-07 13:43:18 +02:00
label.tile:has(input:focus),
label.tile:has(textarea:focus),
textarea:focus:not(label.tile *),
[selected] {
2026-04-01 08:46:10 +00:00
outline: var(--outline-width) solid var(--primary);
2024-07-07 13:43:18 +02:00
}
2024-07-28 18:38:14 +02:00
.inset-outline[selected] {
2026-04-01 08:46:10 +00:00
outline: none;
box-shadow: var(--primary) 0 0 0 var(--outline-width) inset;
2024-07-28 18:38:14 +02:00
}
2024-07-07 13:43:18 +02:00
/* border-radius */
* {
2026-04-01 08:46:10 +00:00
border-radius: 0px;
2024-07-07 13:43:18 +02:00
}
input[type="radio"] {
2026-04-01 08:46:10 +00:00
border-radius: 100%;
2024-07-07 13:43:18 +02:00
}
/* cursor */
a,
.tab-link {
2026-04-01 08:46:10 +00:00
cursor: pointer;
2024-07-07 13:43:18 +02:00
}
/* display etc */
.align-start {
2026-04-01 08:46:10 +00:00
align-items: start !important;
2024-07-07 13:43:18 +02:00
}
button:not(.tile),
footer,
input,
header,
label.inline,
.modal,
select,
textarea,
.tile:not(label) {
2026-04-01 08:46:10 +00:00
align-items: center;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.align-center {
2026-04-01 08:46:10 +00:00
align-items: center !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
.align-end {
2026-04-01 08:46:10 +00:00
align-items: end !important;
2024-07-07 13:43:18 +02:00
}
label,
label * {
2026-04-01 08:46:10 +00:00
display: block;
2024-07-07 13:43:18 +02:00
}
footer,
header,
input[type="checkbox"],
input[type="radio"],
label.inline,
main,
.modal[open],
2026-08-29 02:10:26 +02:00
.modal > div,
2024-07-07 13:43:18 +02:00
.tile,
2026-08-29 02:10:26 +02:00
.tile > div {
2026-04-01 08:46:10 +00:00
display: flex;
2024-07-07 13:43:18 +02:00
}
2026-08-29 02:10:26 +02:00
header > span,
2024-07-07 22:11:18 +02:00
.flex-column,
.flex-row {
2026-04-01 08:46:10 +00:00
display: flex;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
.grid {
2026-04-01 08:46:10 +00:00
display: grid !important;
2024-07-07 13:43:18 +02:00
}
button:not(.tile),
input,
select,
textarea {
2026-04-01 08:46:10 +00:00
display: inline-flex;
2024-07-07 13:43:18 +02:00
}
2024-07-22 00:30:43 +02:00
.modal {
2026-04-01 08:46:10 +00:00
display: none;
2024-07-07 13:43:18 +02:00
}
[hidden] {
2026-04-01 08:46:10 +00:00
display: none !important;
}
2024-07-07 13:43:18 +02:00
main,
.tile,
2026-08-29 02:10:26 +02:00
.tile > div {
2026-04-01 08:46:10 +00:00
flex: 1;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.flex {
2026-04-01 08:46:10 +00:00
flex: 1 !important;
2024-07-07 22:11:18 +02:00
}
.flex-no {
2026-04-01 08:46:10 +00:00
flex: 0 !important;
2024-07-07 22:11:18 +02:00
}
2026-08-29 02:10:26 +02:00
.modal > div,
2024-07-09 17:23:29 +02:00
.modal main,
2026-08-29 02:10:26 +02:00
.tile > div {
2026-04-01 08:46:10 +00:00
flex-direction: column;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.flex-column {
2026-04-01 08:46:10 +00:00
flex-direction: column !important;
2024-07-07 22:11:18 +02:00
}
.flex-row {
2026-04-01 08:46:10 +00:00
flex-direction: row !important;
2024-07-07 22:11:18 +02:00
}
.flex-wrap {
2026-04-01 08:46:10 +00:00
flex-wrap: wrap !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
button,
2024-07-07 22:11:18 +02:00
label.inline,
.tile,
.control-gap {
2026-04-01 08:46:10 +00:00
gap: var(--gap-in-controls);
2024-07-07 13:43:18 +02:00
}
2026-08-29 02:10:26 +02:00
header > span,
2024-07-07 13:43:18 +02:00
.gap {
2026-04-01 08:46:10 +00:00
gap: var(--gap-between-tiles) !important;
2024-07-07 13:43:18 +02:00
}
2024-07-09 15:15:17 +02:00
.large-gap {
2026-04-01 08:46:10 +00:00
gap: var(--large-gap) !important;
2024-07-09 15:15:17 +02:00
}
2024-07-07 13:43:18 +02:00
header,
2024-07-07 22:11:18 +02:00
button {
2026-04-01 08:46:10 +00:00
justify-content: space-between;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.justify-apart {
2026-04-01 08:46:10 +00:00
justify-content: space-between !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
.tile {
2026-04-01 08:46:10 +00:00
justify-content: start;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.justify-start {
2026-04-01 08:46:10 +00:00
justify-content: start !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
footer,
header button,
input[type="checkbox"],
input[type="radio"],
.modal {
2026-04-01 08:46:10 +00:00
justify-content: center;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.justify-center {
2026-04-01 08:46:10 +00:00
justify-content: safe center !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
.justify-end {
2026-04-01 08:46:10 +00:00
justify-content: end !important;
2024-07-07 13:43:18 +02:00
}
/* opacity */
[disabled] {
2026-04-01 08:46:10 +00:00
opacity: 0.5;
2024-07-07 13:43:18 +02:00
}
label span,
.helper-text,
.secondary,
.tab-link:not([active]) {
2026-04-01 08:46:10 +00:00
opacity: 0.6;
2024-07-07 13:43:18 +02:00
}
/* padding, margin, etc */
h1,
h2,
2024-07-07 22:11:18 +02:00
h3 {
2026-04-01 08:46:10 +00:00
margin: var(--control-padding) 0px;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
main,
p {
2026-04-01 08:46:10 +00:00
margin: 0px;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.margin-0 {
2026-04-01 08:46:10 +00:00
margin: 0px !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
hr {
2026-04-01 08:46:10 +00:00
margin: var(--content-margin) 0px;
2024-07-07 13:43:18 +02:00
}
:is(code, p):not(:last-child) {
2026-04-01 08:46:10 +00:00
margin-bottom: var(--content-margin);
2024-07-07 13:43:18 +02:00
}
2024-07-27 19:13:59 +02:00
.content-margin-bottom {
2026-04-01 08:46:10 +00:00
margin-bottom: var(--content-margin) !important;
2024-07-27 19:13:59 +02:00
}
2024-07-07 13:43:18 +02:00
label:not(.tile) {
2026-04-01 08:46:10 +00:00
margin-bottom: var(--label-margin-bottom);
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.margin-bottom {
2026-04-01 08:46:10 +00:00
margin-bottom: var(--gap-between-tiles) !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
label.tile {
2026-04-01 08:46:10 +00:00
margin-bottom: var(--gap-between-tiles);
2024-07-07 13:43:18 +02:00
}
label:not(.tile) span:first-child {
2026-04-01 08:46:10 +00:00
margin-top: var(--label-top-padding);
2024-07-07 13:43:18 +02:00
}
label.tile span:first-child {
2026-04-01 08:46:10 +00:00
margin-top: var(--label-tile-top-padding);
2024-07-07 13:43:18 +02:00
}
input[type="color"],
input[type="checkbox"],
input[type="radio"] {
2026-04-01 08:46:10 +00:00
padding: 0px;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.padding-0 {
2026-04-01 08:46:10 +00:00
padding: 0 !important;
2024-07-07 22:11:18 +02:00
}
2026-08-29 02:10:26 +02:00
article > div {
2026-04-01 08:46:10 +00:00
padding: var(--content-padding);
2024-07-07 13:43:18 +02:00
}
button:not(.tile):not(header *),
input,
select {
2026-04-01 08:46:10 +00:00
padding: 0px var(--control-padding);
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.padding-h {
2026-04-01 08:46:10 +00:00
padding: 0px var(--control-padding) !important;
2024-07-07 22:11:18 +02:00
}
label.inline,
2024-07-07 13:43:18 +02:00
textarea,
.tile:not(label) {
2026-04-01 08:46:10 +00:00
padding: var(--control-padding);
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.padding {
2026-04-01 08:46:10 +00:00
padding: var(--control-padding) !important;
2024-07-07 22:11:18 +02:00
}
2026-08-29 02:10:26 +02:00
header > span {
2026-04-01 08:46:10 +00:00
padding: var(--gap-between-tiles);
2024-07-11 21:08:41 +02:00
}
2024-07-11 18:54:56 +02:00
.padding-sm {
2026-04-01 08:46:10 +00:00
padding: var(--gap-between-tiles) !important;
2024-07-11 18:54:56 +02:00
}
2024-07-07 13:43:18 +02:00
.modal main {
2026-04-01 08:46:10 +00:00
padding: var(--modal-padding);
2024-07-07 13:43:18 +02:00
}
2024-07-08 12:34:37 +02:00
.padding-top {
2026-04-01 08:46:10 +00:00
padding-top: var(--control-padding) !important;
2024-07-08 12:34:37 +02:00
}
2026-08-29 02:10:26 +02:00
article > div {
2026-04-01 08:46:10 +00:00
padding-top: calc(var(--header-height) + var(--content-margin));
2024-07-07 13:43:18 +02:00
}
header {
2026-04-01 08:46:10 +00:00
padding-left: var(--content-padding);
2024-07-07 13:43:18 +02:00
}
label.tile:has(> span.icon) {
2026-04-01 08:46:10 +00:00
padding-left: var(--control-padding);
2024-07-07 13:43:18 +02:00
}
2024-07-12 15:45:26 +02:00
.padding-left {
2026-04-01 08:46:10 +00:00
padding-left: var(--control-padding) !important;
2024-07-12 15:45:26 +02:00
}
2024-07-11 15:08:25 +02:00
label.tile:has(> span.icon) :is(input, select, textarea) {
2026-04-01 08:46:10 +00:00
padding-left: 0px;
2024-07-07 22:11:18 +02:00
}
2024-07-24 15:57:02 +02:00
select {
2026-04-01 08:46:10 +00:00
padding-right: 2.5rem;
2024-07-24 15:57:02 +02:00
}
2024-07-12 15:45:26 +02:00
.padding-right {
2026-04-01 08:46:10 +00:00
padding-right: var(--control-padding) !important;
2024-07-12 15:45:26 +02:00
}
2024-07-08 12:34:37 +02:00
.padding-bottom {
2026-04-01 08:46:10 +00:00
padding-bottom: var(--control-padding) !important;
2024-07-08 12:34:37 +02:00
}
2026-08-29 02:10:26 +02:00
article > div {
padding-bottom: calc(
var(--menu-height-mobile) + var(--control-height) +
var(--content-padding)
);
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
label:not(.inline) {
2026-04-01 08:46:10 +00:00
text-indent: var(--control-padding);
2024-07-07 13:43:18 +02:00
}
label.tile:has(> span.icon) {
2026-04-01 08:46:10 +00:00
text-indent: 0px;
2024-07-07 13:43:18 +02:00
}
/* pointer-events */
[disabled] {
2026-04-01 08:46:10 +00:00
pointer-events: none;
2024-07-07 13:43:18 +02:00
}
/* position etc */
2026-08-29 02:10:26 +02:00
article > div,
2024-07-07 13:43:18 +02:00
footer,
header,
2026-08-29 02:10:26 +02:00
select + .icon {
2026-04-01 08:46:10 +00:00
position: absolute;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.absolute {
2026-04-01 08:46:10 +00:00
position: absolute !important;
2024-07-07 22:11:18 +02:00
}
.modal {
2026-04-01 08:46:10 +00:00
position: fixed;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.fixed {
2026-04-01 08:46:10 +00:00
position: fixed !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
article,
main,
input,
2024-07-07 22:11:18 +02:00
label {
2026-04-01 08:46:10 +00:00
position: relative;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.relative {
2026-04-01 08:46:10 +00:00
position: relative !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
.sticky {
2026-04-01 08:46:10 +00:00
position: sticky !important;
2024-07-07 13:43:18 +02:00
}
2026-08-29 02:10:26 +02:00
article > div,
2024-07-07 13:43:18 +02:00
header,
2024-07-07 22:11:18 +02:00
.modal {
2026-04-01 08:46:10 +00:00
top: 0;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.top-0 {
2026-04-01 08:46:10 +00:00
top: 0 !important;
2024-07-07 22:11:18 +02:00
}
2026-08-29 02:10:26 +02:00
article > div,
2024-07-07 13:43:18 +02:00
footer,
header,
2024-07-07 22:11:18 +02:00
.modal {
2026-04-01 08:46:10 +00:00
left: 0px;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.left-0 {
2026-04-01 08:46:10 +00:00
left: 0px !important;
2024-07-07 22:11:18 +02:00
}
2026-08-29 02:10:26 +02:00
article > div,
2024-07-07 13:43:18 +02:00
footer,
header,
2024-07-07 22:11:18 +02:00
.modal {
2026-04-01 08:46:10 +00:00
right: 0px;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.right-0 {
2026-04-01 08:46:10 +00:00
right: 0px !important;
2024-07-07 22:11:18 +02:00
}
2026-08-29 02:10:26 +02:00
select + .icon {
2026-04-01 08:46:10 +00:00
right: var(--control-marker-padding);
2024-07-07 13:43:18 +02:00
}
footer {
2026-04-01 08:46:10 +00:00
bottom: var(--safe-area-bottom);
2024-07-07 22:11:18 +02:00
}
body:has(> menu) footer {
2026-04-01 08:46:10 +00:00
bottom: var(--menu-height-mobile);
2024-07-07 13:43:18 +02:00
}
2026-08-29 02:10:26 +02:00
article > div,
select + .icon,
2024-07-07 22:11:18 +02:00
.modal {
2026-04-01 08:46:10 +00:00
bottom: 0px;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.bottom-0 {
2026-04-01 08:46:10 +00:00
bottom: 0px !important;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
/* size */
article,
main,
2026-08-29 02:10:26 +02:00
select + .icon,
.modal > div,
2024-07-07 13:43:18 +02:00
.modal main {
2026-04-01 08:46:10 +00:00
height: 100%;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
.height-100 {
2026-04-01 08:46:10 +00:00
height: 100% !important;
2024-07-07 22:11:18 +02:00
}
2024-07-12 02:24:48 +02:00
.height-auto {
2026-04-01 08:46:10 +00:00
height: auto !important;
2024-07-12 02:24:48 +02:00
}
2024-07-07 13:43:18 +02:00
button:not(.tile):not(header *),
footer,
input:not([type="checkbox"]):not([type="radio"]),
select,
2026-08-29 02:10:26 +02:00
select + .icon {
2026-04-01 08:46:10 +00:00
height: var(--control-height);
2024-07-07 13:43:18 +02:00
}
button.square {
width: var(--control-height);
padding: 0px;
justify-content: center;
}
2024-07-11 21:08:41 +02:00
header {
2026-04-01 08:46:10 +00:00
height: var(--header-height);
2024-07-07 13:43:18 +02:00
}
2024-07-11 21:08:41 +02:00
header button {
2026-04-01 08:46:10 +00:00
height: calc(var(--header-height) - var(--gap-between-tiles) * 2);
2024-07-11 21:08:41 +02:00
}
2024-07-12 01:42:39 +02:00
.max-height-100 {
2026-04-01 08:46:10 +00:00
max-height: 100% !important;
2024-07-12 01:42:39 +02:00
}
2024-07-20 20:48:13 +02:00
button:not(.tile):not(header *),
footer,
input:not([type="checkbox"]):not([type="radio"]),
select,
2026-08-29 02:10:26 +02:00
.modal > div > :is(button, div.flex-row) {
2026-04-01 08:46:10 +00:00
min-height: var(--control-height);
2024-07-15 21:58:32 +02:00
}
2024-07-08 12:50:54 +02:00
.ellipsis {
2026-04-01 08:46:10 +00:00
max-width: 100%;
2024-07-08 12:50:54 +02:00
}
2024-07-07 13:43:18 +02:00
article {
2026-04-01 08:46:10 +00:00
min-width: 100%;
2024-07-07 13:43:18 +02:00
}
.width-50 {
2026-04-01 08:46:10 +00:00
width: 50% !important;
2024-07-07 13:43:18 +02:00
}
article,
input:not([type="checkbox"]):not([type="radio"]),
footer,
header,
main,
select,
textarea,
2026-08-29 02:10:26 +02:00
.modal > div,
2024-07-07 22:11:18 +02:00
.tile,
2026-08-29 02:10:26 +02:00
.tile > div {
2026-04-01 08:46:10 +00:00
width: 100%;
2024-07-07 22:11:18 +02:00
}
2024-07-07 13:43:18 +02:00
.width-content,
.width-input,
.width-100 {
2026-04-01 08:46:10 +00:00
width: 100% !important;
2024-07-07 13:43:18 +02:00
}
header button {
2026-04-01 08:46:10 +00:00
width: var(--header-height);
2024-07-07 13:43:18 +02:00
}
input[type="checkbox"],
input[type="radio"] {
2026-04-01 08:46:10 +00:00
width: 16px;
height: 16px;
2024-07-07 13:43:18 +02:00
}
2024-07-11 15:08:25 +02:00
label.tile textarea {
2026-04-01 08:46:10 +00:00
resize: vertical;
2024-07-11 15:08:25 +02:00
}
2024-07-07 13:43:18 +02:00
/*
text
*/
* {
2026-04-01 08:46:10 +00:00
font-family: IBM Plex Sans;
font-size: 1rem;
2024-07-07 13:43:18 +02:00
}
h1 {
2026-04-01 08:46:10 +00:00
font-size: 2rem;
2024-07-07 13:43:18 +02:00
}
h2 {
2026-04-01 08:46:10 +00:00
font-size: 1.6rem;
2024-07-07 13:43:18 +02:00
}
h3 {
2026-04-01 08:46:10 +00:00
font-size: 1.4rem;
2024-07-07 13:43:18 +02:00
}
code {
2026-04-01 08:46:10 +00:00
font-family: IBM Plex Mono;
2024-07-07 13:43:18 +02:00
}
.secondary,
2024-07-07 16:56:12 +02:00
.secondary *,
2024-07-07 13:43:18 +02:00
.helper-text,
2024-07-20 01:14:21 +02:00
.error,
.warning,
.success,
2026-08-29 02:10:26 +02:00
label.tile > div > span:not(.icon) {
2026-04-01 08:46:10 +00:00
font-size: 0.9rem;
2024-07-07 13:43:18 +02:00
}
/* text-decoration */
a {
2026-04-01 08:46:10 +00:00
text-decoration: none;
2024-07-07 13:43:18 +02:00
}
/* z-index */
footer,
header,
menu {
2026-04-01 08:46:10 +00:00
z-index: 1;
2024-07-07 13:43:18 +02:00
}
.modal {
2026-04-01 08:46:10 +00:00
z-index: 2;
2024-07-07 13:43:18 +02:00
}
2026-08-29 02:10:26 +02:00
.modal > div {
2026-04-01 08:46:10 +00:00
z-index: 2;
2024-07-07 13:43:18 +02:00
}
/*
PSEUDO
*/
input[type="checkbox"]:checked::before {
2026-04-01 08:46:10 +00:00
content: "check";
font-size: 70% !important;
color: var(--text-on-color);
2024-07-07 13:43:18 +02:00
}
input[type="radio"]:checked::before {
2026-04-01 08:46:10 +00:00
content: "";
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
background: var(--text-on-color);
border-radius: 100%;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
--inset: 4px;
position: absolute;
top: var(--inset);
left: var(--inset);
right: var(--inset);
bottom: var(--inset);
2024-07-07 13:43:18 +02:00
}
.modal::before {
2026-04-01 08:46:10 +00:00
content: "";
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
background: var(--background);
opacity: 0.6;
2024-07-07 13:43:18 +02:00
}
/*
LAYOUT
*/
/* basic */
2024-07-07 16:56:12 +02:00
body,
html {
2026-04-01 08:46:10 +00:00
display: flex;
flex-direction: column-reverse;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
margin: 0px;
width: 100%;
height: 100%;
2024-07-07 13:43:18 +02:00
}
2024-07-07 16:56:12 +02:00
body,
.modal {
2026-04-01 08:46:10 +00:00
padding-left: var(--safe-area-left);
padding-right: var(--safe-area-right);
padding-top: var(--safe-area-top);
2024-07-07 13:43:18 +02:00
}
2024-07-07 16:56:12 +02:00
.modal {
2026-04-01 08:46:10 +00:00
padding-bottom: var(--safe-area-bottom);
2024-07-07 16:56:12 +02:00
}
2024-07-07 13:43:18 +02:00
menu {
2026-04-01 08:46:10 +00:00
width: 100%;
height: var(--menu-height-mobile);
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
position: absolute;
bottom: 0px;
left: 0px;
right: 0px;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
display: flex;
flex-direction: row;
justify-content: space-around;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
padding-top: 0px;
padding-bottom: var(--safe-area-bottom);
2024-07-07 13:43:18 +02:00
}
.tab-link {
2026-04-01 08:46:10 +00:00
width: 100%;
height: var(--header-height);
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
padding: var(--horizontal-tab-link-padding) var(--control-padding);
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
display: flex;
flex-direction: column;
align-items: center;
gap: 0px;
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
font-size: 0.5rem;
2024-07-07 13:43:18 +02:00
}
2026-08-29 02:10:26 +02:00
article > div {
padding-bottom: calc(
var(--menu-height-mobile) + var(--header-height) +
var(--content-padding)
);
2024-07-07 13:43:18 +02:00
}
/* overflow */
menu {
2026-04-01 08:46:10 +00:00
overflow: auto;
2024-07-07 13:43:18 +02:00
}
article,
body,
2024-07-08 12:50:54 +02:00
main,
2024-07-21 17:55:53 +02:00
.clip,
2024-07-08 12:50:54 +02:00
.ellipsis {
2026-04-01 08:46:10 +00:00
overflow: hidden;
2024-07-07 13:43:18 +02:00
}
2024-07-12 00:43:58 +02:00
.scroll-no {
2026-04-01 08:46:10 +00:00
overflow: hidden !important;
2024-07-12 00:43:58 +02:00
}
2026-08-29 02:10:26 +02:00
article > div,
2024-07-09 23:16:51 +02:00
.modal main {
2026-04-01 08:46:10 +00:00
overflow: auto;
2024-07-07 13:43:18 +02:00
}
main {
2026-04-01 08:46:10 +00:00
overflow-x: auto;
2024-07-07 13:43:18 +02:00
}
2024-07-11 17:07:06 +02:00
.scroll-h {
2026-04-01 08:46:10 +00:00
overflow-x: auto !important;
2024-07-11 17:07:06 +02:00
}
.scroll-v {
2026-04-01 08:46:10 +00:00
overflow-y: auto !important;
2024-07-11 17:07:06 +02:00
}
2024-07-08 12:50:54 +02:00
.ellipsis {
2026-04-01 08:46:10 +00:00
text-overflow: ellipsis;
2024-07-08 12:50:54 +02:00
}
2024-07-08 13:35:26 +02:00
.tile {
2026-04-01 08:46:10 +00:00
word-break: normal;
2024-07-08 13:35:26 +02:00
}
2024-07-08 12:50:54 +02:00
.break-all {
2026-04-01 08:46:10 +00:00
word-break: break-all !important;
2024-07-08 18:18:10 +02:00
}
.break-word {
2026-04-01 08:46:10 +00:00
word-break: break-word !important;
2024-07-08 00:39:22 +02:00
}
2024-07-08 12:50:54 +02:00
.ellipsis {
2026-04-01 08:46:10 +00:00
white-space: nowrap;
2024-07-08 12:50:54 +02:00
}
2024-07-21 17:55:53 +02:00
code {
2026-04-01 08:46:10 +00:00
white-space: pre-wrap;
word-break: break-all;
2024-07-21 17:55:53 +02:00
}
2024-07-07 13:43:18 +02:00
/* scrolling */
main {
2026-04-01 08:46:10 +00:00
scrollbar-width: none;
2024-07-07 13:43:18 +02:00
}
main::-webkit-scrollbar {
2026-04-01 08:46:10 +00:00
display: none;
2024-07-07 13:43:18 +02:00
}
2024-07-10 18:04:29 +02:00
main,
2026-08-29 02:10:26 +02:00
article > div {
2026-04-01 08:46:10 +00:00
scroll-behavior: smooth;
2024-07-07 13:43:18 +02:00
}
article {
2026-04-01 08:46:10 +00:00
scroll-snap-align: start;
2024-07-07 13:43:18 +02:00
}
main {
2026-04-01 08:46:10 +00:00
scroll-snap-type: x mandatory;
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
/* tablet & up */
2024-07-07 13:43:18 +02:00
@media (min-width: 640px) {
2026-04-01 08:46:10 +00:00
/* basic */
.mobile-only {
2026-04-10 19:00:59 +00:00
display: none !important;
2026-04-01 08:46:10 +00:00
}
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
/* border, outline, etc */
2026-08-29 02:10:26 +02:00
.modal > div {
2026-04-01 08:46:10 +00:00
border: 1px solid var(--surface-border);
}
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
menu,
2026-08-29 02:10:26 +02:00
main.split > article:first-of-type {
2026-04-01 08:46:10 +00:00
border-right: 1px solid var(--border);
}
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
/* size */
2026-08-29 02:10:26 +02:00
.modal > div {
2026-04-01 08:46:10 +00:00
height: auto;
max-height: 100%;
}
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
p,
2026-08-29 02:10:26 +02:00
.modal > div {
2026-04-01 08:46:10 +00:00
max-width: var(--max-content-width);
}
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
.width-content {
max-width: var(--max-content-width) !important;
}
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
input,
label,
select,
textarea {
max-width: var(--max-input-width);
}
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
.width-input {
max-width: var(--max-input-width) !important;
}
2024-07-07 13:43:18 +02:00
2026-04-01 08:46:10 +00:00
/* layout */
body {
flex-direction: row;
}
main.split {
display: grid;
grid-template-columns: var(--split-pane-width-desktop) 1fr;
}
2026-08-29 02:10:26 +02:00
article > div {
2026-04-01 08:46:10 +00:00
padding-bottom: calc(var(--content-padding) + var(--control-height));
}
menu {
position: static;
width: var(--menu-width-desktop);
height: 100%;
flex-direction: column;
justify-content: start;
padding-top: 20px;
}
.tab-link {
width: 100%;
height: var(--control-height);
flex-direction: row;
gap: var(--gap-in-tab-links);
font-size: 1rem;
}
2024-07-07 13:43:18 +02:00
}
2024-07-07 22:11:18 +02:00
/* desktop */
@media (min-width: 1024px) {
body {
2026-04-01 08:46:10 +00:00
--split-pane-width-desktop: 400px;
}
2024-07-07 22:11:18 +02:00
}
/*
STATE
*/
[highlight]:not(:hover):not(:active) {
color: var(--highlight-color) !important;
background: var(--highlight-background) !important;
}
[highlight].animate-highlight {
animation: 3s infinite highlight;
}
@keyframes highlight {
2026-08-29 02:10:26 +02:00
30%,
60% {
opacity: 1;
}
2026-08-29 02:10:26 +02:00
0%,
100% {
opacity: 0.1;
}
}
[scrolled] {
animation: 1s ease scroll-highlight;
}
@keyframes scroll-highlight {
2026-08-29 02:10:26 +02:00
0%,
40%,
50%,
90% {
opacity: 1;
}
2026-08-29 02:10:26 +02:00
10%,
30%,
60%,
80% {
opacity: 0.5;
}
}
2024-07-07 13:43:18 +02:00
/*
ICONS
*/
input[type="checkbox"],
.tile.arrow-right::after,
.icon {
2026-04-01 08:46:10 +00:00
font-family: "Material Symbols Sharp";
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-flex;
align-items: center;
justify-content: center;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
2024-07-07 13:43:18 +02:00
}
@font-face {
2026-04-01 08:46:10 +00:00
font-family: "Material Symbols Sharp";
font-style: normal;
font-weight: 300;
src: url("Icons/material-icons.woff") format("woff");
2026-08-29 00:44:38 +02:00
}