How we’re approaching theming with modern CSS
:root {
/* Fluid type scale */
--size-step--2: clamp(0.6944rem, 0.6376rem + 0.284vi, 0.84rem);
--size-step--1: clamp(0.8333rem, 0.7488rem + 0.4228vi, 1.05rem);
--size-step-0: clamp(1rem, 0.878rem + 0.6098vi, 1.3125rem);
--size-step-1: clamp(1.2rem, 1.028rem + 0.8598vi, 1.6406rem);
--size-step-2: clamp(1.44rem, 1.2016rem + 1.1918vi, 2.0508rem);
--size-step-3: clamp(1.728rem, 1.402rem + 1.6302vi, 2.5635rem);
--size-step-4: clamp(2.0736rem, 1.6323rem + 2.2063vi, 3.2043rem);
--size-step-5: clamp(2.4883rem, 1.8963rem + 2.9602vi, 4.0054rem);
--size-step-6: clamp(2.986rem, 2.1974rem + 3.943vi, 5.0068rem);
--size-step-7: clamp(3.5832rem, 2.5392rem + 5.2201vi, 6.2585rem);
/* Fluid space scale */
--space-3xs: clamp(0.25rem, 0.2256rem + 0.122vi, 0.3125rem);
--space-2xs: clamp(0.5rem, 0.4268rem + 0.3659vi, 0.6875rem);
--space-xs: clamp(0.75rem, 0.6524rem + 0.4878vi, 1rem);
--space-s: clamp(1rem, 0.878rem + 0.6098vi, 1.3125rem);
--space-m: clamp(1.5rem, 1.3049rem + 0.9756vi, 2rem);
--space-l: clamp(2rem, 1.7561rem + 1.2195vi, 2.625rem);
--space-xl: clamp(3rem, 2.6341rem + 1.8293vi, 3.9375rem);
--space-2xl: clamp(4rem, 3.5122rem + 2.439vi, 5.25rem);
--space-3xl: clamp(6rem, 5.2683rem + 3.6585vi, 7.875rem);
/* Colours */
--color-light: #ffffff;
--color-light-shade: #f3f5f7;
--color-dark: #000000;
--color-mid: #ebebeb;
--color-mid-shade: #dedede;
--color-midnight: #4a4e69;
--color-midnight-shade: #22223b;
--color-eggshell: #f2e9e4;
--color-blue: #3b71fe;
--color-blue-glare: #eef6fd;
--color-slate: #4f5563;
}
--leading: 1.5;
--leading-short: 1.3;
--leading-fine: 1.1;
--leading-flat: 1;
--leading-loose: 1.7;
--kerning: normal;
--kerning-tight: -0.04ch;
--kerning-loose: 0.1ch;
--text-size-base: var(--size-step-0);
--text-size-lede: var(--size-step-1);
--text-size-meta: var(--size-step--1);
--text-size-heading-1: var(--size-step-5);
--text-size-heading-2: var(--size-step-4);
--text-size-heading-3: var(--size-step-3);
--text-size-heading-4: var(--size-step-2);
--text-size-prose: var(--text-size-base);
--space-gutter: var(--space-m);
--space-gutter-s: var(--space-s);
--space-gutter-l: var(--space-l);
--space-regions: var(--space-xl);
--size-wrapper-max-width: 1135px;
--color-global-bg: var(--color-light);
--color-global-text: var(--color-dark);
--color-surface-bg: var(--color-mid);
--color-surface-bg-interact: var(--color-mid-shade);
--color-surface-text: var(--color-dark);
--color-surface-text-interact: var(--color-dark);
--font-base: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui,
helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
--font-display: var(--font-base);
--font-lede: var(--font-base);
--font-weight-regular: 400;
--font-weight-medium: 500;
--font-weight-bold: 700;
--font-weight-black: 900;
--focus-ring: 2px solid currentColor;
--focus-ring-offset: 2px;
/* Custom property configuration */
:root {
--color-global-bg: var(--color-light);
--color-global-text: var(--color-midnight-shade);
--color-surface-bg: var(--color-blue);
--color-surface-bg-interact: var(--color-dark);
--color-surface-text: var(--color-light);
--color-surface-text-interact: var(--color-light);
--button-radius: 1.5em;
--font-lede: Georgia, serif;
--font-display: 'Khula', sans-serif;
--text-size-heading-1: var(--size-step-6);
}
/* Specific theme styles and settings */
.intro {
--space-regions: var(--space-2xl) var(--space-3xl);
--sidebar-target-width: 11ch;
background: linear-gradient(
85deg,
var(--color-blue-glare) 35%,
var(--color-light-shade) 100%
);
}
.intro .sidebar {
/* Going straight for gap so it doesn't affect the wrapper */
gap: var(--space-s) var(--space-l);
}
.lede {
font-style: italic;
}
.quote {
position: relative;
border-radius: 1em;
overflow: hidden;
}
.quote img {
width: 100%;
aspect-ratio: 1/1;
object-fit: cover;
}
.quote q {
quotes: none;
background: var(--color-midnight-shade);
color: var(--color-light);
padding: 0.5em 1em;
background: rgb(from var(--color-midnight-shade) r g b / 70%);
backdrop-filter: blur(2px);
position: absolute;
bottom: 0;
left: 0;
width: 100%;
}
.grid {
--space-flow: var(--space-l);
}