Astro Starter Template

Customizing the design

The shared design tokens live in src/styles/var.css. Change them to adjust colors, typography, spacing, borders, shadows, and layout widths across the website.

You can always see the original version of the var.css file on the GitHub repository.

What you can change

  • --color-accent-* defines the accent palette. Semantic tokens such as --color-accent-text, --color-link, and --color-focus-ring apply it to specific interface roles.
  • --color-background and --color-surface control the main theme colors. The --color-text-strong, --color-text, --color-text-subtle, and --color-text-muted tokens define the text hierarchy.
  • --font-family and --font-mono control the typefaces.
  • --space-* controls gaps, margins, and padding.

For example, to change the accent from blue to purple, update each accent value:

--color-accent-100: var(--color-purple-100);
/* Continue through --color-accent-900. */
Keep the interface readable

Keep related values together and check that text, links, and buttons remain easy to read. If you change the accent color, you may also want to update themeColor in src/config.ts.

Neutral colors and surfaces

The neutral palette uses a subset of Flexoki’s original scale, preserving its numbering: 50, 100 through 900 in steps of 100, and 950. These tokens use the --color-neutral- prefix. Chromatic palettes use 100 through 900. The --color-black and --color-white tokens hold Flexoki’s black and paper colors.

Semantic tokens assign palette colors to interface roles. The template uses these mappings:

Token Dark theme Light theme
--color-background Neutral 950 Neutral 50
--color-surface Neutral 900 Neutral 100
--color-text Neutral 200 Neutral 800
--color-text-strong Neutral 50 Neutral 950

These are custom theme mappings; Flexoki itself uses black and paper as its main backgrounds. To change a surface without changing text, update --color-surface rather than a shared neutral shade. Use semantic tokens in components so both themes follow the mappings in var.css.

Light sections

The website is dark by default. Add data-theme="light" to any section that should use the light colors:

<section data-theme="light">
    <!-- Your content -->
</section>

Edit the [data-theme="light"] values in var.css to customize that theme.