208 lines
7.0 KiB
CSS
208 lines
7.0 KiB
CSS
/*
|
|
Define common sizes and spacings
|
|
*/
|
|
:root {
|
|
--theme-navbar-height: 6rem;
|
|
--theme-mobile-toc-height: 4rem;
|
|
--theme-left-sidebar-width: 18rem;
|
|
--theme-right-sidebar-width: 18rem;
|
|
/*
|
|
Minimum visual horizontal spacing from the edges of the viewport,
|
|
and between vertically arranged elements
|
|
*/
|
|
--min-spacing-inline: 1rem;
|
|
/* Vertical spacing around the article content and the right sidebar */
|
|
--doc-padding-block: 0.5rem;
|
|
--max-width: 100%;
|
|
--cur-viewport-height: 100vh;
|
|
/* Font sizes */
|
|
--theme-text-lg: 1.25rem;
|
|
--theme-text-base: 1rem;
|
|
--theme-text-sm: 0.9375rem;
|
|
--theme-text-xs: 0.875rem;
|
|
/* Animation helpers */
|
|
--theme-ease-bounce: cubic-bezier(0.4, 2.5, 0.6, 1);
|
|
}
|
|
|
|
@media (min-width: 50em) {
|
|
:root {
|
|
--min-spacing-inline: 1.5rem;
|
|
--doc-padding-block: 1rem;
|
|
--max-width: 46em;
|
|
--theme-text-sm: 0.875rem;
|
|
--theme-text-xs: 0.8125rem;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 72em) {
|
|
:root {
|
|
--doc-padding-block: 2rem;
|
|
}
|
|
}
|
|
|
|
/* Use dynamic viewport height if the unit is supported by the browser */
|
|
@supports (height: 100dvh) {
|
|
:root {
|
|
--cur-viewport-height: 100dvh;
|
|
}
|
|
}
|
|
|
|
/*
|
|
Define common fonts and colors
|
|
*/
|
|
:root,
|
|
::backdrop {
|
|
--font-fallback: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif,
|
|
Apple Color Emoji, Segoe UI Emoji;
|
|
--font-body: system-ui, var(--font-fallback);
|
|
--font-mono: 'IBM Plex Mono', Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console',
|
|
'Lucida Sans Typewriter', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Liberation Mono',
|
|
'Nimbus Mono L', Monaco, 'Courier New', Courier, monospace;
|
|
|
|
/*
|
|
Variables with --color-base prefix define
|
|
the hue, and saturation values to be used for
|
|
hsla colors.
|
|
|
|
Example:
|
|
--color-base-{color}: {hue}, {saturation};
|
|
*/
|
|
|
|
--color-base-white: 0, 0%;
|
|
--color-base-black: 240, 100%;
|
|
--color-base-gray: 250, 14%;
|
|
--color-base-blue: 212, 100%;
|
|
--color-base-blue-dark: 212, 72%;
|
|
--color-base-teal: 180, 80%;
|
|
--color-base-green: 158, 79%;
|
|
--color-base-orange: 22, 100%;
|
|
--color-base-purple: 269, 79%;
|
|
--color-base-red: 351, 100%;
|
|
--color-base-yellow: 41, 100%;
|
|
|
|
/*
|
|
Color palettes are made using --color-base
|
|
variables, along with a lightness value to
|
|
define different variants.
|
|
*/
|
|
|
|
--color-gray-5: var(--color-base-gray), 5%;
|
|
--color-gray-10: var(--color-base-gray), 10%;
|
|
--color-gray-20: var(--color-base-gray), 20%;
|
|
--color-gray-30: var(--color-base-gray), 30%;
|
|
--color-gray-40: var(--color-base-gray), 40%;
|
|
--color-gray-50: var(--color-base-gray), 50%;
|
|
--color-gray-60: var(--color-base-gray), 60%;
|
|
--color-gray-70: var(--color-base-gray), 70%;
|
|
--color-gray-80: var(--color-base-gray), 80%;
|
|
--color-gray-90: var(--color-base-gray), 90%;
|
|
--color-gray-95: var(--color-base-gray), 95%;
|
|
|
|
--color-blue: var(--color-base-blue), 61%;
|
|
--color-blue-dark: var(--color-base-blue-dark), 39%;
|
|
--color-green: var(--color-base-green), 42%;
|
|
--color-orange: var(--color-base-orange), 50%;
|
|
--color-purple: var(--color-base-purple), 54%;
|
|
--color-red: var(--color-base-red), 54%;
|
|
--color-yellow: var(--color-base-yellow), 59%;
|
|
}
|
|
|
|
:root,
|
|
::backdrop {
|
|
color-scheme: light;
|
|
--theme-accent: hsla(var(--color-orange), 1);
|
|
--theme-accent-secondary: hsl(324, 75%, 38%);
|
|
--theme-dim: hsla(var(--color-gray-70), 1);
|
|
--theme-dim-light: hsla(var(--color-gray-80), 1);
|
|
--theme-dim-lighter: hsla(var(--color-gray-90), 1);
|
|
--theme-accent-opacity: 0.1;
|
|
--theme-divider: hsla(var(--color-purple), 0.1);
|
|
--theme-shade-subtle: hsla(var(--color-purple), 0.3);
|
|
--theme-text: hsla(var(--color-gray-10), 1);
|
|
--theme-text-light: hsla(var(--color-gray-30), 1);
|
|
--theme-text-lighter: hsla(var(--color-gray-40), 1);
|
|
--theme-bg: hsl(273, 37%, 93%);
|
|
--theme-bg-gradient-top: var(--theme-bg);
|
|
--theme-bg-gradient-bottom: #fdfeff;
|
|
--theme-bg-hover: hsla(var(--color-purple), 0.075);
|
|
--theme-bg-offset: hsla(var(--color-purple), 0.1);
|
|
--theme-bg-accent: hsla(var(--color-purple), var(--theme-accent-opacity));
|
|
--theme-backdrop-overlay: hsla(var(--color-gray-50), 0.8);
|
|
--theme-code-inline-bg: hsla(var(--color-purple), 0.1);
|
|
--theme-code-inline-text: var(--theme-text);
|
|
--theme-code-bg: hsla(257, 31%, 22%, 1);
|
|
--theme-code-tabs: hsla(257, 38%, 32%, 1);
|
|
--theme-code-text: hsla(var(--color-gray-95), 1);
|
|
--theme-navbar-bg: var(--theme-bg);
|
|
--theme-selection-color: hsla(var(--color-purple), 1);
|
|
--theme-selection-bg: hsla(var(--color-purple), var(--theme-accent-opacity));
|
|
--theme-code-selection-bg: hsla(var(--color-purple), 0.4);
|
|
--theme-code-mark-bg: hsl(226, 50%, 33%);
|
|
--theme-code-mark-border: hsl(224, 50%, 54%);
|
|
--theme-code-ins-bg: hsl(122, 22%, 23%);
|
|
--theme-code-ins-border: hsl(128, 42%, 38%);
|
|
--theme-code-ins-text: hsl(128, 31%, 65%);
|
|
--theme-code-del-bg: hsl(338, 40%, 26%);
|
|
--theme-code-del-border: hsl(338, 46%, 53%);
|
|
--theme-code-del-text: hsl(338, 36%, 70%);
|
|
|
|
--theme-bg-gradient: linear-gradient(
|
|
180deg,
|
|
var(--theme-bg-gradient-top),
|
|
var(--theme-bg-gradient-top) calc(var(--theme-navbar-height) + var(--theme-mobile-toc-height)),
|
|
var(--theme-bg-gradient-bottom)
|
|
);
|
|
|
|
--theme-glow-highlight: transparent;
|
|
--theme-glow-diffuse: hsla(var(--color-base-purple), 65%, 0.5);
|
|
--theme-glow-blur: 10px;
|
|
}
|
|
|
|
:root.theme-dark,
|
|
.theme-dark ::backdrop {
|
|
color-scheme: dark;
|
|
/* We lighten-up the orange in dark mode, to help with link contrast. */
|
|
--color-orange: var(--color-base-orange), 60%;
|
|
--theme-accent-opacity: 0.4;
|
|
--theme-accent: hsla(var(--color-orange), 1);
|
|
--theme-accent-secondary: hsla(var(--color-orange), 1);
|
|
--theme-text-accent: hsla(var(--color-orange), 1);
|
|
--theme-dim: hsla(var(--color-gray-90), 0.3);
|
|
--theme-dim-light: hsla(var(--color-gray-90), 0.2);
|
|
--theme-dim-lighter: hsla(var(--color-gray-90), 0.1);
|
|
--theme-divider: hsla(var(--color-gray-95), 0.1);
|
|
--theme-shade-subtle: hsla(var(--color-gray-95), 0.4);
|
|
--theme-text: hsla(var(--color-gray-90), 1);
|
|
--theme-text-light: hsla(var(--color-gray-80), 1);
|
|
--theme-text-lighter: hsla(var(--color-gray-70), 1);
|
|
--theme-bg: hsl(256, 27%, 19%);
|
|
--theme-bg-gradient-top: var(--theme-bg);
|
|
--theme-bg-gradient-bottom: hsl(251, 29%, 11%);
|
|
--theme-bg-hover: hsla(var(--color-purple), 0.2);
|
|
--theme-bg-offset: #0008;
|
|
--theme-backdrop-overlay: hsla(var(--color-gray-10), 0.8);
|
|
--theme-code-inline-bg: #ffffff16;
|
|
--theme-code-inline-text: var(--theme-text-light);
|
|
--theme-code-bg: hsla(257, 31%, 11%, 1);
|
|
--theme-code-tabs: hsla(261, 40%, 21%, 1);
|
|
--theme-code-text: hsla(var(--color-base-white), 80%, 1);
|
|
--theme-navbar-bg: var(--theme-bg);
|
|
--theme-selection-color: hsla(var(--color-base-white), 100%, 1);
|
|
--theme-code-mark-bg: hsl(224, 60%, 25%);
|
|
--theme-code-mark-border: hsl(225, 42%, 46%);
|
|
--theme-code-ins-bg: hsl(122, 29%, 17%);
|
|
--theme-code-ins-border: hsl(128, 41%, 32%);
|
|
--theme-code-ins-text: hsl(128, 31%, 55%);
|
|
--theme-code-del-bg: hsl(337, 47%, 19%);
|
|
--theme-code-del-border: hsl(340, 34%, 43%);
|
|
--theme-code-del-text: hsl(340, 24%, 65%);
|
|
|
|
--theme-glow-highlight: hsla(var(--color-base-purple), 50%, 1);
|
|
--theme-glow-diffuse: hsla(var(--color-base-purple), 35%, 0.4);
|
|
}
|
|
|
|
::selection {
|
|
color: var(--theme-selection-color);
|
|
background-color: var(--theme-selection-bg);
|
|
}
|