Typography in Spooky Developer does double duty: it sets the Halloween mood and keeps the interface readable. The solution is a deliberate two-font system — Creepster for everything that needs dramatic personality, and Inter for everything that needs to be read. Both fonts arrive from a single Google FontsDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/spooky-developer/llms.txt
Use this file to discover all available pages before exploring further.
@import at the top of main.css, so there’s no additional build step or font-loading configuration to worry about.
Font Loading
Both typefaces are loaded together via a single Google Fonts URL embedded at the top ofmain.css:
main.css
display=swap parameter ensures text renders immediately in a fallback font while the custom fonts load, avoiding invisible text on slow connections. The five Inter weights — 300, 400, 500, 600, and 700 — cover every weight used across body copy, labels, and UI chrome.
Creepster — The Spooky Font
Creepster is a free Google Fonts display typeface in the horror genre: irregular letterforms with sharp angles and a hand-painted quality that reads as delightfully sinister without sacrificing legibility.| Property | Value |
|---|---|
| Family | Creepster |
| Style | cursive (CSS generic fallback) |
| Letter spacing | 0.05em |
| Tailwind class | font-spooky |
| Weight loaded | Regular (400 only) |
Global h1–h6 Default
main.css applies Creepster globally to all heading elements, so every <h1> through <h6> in the app inherits the spooky font without an explicit class:
main.css
Tailwind Utility Class
Usefont-spooky to apply Creepster to any element — useful for non-heading elements like nav labels, tombstone epitaphs, and form labels that need the display treatment:
Where Creepster Is Used
- Navigation bar — section labels (
About,Projects,Skills, etc.) - Page headings — all
<h1>page titles (Graveyard Tour,Trick or Treat?,The Candy Bowl, etc.) - Timeline years — the pumpkin-colored year labels on the About page timeline
- Tombstone inscriptions — the
RIPwatermark and door labels on the Projects page - Work page companies — employer names styled with
font-spooky text-haunt-pumpkin - Form labels — the Séance (contact) form field labels
Inter — The Body Font
Inter is a highly legible variable-width sans-serif designed specifically for screen interfaces. It sits in comfortable contrast with Creepster: where Creepster performs, Inter informs.| Property | Value |
|---|---|
| Family | Inter |
| Style | sans-serif (CSS generic fallback) |
| Weights loaded | 300 (light), 400 (regular), 500 (medium), 600 (semibold), 700 (bold) |
| Tailwind class | font-body |
| Global body default | Yes — set on body in main.css |
Global Body Default
main.css sets Inter as the default font for the entire <body>, so every element that doesn’t override the font family inherits it automatically:
main.css
Tailwind Utility Class
Usefont-body to explicitly reassert Inter on elements nested inside a Creepster-styled heading, or to be explicit in components:
Where Inter Is Used
- Page body copy — all descriptive paragraphs and subtitles
- Skills page descriptions — candy tooltip labels use the body font for readability
- Work page card details — role descriptions and date ranges
- Case study cards — summary text and “Read the full scroll” links
- Contact form — input placeholders and helper text
Using Both Fonts Together
The most common pattern in Spooky Developer is afont-spooky heading immediately followed by font-body supporting text:
h3, h4, h5, and h6 inherit font-family: Creepster from the global rule in main.css, but they will still obey weight utilities like font-bold from Tailwind — Creepster only ships in one weight, so font-bold has no visible effect on headings. It does affect Inter elements as expected.