/* fonts */ @font-face { font-family: "Iosevka Waffle Web"; font-display: swap; font-weight: 400; font-stretch: normal; font-style: normal; src: url("assets/woff2/iosevka-waffle-regular.woff2") format("woff2"); } @font-face { font-family: 'Iosevka Waffle Web'; font-display: swap; font-weight: 700; font-stretch: normal; font-style: normal; src: url('assets/woff2/iosevka-waffle-bold.woff2') format('woff2'); } /* top-level */ :root { --background-color-0: hsl(180, 11%, 5%); --background-color-1: hsl(180, 11%, 7%); --background-color-2: hsl(180, 11%, 10%); --background-color-3: hsl(180, 11%, 12%); --foreground-color-1: rgb(253, 254, 255); --foreground-color-2: rgb(218, 219, 220); --foreground-color-3: rgb(153, 154, 155); --foreground-color-4: rgb(123, 124, 125); --colored-element-text-color: var(--foreground-color-1); --purple-1: hsl(280, 78%, 50%); --blue-1: hsl(200, 78%, 50%); --green-1: hsl(140, 78%, 50%); --yellow-1: hsl(50, 78%, 50%); --red-1: hsl(2, 78%, 65%); --purple-2: hsl(280, 78%, 45%); --blue-2: hsl(200, 78%, 45%); --green-2: hsl(140, 78%, 40%); --yellow-2: hsl(50, 78%, 60%); --red-2: hsl(2, 78%, 60%); --space-unit: 1em; --space-xxs: calc(0.25 * var(--space-unit)); --space-xs: calc(0.5 * var(--space-unit)); --space-xsplus: calc(0.65 * var(--space-unit)); --space-sm: calc(0.75 * var(--space-unit)); --space-norm: var(--space-unit); --space-normplus: calc(var(--space-unit) + var(--space-sm)); --space-md: calc(1.25 * var(--space-unit)); --space-lg: calc(2 * var(--space-unit)); --space-xl: calc(3.25 * var(--space-unit)); --space-xxl: calc(5.25 * var(--space-unit)); --radius-unit: 0.5em; --radius-xxs: calc(0.25 * var(--radius-unit)); --radius-xs: calc(0.5 * var(--radius-unit)); --radius-sm: calc(0.75 * var(--radius-unit)); --radius-norm: var(--radius-unit); --radius-md: calc(1.25 * var(--radius-unit)); --radius-lg: calc(2 * var(--radius-unit)); --radius-xl: calc(3.25 * var(--radius-unit)); --radius-xxl: calc(5.25 * var(--sradius-unit)); --100vw: calc(100.0 * 1vw); --100vh: calc(100.0 * 1vh); } html, body { padding: 0; margin: 0; color-scheme: dark; accent-color: var(--purple-2); width: 100%; height: 100%; min-width: 100%; min-height: 100%; max-width: 100%; max-height: 100%; } body { overflow: hidden; padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); color: var(--foreground-color-1); background-color: var(--background-color-1); font-size: 100%; font-family: "Iosevka Waffle Web", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-weight: 400; line-height: 1.75; display: flex; flex-direction: column; } @supports(width: 1dvw) { html, body { min-width: 100dvw; max-width: 100dvw; width: 100dvw; } } @supports(height: 1dvh) { html, body { min-height: 100dvh; max-height: 100dvh; height: 100dvh; } } /* fullscreen message */ .fullscreen-message { padding: 0; margin: 0; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; overflow: hidden; background-color: var(--background-color-1); } /* top bar */ .top-bar { display: flex; align-items: center; justify-content: left; width: 100%; padding-left: var(--space-sm); padding-right: var(--space-sm); padding-top: var(--space-xs); padding-bottom: var(--space-xs); flex-grow: 0; flex-shrink: 0; } .top-bar.darker { background-color: var(--background-color-0); } .top-bar-heading { margin-left: var(--space-xxs); } /* modal */ .modal-backdrop { overflow: hidden; display: flex; justify-content: center; align-items: center; position: fixed; width: 100%; height: 100%; top: 0; left: 0; right: 0; bottom: 0; z-index: 0; background-color: rgba(0, 0, 0, 0.4); } .modal-backdrop-opaque { background-color: var(--background-color-1); } .modal { display: flex; flex-direction: column; background-color: var(--background-color-2); border-radius: var(--radius-lg); padding: var(--space-md); } .modal-header { margin-bottom: var(--space-md); text-align: center; } .modal-footer { margin-top: auto; padding-top: var(--space-lg); } .modal-primary-action { float: right; } .modal-secondary-action { float: left; } @media screen and (max-width: 768px) { .modal { width: 100%; height: 100%; border-radius: 0px; } .modal-backdrop { display: block; } } /* input */ .input-label { text-transform: uppercase; color: var(--foreground-color-2); } .input { background-color : var(--background-color-3); border: none; color: currentColor; border-radius: var(--radius-md); padding: var(--space-sm); font-size: inherit; line-height: inherit; } .input::placeholder { color: var(--foreground-color-3); } /* button */ .button { color: var(--foreground-color-1); background-color: var(--background-color-2); text-align: center; border: none; padding: var(--space-sm); border-radius: var(--radius-md); font: inherit; max-height: 3em; } .button:hover { background-color: var(--background-color-3); } .button-accent { color: var(--colored-element-text-color); background-color: var(--purple-2); } .button-accent:hover { background-color: var(--purple-1); } .button-accent:disabled { background-color: var(--purple-2); } .button-red { color: var(--colored-element-text-color); background-color: var(--red-2); } .button-red:hover { background-color: var(--red-1); } .button-red:disabled { background-color: var(--red-2); } .icon-button { display: flex; justify-content: center; align-items: center; background-color: transparent; color: var(--foreground-color-2); text-align: center; border: none; border-radius: var(--radius-md); font: inherit; } .icon-button-auto { margin-left: auto; } .icon-button:hover { color: var(--foreground-color-1); } /* text */ .h1 { font-size: 2.488rem; } .h2 { font-size: 2.074rem; } .h3 { font-size: 1.728rem; } .h4 { font-size: 1.44rem; } .h5 { font-size: 1.2rem; } .text_small { font-size: 0.833rem; } /* sidebar */ .sidebar-container { display: flex; flex-direction: column; background-color: var(--background-color-0); height: 100%; min-width: 255px; max-width: 255px; } @media screen and (max-width: 768px) { .sidebar-container { flex-basis: 100%; min-width: unset; max-width: unset; } } .sidebar { width: 100%; height: 100%; padding: var(--space-xs); overflow-x: hidden; overflow-y: auto; } .sidebar-button { flex-shrink: 0; display: flex; align-items: center; justify-content: left; border: none; background-color: var(--background-color-0); padding: var(--space-xs); margin-bottom: var(--space-xxs); color: currentColor; font: inherit; border-radius: var(--radius-md); width: 100%; max-height: 3.4em; } .sidebar-button span { margin-left: var(--space-xxs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .sidebar-button div { display: inline; flex-shrink: 0; /* TODO: HACK! */ width: 24px; height: 24px; } .sidebar-button .icon-button { visibility: hidden; } .sidebar-button.selected .icon-button, .sidebar-button:hover .icon-button { visibility: visible; } .sidebar-button:hover { background-color: var(--background-color-2); } .sidebar-button.selected { color: var(--colored-element-text-color); background-color: var(--purple-2); } .sidebar-button.selected .icon-button { color: var(--colored-element-text-color); } /*! the tweaks below are heavily based on modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */ *, ::before, ::after { box-sizing: border-box; } /* firefox placeholder */ ::-moz-placeholder { opacity: 1; } html { line-height: 1.15; -webkit-text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS */ } b, strong { font-weight: bolder; } code, kbd, samp, pre { font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 1em; } small { font-size: 80%; } button, input, optgroup, select, textarea { font-family: inherit; font-size: 100%; line-height: 1.15; margin: 0; } /* Remove the inheritance of text transform in Edge and Firefox. */ button, select { text-transform: none; } /* Correct the inability to style clickable types in iOS and Safari. */ button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } /* Remove the additional ":invalid" styles in Firefox. */ /* See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737 */ :-moz-ui-invalid { box-shadow: none; }